[ { "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": "amount", "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": false, "internalType": "address", "name": "userAddress", "type": "address" }, { "indexed": false, "internalType": "address payable", "name": "relayerAddress", "type": "address" }, { "indexed": false, "internalType": "bytes", "name": "functionSignature", "type": "bytes" } ], "name": "MetaTransactionExecuted", "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": "amount", "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": [], "name": "ERC712_VERSION", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PERMIT_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "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": "rawAmount", "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": "", "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": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "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": "", "type": "address" } ], "name": "delegates", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "userAddress", "type": "address" }, { "internalType": "bytes", "name": "functionSignature", "type": "bytes" }, { "internalType": "bytes32", "name": "sigR", "type": "bytes32" }, { "internalType": "bytes32", "name": "sigS", "type": "bytes32" }, { "internalType": "uint8", "name": "sigV", "type": "uint8" } ], "name": "executeMetaTransaction", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "getChainId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getCurrentVotes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDomainSeperator", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "getNonce", "outputs": [ { "internalType": "uint256", "name": "nonce", "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": [], "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": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "rawAmount", "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": "dst", "type": "address" }, { "internalType": "uint256", "name": "rawAmount", "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": "rawAmount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
608060405260008060006101000a81548160ff0219169083151502179055506a108b2a2c280290940000006003553480156200003a57600080fd5b5060035460056000620000526200010f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620000a06200010f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600354604051620001019190620001d4565b60405180910390a3620001fb565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415620001bc5760606000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509050600080369050905073ffffffffffffffffffffffffffffffffffffffff818301511692505050620001c0565b3390505b90565b620001ce81620001f1565b82525050565b6000602082019050620001eb6000830184620001c3565b92915050565b6000819050919050565b613cfe806200020b6000396000f3fe6080604052600436106101815760003560e01c80635c19a95c116100d1578063a9059cbb1161008a578063d505accf11610064578063d505accf146105ed578063dd62ed3e14610616578063e7a324dc14610653578063f1127ed81461067e57610181565b8063a9059cbb1461054a578063b4b5ea5714610587578063c3cda520146105c457610181565b80635c19a95c146104025780636fcfff451461042b57806370a0823114610468578063782d6fe1146104a55780637ecebe00146104e257806395d89b411461051f57610181565b806320606b701161013e57806330adf81f1161011857806330adf81f14610344578063313ce5671461036f5780633408e4701461039a578063587cde1e146103c557610181565b806320606b701461029f57806323b872dd146102ca5780632d0335ab1461030757610181565b806306fdde0314610186578063095ea7b3146101b15780630c53c51c146101ee5780630f7e59701461021e57806318160ddd1461024957806320379ee514610274575b600080fd5b34801561019257600080fd5b5061019b6106bc565b6040516101a8919061364f565b60405180910390f35b3480156101bd57600080fd5b506101d860048036038101906101d39190612cc8565b6106f5565b6040516101e59190613482565b60405180910390f35b61020860048036038101906102039190612c39565b61086c565b604051610215919061362d565b60405180910390f35b34801561022a57600080fd5b50610233610ae5565b604051610240919061364f565b60405180910390f35b34801561025557600080fd5b5061025e610b1e565b60405161026b9190613811565b60405180910390f35b34801561028057600080fd5b50610289610b24565b604051610296919061349d565b60405180910390f35b3480156102ab57600080fd5b506102b4610b2e565b6040516102c1919061349d565b60405180910390f35b3480156102d657600080fd5b506102f160048036038101906102ec9190612b4c565b610b52565b6040516102fe9190613482565b60405180910390f35b34801561031357600080fd5b5061032e60048036038101906103299190612ae7565b610d8f565b60405161033b9190613811565b60405180910390f35b34801561035057600080fd5b50610359610dd8565b604051610366919061349d565b60405180910390f35b34801561037b57600080fd5b50610384610dfc565b6040516103919190613899565b60405180910390f35b3480156103a657600080fd5b506103af610e01565b6040516103bc9190613811565b60405180910390f35b3480156103d157600080fd5b506103ec60048036038101906103e79190612ae7565b610e0e565b6040516103f99190613429565b60405180910390f35b34801561040e57600080fd5b5061042960048036038101906104249190612ae7565b610e41565b005b34801561043757600080fd5b50610452600480360381019061044d9190612ae7565b610e55565b60405161045f9190613855565b60405180910390f35b34801561047457600080fd5b5061048f600480360381019061048a9190612ae7565b610e78565b60405161049c9190613811565b60405180910390f35b3480156104b157600080fd5b506104cc60048036038101906104c79190612cc8565b610ec1565b6040516104d99190613811565b60405180910390f35b3480156104ee57600080fd5b5061050960048036038101906105049190612ae7565b61126c565b6040516105169190613811565b60405180910390f35b34801561052b57600080fd5b50610534611284565b604051610541919061364f565b60405180910390f35b34801561055657600080fd5b50610571600480360381019061056c9190612cc8565b6112bd565b60405161057e9190613482565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a99190612ae7565b611301565b6040516105bb9190613811565b60405180910390f35b3480156105d057600080fd5b506105eb60048036038101906105e69190612d04565b6113d7565b005b3480156105f957600080fd5b50610614600480360381019061060f9190612b9b565b611694565b005b34801561062257600080fd5b5061063d60048036038101906106389190612b10565b611ad6565b60405161064a9190613811565b60405180910390f35b34801561065f57600080fd5b50610668611b5d565b604051610675919061349d565b60405180910390f35b34801561068a57600080fd5b506106a560048036038101906106a09190612d8d565b611b81565b6040516106b3929190613870565b60405180910390f35b6040518060400160405280600581526020017f526f75746500000000000000000000000000000000000000000000000000000081525081565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831415610748577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905061076d565b61076a83604051806060016040528060268152602001613c5460269139611bc2565b90505b806004600061077a611bcd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff16610814611bcd565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516108599190613811565b60405180910390a3600191505092915050565b60606108766129d3565b6040518060600160405280600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018781525090506108f58782878787611c7f565b610934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092b90613771565b60405180910390fd5b6109876001600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d8890919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b8733886040516109fd93929190613444565b60405180910390a1600060603073ffffffffffffffffffffffffffffffffffffffff16888a604051602001610a339291906133ca565b604051602081830303815290604052604051610a4f91906133b3565b6000604051808303816000865af19150503d8060008114610a8c576040519150601f19603f3d011682016040523d82523d6000602084013e610a91565b606091505b509150915081610ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acd906136d1565b60405180910390fd5b80935050505095945050505050565b6040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b60035481565b6000600154905090565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b600080610b5d611bcd565b90506000600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000610c0485604051806060016040528060268152602001613c5460269139611bc2565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610c6257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214155b15610d76576000610c8c83836040518060600160405280603e8152602001613b60603e9139611ddd565b905080600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d6c9190613811565b60405180910390a3505b610d81878783611e32565b600193505050509392505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b6000804690508091505090565b60066020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e52610e4c611bcd565b8261218f565b50565b60086020528060005260406000206000915054906101000a900463ffffffff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000438210610f05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efc90613791565b60405180910390fd5b6000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161415610f72576000915050611266565b82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161161105c57600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060010154915050611266565b82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff1611156110dd576000915050611266565b6000806001830390505b8163ffffffff168163ffffffff161115611200576000600283830363ffffffff168161110f57fe5b048203905061111c612a0a565b600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600182015481525050905086816000015163ffffffff1614156111d857806020015195505050505050611266565b86816000015163ffffffff1610156111f2578193506111f9565b6001820392505b50506110e7565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206001015493505050505b92915050565b60026020528060005260406000206000915090505481565b6040518060400160405280600581526020017f524f55544500000000000000000000000000000000000000000000000000000081525081565b6000806112e283604051806060016040528060278152602001613ca260279139611bc2565b90506112f66112ef611bcd565b8583611e32565b600191505092915050565b600080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161161136b5760006113cf565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff168152602001908152602001600020600101545b915050919050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8666040518060400160405280600581526020017f526f7574650000000000000000000000000000000000000000000000000000008152508051906020012061143f610e01565b30604051602001611453949392919061355e565b60405160208183030381529060405280519060200120905060007fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf8888886040516020016114a49493929190613519565b604051602081830303815290604052805190602001209050600082826040516020016114d19291906133f2565b60405160208183030381529060405280519060200120905060006001828888886040516000815260200160405260405161150e94939291906135e8565b6020604051602081039080840390855afa158015611530573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a390613731565b60405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055891461163b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611632906136b1565b60405180910390fd5b8742111561167e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611675906137b1565b60405180910390fd5b611688818b61218f565b50505050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8614156116e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905061170b565b61170886604051806060016040528060258152602001613c2f60259139611bc2565b90505b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8666040518060400160405280600581526020017f526f75746500000000000000000000000000000000000000000000000000000081525080519060200120611773610e01565b30604051602001611787949392919061355e565b60405160208183030381529060405280519060200120905060007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a600260008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b604051602001611829969594939291906134b8565b604051602081830303815290604052805190602001209050600082826040516020016118569291906133f2565b60405160208183030381529060405280519060200120905060006001828989896040516000815260200160405260405161189394939291906135e8565b6020604051602081039080840390855afa1580156118b5573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192890613711565b60405180910390fd5b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461199f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199690613671565b60405180910390fd5b884211156119e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d9906137d1565b60405180910390fd5b84600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92587604051611ac09190613811565b60405180910390a3505050505050505050505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b6007602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060010154905082565b600082905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611c785760606000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509050600080369050905073ffffffffffffffffffffffffffffffffffffffff818301511692505050611c7c565b3390505b90565b60008073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415611cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce790613751565b60405180910390fd5b6001611d03611cfe87612337565b61239f565b83868660405160008152602001604052604051611d2394939291906135e8565b6020604051602081039080840390855afa158015611d45573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614905095945050505050565b600080828401905083811015611dd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dca906136f1565b60405180910390fd5b8091505092915050565b6000838311158290611e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1c919061364f565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9990613691565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f09906137f1565b60405180910390fd5b611f74600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482604051806060016040528060378152602001613b9e60379139611ddd565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612019600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482604051806060016040528060318152602001613bd5603191396123d8565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120b99190613811565b60405180910390a361218a600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612432565b505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4612331828483612432565b50505050565b6000604051806080016040528060438152602001613ae860439139805190602001208260000151836020015184604001518051906020012060405160200161238294939291906135a3565b604051602081830303815290604052805190602001209050919050565b60006123a9610b24565b826040516020016123bb9291906133f2565b604051602081830303815290604052805190602001209050919050565b6000808385019050848110158390612426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241d919061364f565b60405180910390fd5b50809150509392505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561246e5750600081115b156126ea57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146125ae576000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff1611612511576000612575565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff168152602001908152602001600020600101545b9050600061259c8285604051806060016040528060298152602001613c0660299139611ddd565b90506125aa868484846126ef565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146126e9576000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff161161264c5760006126b0565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff168152602001908152602001600020600101545b905060006126d78285604051806060016040528060288152602001613c7a602891396123d8565b90506126e5858484846126ef565b5050505b5b505050565b600061271343604051806060016040528060358152602001613b2b6035913961297d565b905060008463ffffffff161180156127a857508063ffffffff16600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b156128195781600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060010181905550612926565b60405180604001604052808263ffffffff16815260200183815250600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff1602179055506020820151816001015590505060018401600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724848460405161296e92919061382c565b60405180910390a25050505050565b6000640100000000831082906129c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c0919061364f565b60405180910390fd5b5082905092915050565b604051806060016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b6040518060400160405280600063ffffffff168152602001600081525090565b600081359050612a3981613a74565b92915050565b600081359050612a4e81613a8b565b92915050565b600082601f830112612a6557600080fd5b8135612a78612a73826138e5565b6138b4565b91508082526020830160208301858383011115612a9457600080fd5b612a9f8382846139e4565b50505092915050565b600081359050612ab781613aa2565b92915050565b600081359050612acc81613ab9565b92915050565b600081359050612ae181613ad0565b92915050565b600060208284031215612af957600080fd5b6000612b0784828501612a2a565b91505092915050565b60008060408385031215612b2357600080fd5b6000612b3185828601612a2a565b9250506020612b4285828601612a2a565b9150509250929050565b600080600060608486031215612b6157600080fd5b6000612b6f86828701612a2a565b9350506020612b8086828701612a2a565b9250506040612b9186828701612aa8565b9150509250925092565b600080600080600080600060e0888a031215612bb657600080fd5b6000612bc48a828b01612a2a565b9750506020612bd58a828b01612a2a565b9650506040612be68a828b01612aa8565b9550506060612bf78a828b01612aa8565b9450506080612c088a828b01612ad2565b93505060a0612c198a828b01612a3f565b92505060c0612c2a8a828b01612a3f565b91505092959891949750929550565b600080600080600060a08688031215612c5157600080fd5b6000612c5f88828901612a2a565b955050602086013567ffffffffffffffff811115612c7c57600080fd5b612c8888828901612a54565b9450506040612c9988828901612a3f565b9350506060612caa88828901612a3f565b9250506080612cbb88828901612ad2565b9150509295509295909350565b60008060408385031215612cdb57600080fd5b6000612ce985828601612a2a565b9250506020612cfa85828601612aa8565b9150509250929050565b60008060008060008060c08789031215612d1d57600080fd5b6000612d2b89828a01612a2a565b9650506020612d3c89828a01612aa8565b9550506040612d4d89828a01612aa8565b9450506060612d5e89828a01612ad2565b9350506080612d6f89828a01612a3f565b92505060a0612d8089828a01612a3f565b9150509295509295509295565b60008060408385031215612da057600080fd5b6000612dae85828601612a2a565b9250506020612dbf85828601612abd565b9150509250929050565b612dd281613975565b82525050565b612de181613963565b82525050565b612df8612df382613963565b613a26565b82525050565b612e0781613987565b82525050565b612e1681613993565b82525050565b612e2d612e2882613993565b613a38565b82525050565b6000612e3e82613915565b612e48818561392b565b9350612e588185602086016139f3565b612e6181613a56565b840191505092915050565b6000612e7782613915565b612e81818561393c565b9350612e918185602086016139f3565b80840191505092915050565b6000612ea882613920565b612eb28185613947565b9350612ec28185602086016139f3565b612ecb81613a56565b840191505092915050565b6000612ee3601b83613947565b91507f526f7574653a3a7065726d69743a20756e617574686f72697a656400000000006000830152602082019050919050565b6000612f23603d83613947565b91507f526f7574653a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207460008301527f72616e736665722066726f6d20746865207a65726f20616464726573730000006020830152604082019050919050565b6000612f89602383613947565b91507f526f7574653a3a64656c656761746542795369673a20696e76616c6964206e6f60008301527f6e636500000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612fef601c83613947565b91507f46756e6374696f6e2063616c6c206e6f74207375636365737366756c000000006000830152602082019050919050565b600061302f600283613958565b91507f19010000000000000000000000000000000000000000000000000000000000006000830152600282019050919050565b600061306f601b83613947565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b60006130af602083613947565b91507f526f7574653a3a7065726d69743a20696e76616c6964207369676e61747572656000830152602082019050919050565b60006130ef602783613947565b91507f526f7574653a3a64656c656761746542795369673a20696e76616c696420736960008301527f676e6174757265000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613155602583613947565b91507f4e61746976654d6574615472616e73616374696f6e3a20494e56414c49445f5360008301527f49474e45520000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006131bb602183613947565b91507f5369676e657220616e64207369676e617475726520646f206e6f74206d61746360008301527f68000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613221602883613947565b91507f526f7574653a3a6765745072696f72566f7465733a206e6f742079657420646560008301527f7465726d696e65640000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613287602783613947565b91507f526f7574653a3a64656c656761746542795369673a207369676e61747572652060008301527f65787069726564000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006132ed602083613947565b91507f526f7574653a3a7065726d69743a207369676e617475726520657870697265646000830152602082019050919050565b600061332d603b83613947565b91507f526f7574653a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207460008301527f72616e7366657220746f20746865207a65726f206164647265737300000000006020830152604082019050919050565b61338f816139bd565b82525050565b61339e816139c7565b82525050565b6133ad816139d7565b82525050565b60006133bf8284612e6c565b915081905092915050565b60006133d68285612e6c565b91506133e28284612de7565b6014820191508190509392505050565b60006133fd82613022565b91506134098285612e1c565b6020820191506134198284612e1c565b6020820191508190509392505050565b600060208201905061343e6000830184612dd8565b92915050565b60006060820190506134596000830186612dd8565b6134666020830185612dc9565b81810360408301526134788184612e33565b9050949350505050565b60006020820190506134976000830184612dfe565b92915050565b60006020820190506134b26000830184612e0d565b92915050565b600060c0820190506134cd6000830189612e0d565b6134da6020830188612dd8565b6134e76040830187612dd8565b6134f46060830186613386565b6135016080830185613386565b61350e60a0830184613386565b979650505050505050565b600060808201905061352e6000830187612e0d565b61353b6020830186612dd8565b6135486040830185613386565b6135556060830184613386565b95945050505050565b60006080820190506135736000830187612e0d565b6135806020830186612e0d565b61358d6040830185613386565b61359a6060830184612dd8565b95945050505050565b60006080820190506135b86000830187612e0d565b6135c56020830186613386565b6135d26040830185612dd8565b6135df6060830184612e0d565b95945050505050565b60006080820190506135fd6000830187612e0d565b61360a60208301866133a4565b6136176040830185612e0d565b6136246060830184612e0d565b95945050505050565b600060208201905081810360008301526136478184612e33565b905092915050565b600060208201905081810360008301526136698184612e9d565b905092915050565b6000602082019050818103600083015261368a81612ed6565b9050919050565b600060208201905081810360008301526136aa81612f16565b9050919050565b600060208201905081810360008301526136ca81612f7c565b9050919050565b600060208201905081810360008301526136ea81612fe2565b9050919050565b6000602082019050818103600083015261370a81613062565b9050919050565b6000602082019050818103600083015261372a816130a2565b9050919050565b6000602082019050818103600083015261374a816130e2565b9050919050565b6000602082019050818103600083015261376a81613148565b9050919050565b6000602082019050818103600083015261378a816131ae565b9050919050565b600060208201905081810360008301526137aa81613214565b9050919050565b600060208201905081810360008301526137ca8161327a565b9050919050565b600060208201905081810360008301526137ea816132e0565b9050919050565b6000602082019050818103600083015261380a81613320565b9050919050565b60006020820190506138266000830184613386565b92915050565b60006040820190506138416000830185613386565b61384e6020830184613386565b9392505050565b600060208201905061386a6000830184613395565b92915050565b60006040820190506138856000830185613395565b6138926020830184613386565b9392505050565b60006020820190506138ae60008301846133a4565b92915050565b6000604051905081810181811067ffffffffffffffff821117156138db576138da613a54565b5b8060405250919050565b600067ffffffffffffffff821115613900576138ff613a54565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061396e8261399d565b9050919050565b60006139808261399d565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015613a115780820151818401526020810190506139f6565b83811115613a20576000848401525b50505050565b6000613a3182613a42565b9050919050565b6000819050919050565b6000613a4d82613a67565b9050919050565bfe5b6000601f19601f8301169050919050565b60008160601b9050919050565b613a7d81613963565b8114613a8857600080fd5b50565b613a9481613993565b8114613a9f57600080fd5b50565b613aab816139bd565b8114613ab657600080fd5b50565b613ac2816139c7565b8114613acd57600080fd5b50565b613ad9816139d7565b8114613ae457600080fd5b5056fe4d6574615472616e73616374696f6e2875696e74323536206e6f6e63652c616464726573732066726f6d2c62797465732066756e6374696f6e5369676e617475726529526f7574653a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473526f7574653a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365526f7574653a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365526f7574653a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773526f7574653a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773526f7574653a3a7065726d69743a20616d6f756e7420657863656564732039362062697473526f7574653a3a617070726f76653a20616d6f756e7420657863656564732039362062697473526f7574653a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773526f7574653a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473a2646970667358221220b911b04182f5e67b0e249b297546a1f7031f33b86d125c01139a28fe53c7845664736f6c63430007040033