mojito-testnet-sdk
Version:
🛠An SDK for building applications on top of mojitoswap in testnet.
779 lines • 236 kB
JSON
{
"abi": [
{
"inputs": [],
"payable": false,
"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"
},
{
"constant": true,
"inputs": [],
"name": "DOMAIN_SEPARATOR",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "MINIMUM_LIQUIDITY",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "PERMIT_TYPEHASH",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "burn",
"outputs": [
{
"internalType": "uint256",
"name": "amount0",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount1",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "factory",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "feeToDenominator",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getReserves",
"outputs": [
{
"internalType": "uint112",
"name": "_reserve0",
"type": "uint112"
},
{
"internalType": "uint112",
"name": "_reserve1",
"type": "uint112"
},
{
"internalType": "uint32",
"name": "_blockTimestampLast",
"type": "uint32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_token0",
"type": "address"
},
{
"internalType": "address",
"name": "_token1",
"type": "address"
}
],
"name": "initialize",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "kLast",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "mint",
"outputs": [
{
"internalType": "uint256",
"name": "liquidity",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "nonces",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"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": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "price0CumulativeLast",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "price1CumulativeLast",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "_feeToDenominator",
"type": "uint256"
}
],
"name": "setFeeToDenominator",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "_swapFeeNumerator",
"type": "uint256"
}
],
"name": "setSwapFeeNumerator",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "skim",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"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": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "swapFeeNumerator",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "sync",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "token0",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "token1",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"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"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
],
"evm": {
"bytecode": {
"linkReferences": {},
"object": "6080604052601e600c556005600d556001600e5534801561001f57600080fd5b506040514690806052612fc08239604080519182900360520182208282018252600a8352694d6f6a69746f204c507360b01b6020938401528151808301835260018152603160f81b908401528151808401919091527f325e0fe81f011ab731e3040ed18312448e20937e66cb9e82b4f83ef0a2ab0c0e818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550600580546001600160a01b03191633179055612eb18061010f6000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80635a3d54931161010f578063ba9a7a56116100a2578063d505accf11610071578063d505accf14610650578063dd62ed3e146106ae578063fef46224146106e9578063fff6cae9146106f1576101e5565b8063ba9a7a5614610605578063bc25cf771461060d578063c45a015514610640578063d21220a714610648576101e5565b80637ecebe00116100de5780637ecebe001461054557806389afcb441461057857806395d89b41146105c4578063a9059cbb146105cc576101e5565b80635a3d5493146104cf5780636a627842146104d757806370a082311461050a5780637464fc3d1461053d576101e5565b80632594ac0111610187578063390f66c511610156578063390f66c51461045257806345a631441461046f578063485cc9551461048c5780635909c0d5146104c7576101e5565b80632594ac011461041c57806330adf81f14610424578063313ce5671461042c5780633644e5151461044a576101e5565b8063095ea7b3116101c3578063095ea7b3146103415780630dfe16811461038e57806318160ddd146103bf57806323b872dd146103d9576101e5565b8063022c0d9f146101ea57806306fdde03146102855780630902f1ac14610302575b600080fd5b6102836004803603608081101561020057600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561024457600080fd5b82018360208201111561025657600080fd5b8035906020019184600183028401116401000000008311171561027857600080fd5b5090925090506106f9565b005b61028d610dec565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102c75781810151838201526020016102af565b50505050905090810190601f1680156102f45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61030a610e25565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61037a6004803603604081101561035757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610e7a565b604080519115158252519081900360200190f35b610396610e91565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6103c7610ead565b60408051918252519081900360200190f35b61037a600480360360608110156103ef57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610eb3565b6103c7610f92565b6103c7610f98565b610434610fbc565b6040805160ff9092168252519081900360200190f35b6103c7610fc1565b6102836004803603602081101561046857600080fd5b5035610fc7565b6102836004803603602081101561048557600080fd5b50356110c2565b610283600480360360408110156104a257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166111be565b6103c7611297565b6103c761129d565b6103c7600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166112a3565b6103c76004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661165d565b6103c761166f565b6103c76004803603602081101561055b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611675565b6105ab6004803603602081101561058e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611687565b6040805192835260208301919091528051918290030190f35b61028d611b24565b61037a600480360360408110156105e257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611b5d565b6103c7611b6a565b6102836004803603602081101561062357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611b70565b610396611d66565b610396611d82565b610283600480360360e081101561066657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611d9e565b6103c7600480360360408110156106c457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661206a565b6103c7612087565b61028361208d565b600e5460011461076a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4d6f6a69746f3a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6000600e558415158061077d5750600084115b6107d2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612e5b6022913960400191505060405180910390fd5b6000806107dd610e25565b5091509150816dffffffffffffffffffffffffffff16871080156108105750806dffffffffffffffffffffffffffff1686105b61087b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d6f6a69746f3a20494e53554646494349454e545f4c49515549444954590000604482015290519081900360640190fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff9182169190811690891682148015906108e057508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b61094b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4d6f6a69746f3a20494e56414c49445f544f0000000000000000000000000000604482015290519081900360640190fd5b8a1561095c5761095c828a8d612273565b891561096d5761096d818a8c612273565b8615610a4f578873ffffffffffffffffffffffffffffffffffffffff16637512dae5338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015610a3657600080fd5b505af1158015610a4a573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610abb57600080fd5b505afa158015610acf573d6000803e3d6000fd5b505050506040513d6020811015610ae557600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610b5757600080fd5b505afa158015610b6b573d6000803e3d6000fd5b505050506040513d6020811015610b8157600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610bab576000610bc1565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610be5576000610bfb565b89856dffffffffffffffffffffffffffff160383035b90506000821180610c0c5750600081115b610c61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612e3a6021913960400191505060405180910390fd5b6000610c99610c7b600c548561248090919063ffffffff16565b610c8d8761271063ffffffff61248016565b9063ffffffff61250616565b90506000610cb5610c7b600c548561248090919063ffffffff16565b9050610cee6305f5e100610ce26dffffffffffffffffffffffffffff8b8116908b1663ffffffff61248016565b9063ffffffff61248016565b610cfe838363ffffffff61248016565b1015610d6b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d6f6a69746f3a204b0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610d7984848888612578565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600e55505050505050505050565b6040518060400160405280600a81526020017f4d6f6a69746f204c50730000000000000000000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610e87338484612834565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610f7d5773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610f4b908363ffffffff61250616565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610f888484846128a3565b5060019392505050565b600d5481565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff16331461104d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4d6f6a69746f3a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b60028110156110bd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d6f6a69746f3a20494e53554646494349454e54000000000000000000000000604482015290519081900360640190fd5b600d55565b60055473ffffffffffffffffffffffffffffffffffffffff16331461114857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4d6f6a69746f3a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b6127108111156111b957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4d6f6a69746f3a204f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b600c55565b60055473ffffffffffffffffffffffffffffffffffffffff16331461124457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4d6f6a69746f3a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600e5460011461131657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4d6f6a69746f3a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6000600e81905580611326610e25565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156113a057600080fd5b505afa1580156113b4573d6000803e3d6000fd5b505050506040513d60208110156113ca57600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561144357600080fd5b505afa158015611457573d6000803e3d6000fd5b505050506040513d602081101561146d57600080fd5b505190506000611493836dffffffffffffffffffffffffffff871663ffffffff61250616565b905060006114b7836dffffffffffffffffffffffffffff871663ffffffff61250616565b905060006114c58787612984565b60005490915080611502576114ee6103e8610c8d6114e9878763ffffffff61248016565b612b39565b98506114fd60006103e8612b8b565b61155f565b61155c6dffffffffffffffffffffffffffff8916611526868463ffffffff61248016565b8161152d57fe5b046dffffffffffffffffffffffffffff891661154f868563ffffffff61248016565b8161155657fe5b04612c3b565b98505b600089116115b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612df06025913960400191505060405180910390fd5b6115c28a8a612b8b565b6115ce86868a8a612578565b81156116105760085461160c906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff61248016565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600e5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600e546001146116fb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4d6f6a69746f3a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6000600e8190558061170b610e25565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561178d57600080fd5b505afa1580156117a1573d6000803e3d6000fd5b505050506040513d60208110156117b757600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561182b57600080fd5b505afa15801561183f573d6000803e3d6000fd5b505050506040513d602081101561185557600080fd5b5051306000908152600160205260408120549192506118748888612984565b6000549091508061188b848763ffffffff61248016565b8161189257fe5b049a50806118a6848663ffffffff61248016565b816118ad57fe5b04995060008b1180156118c0575060008a115b611915576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612e156025913960400191505060405180910390fd5b61191f3084612c53565b61192a878d8d612273565b611935868d8c612273565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b1580156119a157600080fd5b505afa1580156119b5573d6000803e3d6000fd5b505050506040513d60208110156119cb57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b158015611a3d57600080fd5b505afa158015611a51573d6000803e3d6000fd5b505050506040513d6020811015611a6757600080fd5b50519350611a7785858b8b612578565b8115611ab957600854611ab5906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff61248016565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600e81905550915091565b6040518060400160405280600981526020017f4d6f6a69746f2d4c50000000000000000000000000000000000000000000000081525081565b6000610e873384846128a3565b6103e881565b600e54600114611be157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4d6f6a69746f3a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6000600e55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff9485169490931692611cbd9285928792611cb8926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b158015611c8057600080fd5b505afa158015611c94573d6000803e3d6000fd5b505050506040513d6020811015611caa57600080fd5b50519063ffffffff61250616565b612273565b600854604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611d5c9284928792611cb8926e01000000000000000000000000000090046dffffffffffffffffffffffffffff169173ffffffffffffffffffffffffffffffffffffffff8616916370a0823191602480820192602092909190829003018186803b158015611c8057600080fd5b50506001600e5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611e0d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4d6f6a69746f3a20455850495245440000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611f6e573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611fe957508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61205457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4d6f6a69746f3a20494e56414c49445f5349474e415455524500000000000000604482015290519081900360640190fd5b61205f898989612834565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c5481565b600e546001146120fe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4d6f6a69746f3a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6000600e55600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905161226c9273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b15801561217557600080fd5b505afa158015612189573d6000803e3d6000fd5b505050506040513d602081101561219f57600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561221257600080fd5b505afa158015612226573d6000803e3d6000fd5b505050506040513d602081101561223c57600080fd5b50516008546dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612578565b6001600e55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b6020831061237957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161233c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146123db576040519150601f19603f3d011682016040523d82523d6000602084013e6123e0565b606091505b509150915081801561240e57508051158061240e575080806020019051602081101561240b57600080fd5b50515b61247957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d6f6a69746f3a205452414e534645525f4641494c4544000000000000000000604482015290519081900360640190fd5b5050505050565b600081158061249b5750508082028282828161249857fe5b04145b610e8b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610e8b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff84118015906125a457506dffffffffffffffffffffffffffff8311155b61260f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4d6f6a69746f3a204f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c01000000000000000000000000000000000000000000000000000000009004811682039081161580159061265f57506dffffffffffffffffffffffffffff841615155b801561267a57506dffffffffffffffffffffffffffff831615155b1561272a578063ffffffff166126bd8561269386612d18565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169063ffffffff612d3c16565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff81166126fd8461269387612d18565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546128d9908263ffffffff61250616565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461291b908263ffffffff612d7d16565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156129ef57600080fd5b505afa158015612a03573d6000803e3d6000fd5b505050506040513d6020811015612a1957600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff8216158015945091925090612b25578015612b20576000612a706114e96dffffffffffffffffffffffffffff88811690881663ffffffff61248016565b90506000612a7d83612b39565b905080821115612b1d576000612ab06002610ce2612aa1868663ffffffff61250616565b6000549063ffffffff61248016565b90506000612af9612ac884600263ffffffff61248016565b600d54612aed90612ae090600263ffffffff61250616565b879063ffffffff61248016565b9063ffffffff612d7d16565b90506000818381612b0657fe5b0490508015612b1957612b198782612b8b565b5050505b50505b612b31565b8015612b31576000600b555b505092915050565b60006003821115612b7c575080600160028204015b81811015612b7657809150600281828581612b6557fe5b040181612b6e57fe5b049050612b4e565b50612b86565b8115612b86575060015b919050565b600054612b9e908263ffffffff612d7d16565b600090815573ffffffffffffffffffffffffffffffffffffffff8316815260016020526040902054612bd6908263ffffffff612d7d16565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310612c4a5781612c4c565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054612c89908263ffffffff61250616565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554612cc3908263ffffffff61250616565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841681612d7557fe5b049392505050565b80820182811015610e8b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe4d6f6a69746f3a20494e53554646494349454e545f4c49515549444954595f4d494e5445444d6f6a69746f3a20494e53554646494349454e545f4c49515549444954595f4255524e45444d6f6a69746f3a20494e53554646494349454e545f494e5055545f414d4f554e544d6f6a69746f3a20494e53554646494349454e545f4f55545055545f414d4f554e54a265627a7a723158206c757e3dfc27635501f2aac1b50a92ee8271ecd71442e3d1ed509989a839120564736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1E PUSH1 0xC SSTORE PUSH1 0x5 PUSH1 0xD SSTORE PUSH1 0x1 PUSH1 0xE SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD CHAINID SWAP1 DUP1 PUSH1 0x52 PUSH2 0x2FC0 DUP3 CODECOPY PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB PUSH1 0x52 ADD DUP3 KECCAK256 DUP3 DUP3 ADD DUP3 MSTORE PUSH1 0xA DUP4 MSTORE PUSH10 0x4D6F6A69746F204C5073 PUSH1 0xB0 SHL PUSH1 0x20 SWAP4 DUP5 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP5 ADD MSTORE DUP2 MLOAD DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x325E0FE81F011AB731E3040ED18312448E20937E66CB9E82B4F83EF0A2AB0C0E DUP2 DUP4 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP5 ADD SWAP1 MSTORE DUP3 MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SSTORE POP PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x2EB1 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 0x1E5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5A3D5493 GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xBA9A7A56 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x650 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x6AE JUMPI DUP1 PUSH4 0xFEF46224 EQ PUSH2 0x6E9 JUMPI DUP1 PUSH4 0xFFF6CAE9 EQ PUSH2 0x6F1 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0xBA9A7A56 EQ PUSH2 0x605 JUMPI DUP1 PUSH4 0xBC25CF77 EQ PUSH2 0x60D JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x640 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x648 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0x89AFCB44 EQ PUSH2 0x578 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x5C4 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x5CC JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x4CF JUMPI DUP1 PUSH4 0x6A627842 EQ PUSH2 0x4D7 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x50A JUMPI DUP1 PUSH4 0x7464FC3D EQ PUSH2 0x53D JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x2594AC01 GT PUSH2 0x187 JUMPI DUP1 PUSH4 0x390F66C5 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0x390F66C5 EQ PUSH2 0x452 JUMPI DUP1 PUSH4 0x45A63144 EQ PUSH2 0x46F JUMPI DUP1 PUSH4 0x485CC955 EQ PUSH2 0x48C JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x4C7 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x2594AC01 EQ PUSH2 0x41C JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x424 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x42C JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x44A JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x341 JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x38E JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x3BF JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3D9 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x22C0D9F EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x302 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x283 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x200 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 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x256 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 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x6F9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x28D PUSH2 0xDEC 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 0x2C7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2AF JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2F4 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 0x30A PUSH2 0xE25 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 0x37A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x357 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xE7A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x396 PUSH2 0xE91 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 0x3C7 PUSH2 0xEAD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x37A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3EF 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 0xEB3 JUMP JUMPDEST PUSH2 0x3C7 PUSH2 0xF92 JUMP JUMPDEST PUSH2 0x3C7 PUSH2 0xF98 JUMP JUMPDEST PUSH2 0x434 PUSH2 0xFBC 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 0x3C7 PUSH2 0xFC1 JUMP JUMPDEST PUSH2 0x283 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x468 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xFC7 JUMP JUMPDEST PUSH2 0x283 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x485 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x10C2 JUMP JUMPDEST PUSH2 0x283 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x11BE JUMP JUMPDEST PUSH2 0x3C7 PUSH2 0x1297 JUMP JUMPDEST PUSH2 0x3C7 PUSH2 0x129D JUMP JUMPDEST PUSH2 0x3C7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x12A3 JUMP JUMPDEST PUSH2 0x3C7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x520 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x165D JUMP JUMPDEST PUSH2 0x3C7 PUSH2 0x166F JUMP JUMPDEST PUSH2 0x3C7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1675 JUMP JUMPDEST PUSH2 0x5AB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x58E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1687 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 0x28D PUSH2 0x1B24 JUMP JUMPDEST PUSH2 0x37A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1B5D JUMP JUMPDEST PUSH2 0x3C7 PUSH2 0x1B6A JUMP JUMPDEST PUSH2 0x283 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x623 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1B70 JUMP JUMPDEST PUSH2 0x396 PUSH2 0x1D66 JUMP JUMPDEST PUSH2 0x396 PUSH2 0x1D82 JUMP JUMPDEST PUSH2 0x283 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x666 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 0x1D9E JUMP JUMPDEST PUSH2 0x3C7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP