[ { "inputs": [ { "internalType": "address", "name": "token_addr", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "provider", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "locktime", "type": "uint256" }, { "indexed": false, "internalType": "enum ve.DepositType", "name": "deposit_type", "type": "uint8" }, { "indexed": false, "internalType": "uint256", "name": "ts", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "prevSupply", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "supply", "type": "uint256" } ], "name": "Supply", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "provider", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "ts", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "abstain", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_approved", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "attach", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "attachments", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_block", "type": "uint256" } ], "name": "balanceOfAtNFT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "balanceOfNFT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_t", "type": "uint256" } ], "name": "balanceOfNFTAt", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "block_number", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "checkpoint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_value", "type": "uint256" }, { "internalType": "uint256", "name": "_lock_duration", "type": "uint256" } ], "name": "create_lock", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_value", "type": "uint256" }, { "internalType": "uint256", "name": "_lock_duration", "type": "uint256" }, { "internalType": "address", "name": "_to", "type": "address" } ], "name": "create_lock_for", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_value", "type": "uint256" } ], "name": "deposit_for", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "detach", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "epoch", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "get_last_user_slope", "outputs": [ { "internalType": "int128", "name": "", "type": "int128" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_value", "type": "uint256" } ], "name": "increase_amount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_lock_duration", "type": "uint256" } ], "name": "increase_unlock_time", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "address", "name": "_operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_spender", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "isApprovedOrOwner", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "locked", "outputs": [ { "internalType": "int128", "name": "amount", "type": "int128" }, { "internalType": "uint256", "name": "end", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "locked__end", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_from", "type": "uint256" }, { "internalType": "uint256", "name": "_to", "type": "uint256" } ], "name": "merge", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "ownership_change", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "point_history", "outputs": [ { "internalType": "int128", "name": "bias", "type": "int128" }, { "internalType": "int128", "name": "slope", "type": "int128" }, { "internalType": "uint256", "name": "ts", "type": "uint256" }, { "internalType": "uint256", "name": "blk", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_from", "type": "address" }, { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_from", "type": "address" }, { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_operator", "type": "address" }, { "internalType": "bool", "name": "_approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_voter", "type": "address" } ], "name": "setVoter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "slope_changes", "outputs": [ { "internalType": "int128", "name": "", "type": "int128" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "supply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "_interfaceID", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "token", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "uint256", "name": "_tokenIndex", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "tokenURI", "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": "uint256", "name": "_block", "type": "uint256" } ], "name": "totalSupplyAt", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "t", "type": "uint256" } ], "name": "totalSupplyAtT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_from", "type": "address" }, { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "user_point_epoch", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "user_point_history", "outputs": [ { "internalType": "int128", "name": "bias", "type": "int128" }, { "internalType": "int128", "name": "slope", "type": "int128" }, { "internalType": "uint256", "name": "ts", "type": "uint256" }, { "internalType": "uint256", "name": "blk", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_idx", "type": "uint256" } ], "name": "user_point_history__ts", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "version", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "voted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "voter", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "voting", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60a06040526013805460ff191660011790553480156200001e57600080fd5b5060405162003d5d38038062003d5d833981016040819052620000419162000181565b6001600160a01b038116608052600a80546001600160a01b03191633179055437f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ee55427f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ed5560126020527f6afebfa21c417411ab7392a59bbb98ec35612153c5e8aeb3f64f4e016707b77a805460ff1990811660019081179092557fdf428ce7b59746cf2e618e63c6311d427105f2c3dc163ff0902907dea1728df58054821683179055635b5e139f60e01b60009081527fc0e00dda16840520b43384d85650edbbad8e5afcb041d20f42eb5aea304558cd80549092169092179055600b546040519091309160008051602062003d3d833981519152908290a4600b54604051600090309060008051602062003d3d833981519152908390a450620001b3565b6000602082840312156200019457600080fd5b81516001600160a01b0381168114620001ac57600080fd5b9392505050565b608051613b60620001dd6000396000818161087901528181610bc901526127c00152613b606000f3fe608060405234801561001057600080fd5b506004361061030c5760003560e01c80638c2c9baf1161019d578063c87b56dd116100e9578063e7e242d4116100a2578063f8a057631161007c578063f8a057631461083d578063fbd3a29d14610861578063fc0c546a14610874578063fd4a77f11461089b57600080fd5b8063e7e242d4146107db578063e985e9c5146107ee578063ee99fe281461082a57600080fd5b8063c87b56dd14610731578063d1c2babb14610744578063d1febfb914610757578063d4e54c3b14610795578063e0514aba146107a8578063e441135c146107bb57600080fd5b8063a183af5211610156578063b45a3c0e11610130578063b45a3c0e146106bb578063b88d4fde14610703578063c1f0fb9f14610716578063c2c4c5c11461072957600080fd5b8063a183af5214610682578063a22cb46514610695578063a4d855df146106a857600080fd5b80638c2c9baf1461061d5780638fbb38ff14610630578063900cf0cf1461065357806395d89b411461036a578063981b24d01461065c578063986b7d8a1461066f57600080fd5b8063313ce5671161025c57806354fd4d50116102155780636f548837116101ef5780636f548837146105b457806370a08231146105d45780637116c60c146105e757806371197484146105fa57600080fd5b806354fd4d50146105545780636352211e1461057857806365fc3873146105a157600080fd5b8063313ce567146104c857806342842e0e146104e2578063430c2081146104f5578063461f711c1461050857806346c96aac1461052e5780634bc2a6571461054157600080fd5b80631376f3da116102c957806323b872dd116102a357806323b872dd1461046657806325a58b56146104795780632e1a7d4d1461047f5780632f745c591461049257600080fd5b80631376f3da1461041057806318160ddd1461044b5780631c984bc31461045357600080fd5b806301ffc9a714610311578063047fc9aa1461035357806306fdde031461036a578063081812fc1461039a578063095ea7b3146103db5780630d6a2033146103f0575b600080fd5b61033e61031f366004612ffb565b6001600160e01b03191660009081526012602052604090205460ff1690565b60405190151581526020015b60405180910390f35b61035c60005481565b60405190815260200161034a565b61038d604051806040016040528060048152602001635341424960e01b81525081565b60405161034a9190613070565b6103c36103a8366004613083565b6000908152600d60205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200161034a565b6103ee6103e93660046130b8565b6108ae565b005b61035c6103fe366004613083565b60086020526000908152604090205481565b61042361041e3660046130e2565b610997565b60408051600f95860b81529390940b602084015292820152606081019190915260800161034a565b61035c6109de565b61035c6104613660046130e2565b6109ee565b6103ee610474366004613104565b610a21565b4361035c565b6103ee61048d366004613083565b610a32565b61035c6104a03660046130b8565b6001600160a01b03919091166000908152600f60209081526040808320938352929052205490565b6104d0601281565b60405160ff909116815260200161034a565b6103ee6104f0366004613104565b610cec565b61033e6105033660046130b8565b610d07565b61051b610516366004613083565b610d1a565b604051600f9190910b815260200161034a565b600a546103c3906001600160a01b031681565b6103ee61054f366004613140565b610d5d565b61038d604051806040016040528060058152602001640312e302e360dc1b81525081565b6103c3610586366004613083565b6000908152600c60205260409020546001600160a01b031690565b61035c6105af3660046130e2565b610d96565b61035c6105c2366004613083565b60026020526000908152604090205481565b61035c6105e2366004613140565b610dd8565b61035c6105f5366004613083565b610df6565b61051b610608366004613083565b600760205260009081526040902054600f0b81565b61035c61062b3660046130e2565b610e56565b61033e61063e366004613083565b60096020526000908152604090205460ff1681565b61035c60035481565b61035c61066a366004613083565b610e62565b6103ee61067d366004613083565b611004565b6103ee6106903660046130e2565b611048565b6103ee6106a3366004613169565b611147565b6103ee6106b63660046130e2565b6111cc565b6106e96106c9366004613083565b60016020819052600091825260409091208054910154600f9190910b9082565b60408051600f9390930b835260208301919091520161034a565b6103ee6107113660046131b6565b6113ae565b6103ee610724366004613083565b6114db565b6103ee61150a565b61038d61073f366004613083565b61154a565b6103ee6107523660046130e2565b6115f7565b610423610765366004613083565b600460205260009081526040902080546001820154600290920154600f82810b93600160801b909304900b919084565b61035c6107a3366004613292565b611762565b61035c6107b63660046130e2565b6117a5565b61035c6107c9366004613083565b60066020526000908152604090205481565b61035c6107e9366004613083565b6117b1565b61033e6107fc3660046132c7565b6001600160a01b03918216600090815260116020908152604080832093909416825291909152205460ff1690565b6103ee6108383660046130e2565b6117d9565b61035c61084b366004613083565b6000908152600160208190526040909120015490565b6103ee61086f366004613083565b6118ad565b6103c37f000000000000000000000000000000000000000000000000000000000000000081565b6103ee6108a9366004613083565b6118de565b6000818152600c60205260409020546001600160a01b0316806108d057600080fd5b806001600160a01b0316836001600160a01b031614156108ef57600080fd5b6000828152600c60209081526040808320546001600160a01b0385811685526011845282852033808752945291909320549216149060ff1681806109305750805b61093957600080fd5b6000848152600d602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918716917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a45050505050565b600560205281600052604060002081633b9aca0081106109b657600080fd5b6003020180546001820154600290920154600f82810b9550600160801b90920490910b925084565b60006109e942610df6565b905090565b600082815260056020526040812082633b9aca008110610a1057610a106132fa565b600302016001015490505b92915050565b610a2d83838333611910565b505050565b60135460ff16600114610a4457600080fd5b6013805460ff19166002179055610a5b33826119d6565b610a6757610a67613310565b600081815260086020526040902054158015610a92575060008181526009602052604090205460ff16155b610ab75760405162461bcd60e51b8152600401610aae90613326565b60405180910390fd5b60008181526001602081815260409283902083518085019094528054600f0b845290910154908201819052421015610b2a5760405162461bcd60e51b8152602060048201526016602482015275546865206c6f636b206469646e27742065787069726560501b6044820152606401610aae565b805160408051808201825260008082526020808301828152878352600191829052938220925183546001600160801b0319166001600160801b039091161783559251919092015554600f9190910b90610b83828261335e565b600081905550610bad848460405180604001604052806000600f0b81526020016000815250611a3c565b60405163a9059cbb60e01b8152336004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610c1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3e9190613375565b610c4a57610c4a613310565b610c538461205b565b60408051858152602081018490524281830152905133917f02f25270a4d87bea75db541cdfe559334a275b4a233520ed6c0a2429667cca94919081900360600190a27f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c81610cc1848261335e565b6040805192835260208301919091520160405180910390a150506013805460ff191660011790555050565b610a2d838383604051806020016040528060008152506113ae565b6000610d1383836119d6565b9392505050565b6000818152600660209081526040808320546005909252822081633b9aca008110610d4757610d476132fa565b6003020154600160801b9004600f0b9392505050565b600a546001600160a01b03163314610d7457600080fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60135460009060ff16600114610dab57600080fd5b6013805460ff19166002179055610dc383833361211a565b90506013805460ff1916600117905592915050565b6001600160a01b0381166000908152600e6020526040812054610a1b565b600354600081815260046020908152604080832081516080810183528154600f81810b8352600160801b909104900b93810193909352600181015491830191909152600201546060820152909190610e4e818561226b565b949350505050565b6000610d13838361236d565b600043821115610e7457610e74613310565b6003546000610e838483612645565b600081815260046020908152604080832081516080810183528154600f81810b8352600160801b909104900b9381019390935260018101549183019190915260020154606082015291925083831015610f92576000600481610ee6866001613392565b8152602080820192909252604090810160002081516080810183528154600f81810b8352600160801b909104900b9381019390935260018101549183019190915260020154606080830182905285015191925014610f8c5782606001518160600151610f52919061335e565b83604001518260400151610f66919061335e565b6060850151610f75908a61335e565b610f7f91906133aa565b610f8991906133df565b91505b50610fe1565b43826060015114610fe1576060820151610fac904361335e565b6040830151610fbb904261335e565b6060840151610fca908961335e565b610fd491906133aa565b610fde91906133df565b90505b610ffa82828460400151610ff59190613392565b61226b565b9695505050505050565b600a546001600160a01b0316331461101b57600080fd5b6000818152600860205260409020546110369060019061335e565b60009182526008602052604090912055565b60135460ff1660011461105a57600080fd5b6013805460ff1916600217905561107133836119d6565b61107d5761107d613310565b60008281526001602081815260409283902083518085019094528054600f0b84529091015490820152816110b3576110b3613310565b60008160000151600f0b136111035760405162461bcd60e51b8152602060048201526016602482015275139bc8195e1a5cdd1a5b99c81b1bd8dac8199bdd5b9960521b6044820152606401610aae565b428160200151116111265760405162461bcd60e51b8152600401610aae906133f3565b611135838360008460026126cf565b50506013805460ff1916600117905550565b6001600160a01b03821633141561116057611160613310565b3360008181526011602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60135460ff166001146111de57600080fd5b6013805460ff191660021790556111f533836119d6565b61120157611201613310565b600082815260016020818152604080842081518083019092528054600f0b825290920154908201529062093a80806112398542613392565b61124391906133df565b61124d91906133aa565b9050428260200151116112915760405162461bcd60e51b815260206004820152600c60248201526b131bd8dac8195e1c1a5c995960a21b6044820152606401610aae565b60008260000151600f0b136112dc5760405162461bcd60e51b8152602060048201526011602482015270139bdd1a1a5b99c81a5cc81b1bd8dad959607a1b6044820152606401610aae565b8160200151811161132f5760405162461bcd60e51b815260206004820152601f60248201527f43616e206f6e6c7920696e637265617365206c6f636b206475726174696f6e006044820152606401610aae565b61133d630784ce0042613392565b81111561138c5760405162461bcd60e51b815260206004820152601e60248201527f566f74696e67206c6f636b2063616e2062652034207965617273206d617800006044820152606401610aae565b61139b846000838560036126cf565b50506013805460ff191660011790555050565b6113ba84848433611910565b823b156114d557604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906113f3903390889087908790600401613437565b6020604051808303816000875af192505050801561142e575060408051601f3d908101601f1916820190925261142b9181019061346a565b60015b6114d3573d80801561145c576040519150601f19603f3d011682016040523d82523d6000602084013e611461565b606091505b5080516114cb5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608401610aae565b805181602001fd5b505b50505050565b600a546001600160a01b031633146114f257600080fd5b6000908152600960205260409020805460ff19169055565b611548600060405180604001604052806000600f0b8152602001600081525060405180604001604052806000600f0b81526020016000815250611a3c565b565b6000818152600c60205260409020546060906001600160a01b03166115b15760405162461bcd60e51b815260206004820152601b60248201527f517565727920666f72206e6f6e6578697374656e7420746f6b656e00000000006044820152606401610aae565b60008281526001602081815260409283902083518085019094528054600f0b84529091015490820152610d13836115e881426128d4565b60208401518451600f0b6129a6565b600082815260086020526040902054158015611622575060008281526009602052604090205460ff16155b61163e5760405162461bcd60e51b8152600401610aae90613326565b8082141561164b57600080fd5b61165533836119d6565b61165e57600080fd5b61166833826119d6565b61167157600080fd5b6000828152600160208181526040808420815180830183528154600f90810b82529185015481850190815287875285855283872084518086019095528054840b855290950154938301849052805194519095929490910b9211156116d95782602001516116df565b83602001515b604080518082018252600080825260208083018281528b83526001808352858420945185546001600160801b0319166001600160801b0390911617855590519301929092558251808401909352808352908201529091506117439087908690611a3c565b61174c8661205b565b61175a8583838660046126cf565b505050505050565b60135460009060ff1660011461177757600080fd5b6013805460ff1916600217905561178f84848461211a565b90506013805460ff191660011790559392505050565b6000610d1383836128d4565b6000818152600260205260408120544314156117cf57506000919050565b610a1b82426128d4565b60135460ff166001146117eb57600080fd5b6013805460ff1916600217905560008281526001602081815260409283902083518085019094528054600f0b845290910154908201528161182b57600080fd5b60008160000151600f0b1361187b5760405162461bcd60e51b8152602060048201526016602482015275139bc8195e1a5cdd1a5b99c81b1bd8dac8199bdd5b9960521b6044820152606401610aae565b4281602001511161189e5760405162461bcd60e51b8152600401610aae906133f3565b611135838360008460006126cf565b600a546001600160a01b031633146118c457600080fd5b600081815260086020526040902054611036906001613392565b600a546001600160a01b031633146118f557600080fd5b6000908152600960205260409020805460ff19166001179055565b60008281526008602052604090205415801561193b575060008281526009602052604090205460ff16155b6119575760405162461bcd60e51b8152600401610aae90613326565b61196181836119d6565b61196a57600080fd5b6119748483612add565b61197e8483612b44565b6119888383612bc5565b6000828152600260205260408082204390555183916001600160a01b0380871692908816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a450505050565b6000818152600c6020908152604080832054600d8352818420546001600160a01b039182168086526011855283862088841680885295529285205492938085149392909116149060ff168280611a295750815b80611a315750805b979650505050505050565b60408051608081018252600080825260208201819052918101829052606081019190915260408051608081018252600080825260208201819052918101829052606081019190915260035460009081908715611ba857428760200151118015611aac575060008760000151600f0b135b15611af1578651611ac290630784ce0090613487565b600f0b602080870191909152870151611adc90429061335e565b8560200151611aeb91906134c5565b600f0b85525b428660200151118015611b0b575060008660000151600f0b135b15611b50578551611b2190630784ce0090613487565b600f0b602080860191909152860151611b3b90429061335e565b8460200151611b4a91906134c5565b600f0b84525b602080880151600090815260078252604090205490870151600f9190910b935015611ba857866020015186602001511415611b8d57829150611ba8565b602080870151600090815260079091526040902054600f0b91505b604080516080810182526000808252602082015242918101919091524360608201528115611c1d575060008181526004602090815260409182902082516080810184528154600f81810b8352600160801b909104900b9281019290925260018101549282019290925260029091015460608201525b604081015181600042831015611c6a576040840151611c3c904261335e565b6060850151611c4b904361335e565b611c5d90670de0b6b3a76400006133aa565b611c6791906133df565b90505b600062093a80611c7a81866133df565b611c8491906133aa565b905060005b60ff811015611dff57611c9f62093a8083613392565b9150600042831115611cb357429250611cc7565b50600082815260076020526040902054600f0b5b611cd1868461335e565b8760200151611ce091906134c5565b87518890611cef90839061355a565b600f0b905250602087018051829190611d099083906135aa565b600f90810b90915288516000910b12159050611d2457600087525b60008760200151600f0b1215611d3c57600060208801525b60408088018490528501519295508592670de0b6b3a764000090611d60908561335e565b611d6a90866133aa565b611d7491906133df565b8560600151611d839190613392565b6060880152611d93600189613392565b975042831415611da95750436060870152611dff565b6000888152600460209081526040918290208951918a01516001600160801b03908116600160801b029216919091178155908801516001820155606088015160029091015550611df8816135f9565b9050611c89565b505060038590558b15611e8a5788602001518860200151611e20919061355a565b84602001818151611e3191906135aa565b600f0b90525088518851611e45919061355a565b84518590611e549083906135aa565b600f90810b90915260208601516000910b12159050611e7557600060208501525b60008460000151600f0b1215611e8a57600084525b6000858152600460209081526040918290208651918701516001600160801b03908116600160801b02921691909117815590850151600182015560608501516002909101558b1561204d57428b602001511115611f42576020890151611ef090886135aa565b96508a602001518a602001511415611f14576020880151611f11908861355a565b96505b60208b810151600090815260079091526040902080546001600160801b0319166001600160801b0389161790555b428a602001511115611f9d578a602001518a602001511115611f9d576020880151611f6d908761355a565b60208b810151600090815260079091526040902080546001600160801b0319166001600160801b03831617905595505b60008c815260066020526040812054611fb7906001613392565b905080600660008f815260200190815260200160002081905550428960400181815250504389606001818152505088600560008f815260200190815260200160002082633b9aca00811061200d5761200d6132fa565b825160208401516001600160801b03908116600160801b029116176003919091029190910190815560408201516001820155606090910151600290910155505b505050505050505050505050565b61206533826119d6565b6120b15760405162461bcd60e51b815260206004820181905260248201527f63616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665646044820152606401610aae565b6000818152600c60205260408120546001600160a01b0316906120d490836108ae565b6120de3383612b44565b60405182906000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60008062093a808061212c8642613392565b61213691906133df565b61214091906133aa565b90506000851161214f57600080fd5b4281116121ad5760405162461bcd60e51b815260206004820152602660248201527f43616e206f6e6c79206c6f636b20756e74696c2074696d6520696e207468652060448201526566757475726560d01b6064820152608401610aae565b6121bb630784ce0042613392565b81111561220a5760405162461bcd60e51b815260206004820152601e60248201527f566f74696e67206c6f636b2063616e2062652034207965617273206d617800006044820152606401610aae565b600b60008154612219906135f9565b90915550600b5461222a8482612c5b565b5060008181526001602081815260409283902083518085019094528054600f0b845282015490830152612262918391899186916126cf565b95945050505050565b600080839050600062093a8080836040015161228791906133df565b61229191906133aa565b905060005b60ff811015612345576122ac62093a8083613392565b91506000858311156122c0578592506122d4565b50600082815260076020526040902054600f0b5b60408401516122e3908461335e565b84602001516122f291906134c5565b8451859061230190839061355a565b600f0b905250828614156123155750612345565b808460200181815161232791906135aa565b600f0b905250506040830182905261233e816135f9565b9050612296565b5060008260000151600f0b121561235b57600082525b50516001600160801b03169392505050565b60004382111561237f5761237f613310565b600083815260066020526040812054815b6080811015612423578183106123a557612423565b600060026123b38486613392565b6123be906001613392565b6123c891906133df565b6000888152600560205260409020909150869082633b9aca0081106123ef576123ef6132fa565b60030201600201541161240457809350612412565b61240f60018261335e565b92505b5061241c816135f9565b9050612390565b50600085815260056020526040812083633b9aca008110612446576124466132fa565b604080516080810182526003928302939093018054600f81810b8652600160801b909104900b60208501526001810154918401919091526002015460608301525490915060006124968783612645565b600081815260046020908152604080832081516080810183528154600f81810b8352600160801b909104900b9381019390935260018101549183019190915260020154606082015291925080848410156125755760006004816124fa876001613392565b8152602080820192909252604090810160002081516080810183528154600f81810b8352600160801b909104900b93810193909352600181015491830191909152600201546060808301829052860151919250612557919061335e565b92508360400151816040015161256d919061335e565b915050612599565b6060830151612584904361335e565b9150826040015142612596919061335e565b90505b604083015182156125d6578284606001518c6125b5919061335e565b6125bf90846133aa565b6125c991906133df565b6125d39082613392565b90505b60408701516125e5908261335e565b87602001516125f491906134c5565b8751889061260390839061355a565b600f90810b90915288516000910b12905061263357505093516001600160801b03169650610a1b95505050505050565b60009950505050505050505050610a1b565b60008082815b60808110156126c557818310612660576126c5565b6000600261266e8486613392565b612679906001613392565b61268391906133df565b60008181526004602052604090206002015490915087106126a6578093506126b4565b6126b160018261335e565b92505b506126be816135f9565b905061264b565b5090949350505050565b60005482906126de8682613392565b6000908155604080518082019091528181526020810191909152825160208085015190830152600f0b815282518790849061271a9083906135aa565b600f0b905250851561272e57602083018690525b6000888152600160208181526040909220855181546001600160801b0319166001600160801b039091161781559185015191015561276d888285611a3c565b33871580159061278f5750600485600481111561278c5761278c613614565b14155b15612839576040516323b872dd60e01b81526001600160a01b038281166004830152306024830152604482018a90527f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906064016020604051808303816000875af1158015612809573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282d9190613375565b61283957612839613310565b8360200151816001600160a01b03167fff04ccafc360e16b67d682d17bd9503c4c6b9a131f6be6325762dc9ffc7de6248b8b894260405161287d949392919061362a565b60405180910390a37f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c836128b18a82613392565b6040805192835260208301919091520160405180910390a1505050505050505050565b600082815260066020526040812054806128f2576000915050610a1b565b600084815260056020526040812082633b9aca008110612914576129146132fa565b60408051608081018252600392909202929092018054600f81810b8452600160801b909104900b6020830152600181015492820183905260020154606082015291506129609085613668565b816020015161296f91906134c5565b8151829061297e90839061355a565b600f90810b90915282516000910b1215905061299957600081525b51600f0b9150610a1b9050565b606060405180610120016040528060fd81526020016139ee60fd91399050806129ce86612cbe565b6040516020016129df9291906136a7565b6040516020818303038152906040529050806129fa85612cbe565b604051602001612a0b929190613723565b604051602081830303815290604052905080612a2684612cbe565b604051602001612a379291906137a3565b604051602081830303815290604052905080612a5283612cbe565b604051602001612a63929190613824565b60405160208183030381529060405290506000612ab0612a8287612cbe565b612a8b84612dbc565b604051602001612a9c92919061387f565b604051602081830303815290604052612dbc565b905080604051602001612ac39190613994565b604051602081830303815290604052915050949350505050565b6000818152600c60205260409020546001600160a01b03838116911614612b0657612b06613310565b6000818152600d60205260409020546001600160a01b031615612b40576000818152600d6020526040902080546001600160a01b03191690555b5050565b6000818152600c60205260409020546001600160a01b03838116911614612b6d57612b6d613310565b6000818152600c6020526040902080546001600160a01b0319169055612b938282612f22565b6001600160a01b0382166000908152600e60205260408120805460019290612bbc90849061335e565b90915550505050565b6000818152600c60205260409020546001600160a01b031615612bea57612bea613310565b6000818152600c6020908152604080832080546001600160a01b0319166001600160a01b038716908117909155808452600e8084528285208054600f865284872081885286528487208890558787526010865293862093909355908452909152805460019290612bbc908490613392565b60006001600160a01b038316612c7357612c73613310565b612c7d8383612bc5565b60405182906001600160a01b038516906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a450600192915050565b606081612ce25750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612d0c5780612cf6816135f9565b9150612d059050600a836133df565b9150612ce6565b60008167ffffffffffffffff811115612d2757612d276131a0565b6040519080825280601f01601f191660200182016040528015612d51576020820181803683370190505b5090505b8415610e4e57612d6660018361335e565b9150612d73600a866139d9565b612d7e906030613392565b60f81b818381518110612d9357612d936132fa565b60200101906001600160f81b031916908160001a905350612db5600a866133df565b9450612d55565b805160609080612ddc575050604080516020810190915260008152919050565b60006003612deb836002613392565b612df591906133df565b612e009060046133aa565b90506000612e0f826020613392565b67ffffffffffffffff811115612e2757612e276131a0565b6040519080825280601f01601f191660200182016040528015612e51576020820181803683370190505b5090506000604051806060016040528060408152602001613aeb604091399050600181016020830160005b86811015612edd576003818a01810151603f601282901c8116860151600c83901c8216870151600684901c831688015192909316870151600891821b60ff94851601821b92841692909201901b91160160e01b835260049092019101612e7c565b506003860660018114612ef75760028114612f0857612f14565b613d3d60f01b600119830152612f14565b603d60f81b6000198301525b505050918152949350505050565b6001600160a01b0382166000908152600e6020526040812054612f479060019061335e565b60008381526010602052604090205490915080821415612f97576001600160a01b0384166000908152600f60209081526040808320858452825280832083905585835260109091528120556114d5565b6001600160a01b03939093166000908152600f602090815260408083209383529281528282208054868452848420819055835260109091528282209490945592839055908252812055565b6001600160e01b031981168114612ff857600080fd5b50565b60006020828403121561300d57600080fd5b8135610d1381612fe2565b60005b8381101561303357818101518382015260200161301b565b838111156114d55750506000910152565b6000815180845261305c816020860160208601613018565b601f01601f19169290920160200192915050565b602081526000610d136020830184613044565b60006020828403121561309557600080fd5b5035919050565b80356001600160a01b03811681146130b357600080fd5b919050565b600080604083850312156130cb57600080fd5b6130d48361309c565b946020939093013593505050565b600080604083850312156130f557600080fd5b50508035926020909101359150565b60008060006060848603121561311957600080fd5b6131228461309c565b92506131306020850161309c565b9150604084013590509250925092565b60006020828403121561315257600080fd5b610d138261309c565b8015158114612ff857600080fd5b6000806040838503121561317c57600080fd5b6131858361309c565b915060208301356131958161315b565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156131cc57600080fd5b6131d58561309c565b93506131e36020860161309c565b925060408501359150606085013567ffffffffffffffff8082111561320757600080fd5b818701915087601f83011261321b57600080fd5b81358181111561322d5761322d6131a0565b604051601f8201601f19908116603f01168101908382118183101715613255576132556131a0565b816040528281528a602084870101111561326e57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806000606084860312156132a757600080fd5b83359250602084013591506132be6040850161309c565b90509250925092565b600080604083850312156132da57600080fd5b6132e38361309c565b91506132f16020840161309c565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b602080825260089082015267185d1d1858da195960c21b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008282101561337057613370613348565b500390565b60006020828403121561338757600080fd5b8151610d138161315b565b600082198211156133a5576133a5613348565b500190565b60008160001904831182151516156133c4576133c4613348565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826133ee576133ee6133c9565b500490565b60208082526024908201527f43616e6e6f742061646420746f2065787069726564206c6f636b2e20576974686040820152636472617760e01b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090610ffa90830184613044565b60006020828403121561347c57600080fd5b8151610d1381612fe2565b600081600f0b83600f0b8061349e5761349e6133c9565b60016001607f1b03198214600019821416156134bc576134bc613348565b90059392505050565b600081600f0b83600f0b60016001607f1b036000821360008413838304851182821616156134f5576134f5613348565b60016001607f1b0319600085128281168783058712161561351857613518613348565b6000871292508582058712848416161561353457613534613348565b8585058712818416161561354a5761354a613348565b5050509290910295945050505050565b600081600f0b83600f0b600081128160016001607f1b03190183128115161561358557613585613348565b8160016001607f1b030183138116156135a0576135a0613348565b5090039392505050565b600081600f0b83600f0b600082128260016001607f1b03038213811516156135d4576135d4613348565b8260016001607f1b03190382128116156135f0576135f0613348565b50019392505050565b600060001982141561360d5761360d613348565b5060010190565b634e487b7160e01b600052602160045260246000fd5b84815260208101849052608081016005841061365657634e487b7160e01b600052602160045260246000fd5b60408201939093526060015292915050565b60008083128015600160ff1b85018412161561368657613686613348565b6001600160ff1b03840183138116156136a1576136a1613348565b50500390565b600083516136b9818460208801613018565b6503a37b5b2b7160d51b90830190815283516136dc816006840160208801613018565b7f3c2f746578743e3c7465787420783d2231302220793d2234302220636c61737360069290910191820152671e913130b9b2911f60c11b6026820152602e01949350505050565b60008351613735818460208801613018565b6903130b630b731b2a7b3160b51b908301908152835161375c81600a840160208801613018565b7f3c2f746578743e3c7465787420783d2231302220793d2236302220636c617373600a9290910191820152671e913130b9b2911f60c11b602a820152603201949350505050565b600083516137b5818460208801613018565b6a03637b1b5b2b22fb2b732160ad1b90830190815283516137dd81600b840160208801613018565b7f3c2f746578743e3c7465787420783d2231302220793d2238302220636c617373600b9290910191820152671e913130b9b2911f60c11b602b820152603301949350505050565b60008351613836818460208801613018565b6503b30b63ab2960d51b9083019081528351613859816006840160208801613018565b6c1e17ba32bc3a1f1e17b9bb339f60991b60069290910191820152601301949350505050565b6f7b226e616d65223a20226c6f636b202360801b815282516000906138ab816010850160208801613018565b7f222c20226465736372697074696f6e223a2022536f6c69646c79206c6f636b736010918401918201527f2c2063616e206265207573656420746f20626f6f73742067617567652079696560308201527f6c64732c20766f7465206f6e20746f6b656e20656d697373696f6e2c20616e6460508201527f207265636569766520627269626573222c2022696d616765223a2022646174616070820152750e9a5b5859d94bdcdd99cade1b5b0ed8985cd94d8d0b60521b609082015283516139798160a6840160208801613018565b61227d60f01b60a6929091019182015260a801949350505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000008152600082516139cc81601d850160208701613018565b91909101601d0192915050565b6000826139e8576139e86133c9565b50069056fe3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f73766722207072657365727665417370656374526174696f3d22784d696e594d696e206d656574222076696577426f783d223020302033353020333530223e3c7374796c653e2e62617365207b2066696c6c3a2077686974653b20666f6e742d66616d696c793a2073657269663b20666f6e742d73697a653a20313470783b207d3c2f7374796c653e3c726563742077696474683d223130302522206865696768743d2231303025222066696c6c3d22626c61636b22202f3e3c7465787420783d2231302220793d2232302220636c6173733d2262617365223e4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212207c29b73852ba33e17e89a47f3d95299395e1ea022dfa4c39d13c68da298da50664736f6c634300080b0033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef00000000000000000000000078876ca8153c64cde8c3f83b64b9d30739831980