[ { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyInitialized", "type": "error" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "DNAlreadyInitialized", "type": "error" }, { "inputs": [], "name": "InsufficientAllowance", "type": "error" }, { "inputs": [], "name": "InsufficientBalance", "type": "error" }, { "inputs": [], "name": "LinkMirrorContractFailed", "type": "error" }, { "inputs": [], "name": "MirrorAddressIsZero", "type": "error" }, { "inputs": [], "name": "NewOwnerIsZeroAddress", "type": "error" }, { "inputs": [], "name": "NoHandoverRequest", "type": "error" }, { "inputs": [], "name": "SenderNotMirror", "type": "error" }, { "inputs": [], "name": "TokenDoesNotExist", "type": "error" }, { "inputs": [], "name": "TotalSupplyOverflow", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "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": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "oldOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "target", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "status", "type": "bool" } ], "name": "SkipNFTSet", "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" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [], "name": "_baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "cancelOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "completeOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "a", "type": "address" } ], "name": "getSkipNFT", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mirrorERC721", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "result", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "ownershipHandoverExpiresAt", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "requestOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "baseURI_", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "skipNFT", "type": "bool" } ], "name": "setSkipNFT", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "payable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040523480156200001157600080fd5b5060405162003199380380620031998339810160408190526200003491620004d4565b6000620000428382620005c7565b506001620000518282620005c7565b506200005d33620000cb565b6000336040516200006e9062000401565b6001600160a01b039091168152602001604051809103906000f0801580156200009b573d6000803e3d6000fd5b509050620000c269d3c21bcecceda1000000620000bb638b78c6d8195490565b8362000108565b50505062000693565b6001600160a01b0316638b78c6d8198190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a35b50565b68a20d6e21d0e52553088054640100000000900463ffffffff16156200014157604051633ab534b960e21b815260040160405180910390fd5b6001600160a01b03821662000169576040516339a84a7b60e01b815260040160405180910390fd5b6200017482620002ac565b805463ffffffff60201b19166401000000001781556001810180546001600160a01b0384166001600160a01b03199091161790558315620002a6576001600160a01b038316620001d757604051633a954ecd60e21b815260040160405180910390fd5b69d3c21bcecceda1000000841115620002035760405163e5cfe95760e01b815260040160405180910390fd5b8054600160601b600160c01b0319166c010000000000000000000000006001600160601b0386160217815560006200023b84620002df565b80546001600160a01b03908116600160a01b6001600160601b038916021782556040518781529192508516906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3620002a48460016200035d565b505b50505050565b630f4599e560005233602052602060006024601c6000855af160016000511416620001055763d125259c6000526004601cfd5b6001600160a01b038116600090815268a20d6e21d0e5255310602052604081208054909168a20d6e21d0e5255308916b0100000000000000000000009004600116900362000357576001833b1562000335576002175b825460ff9091166b0100000000000000000000000260ff60581b199091161782555b50919050565b60006200036a83620002df565b80549091506b0100000000000000000000009004600216151582151514620003b657805460ff6b01000000000000000000000080830482166002189091160260ff60581b199091161781555b826001600160a01b03167fb5a1de456fff688115a4f75380060c23c8532d14ff85f687cc871456d642039383604051620003f4911515815260200190565b60405180910390a2505050565b610d20806200247983390190565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200043757600080fd5b81516001600160401b03808211156200045457620004546200040f565b604051601f8301601f19908116603f011681019082821181831017156200047f576200047f6200040f565b816040528381526020925086838588010111156200049c57600080fd5b600091505b83821015620004c05785820183015181830184015290820190620004a1565b600093810190920192909252949350505050565b60008060408385031215620004e857600080fd5b82516001600160401b03808211156200050057600080fd5b6200050e8683870162000425565b935060208501519150808211156200052557600080fd5b50620005348582860162000425565b9150509250929050565b600181811c908216806200055357607f821691505b6020821081036200035757634e487b7160e01b600052602260045260246000fd5b601f821115620005c257600081815260208120601f850160051c810160208610156200059d5750805b601f850160051c820191505b81811015620005be57828155600101620005a9565b5050505b505050565b81516001600160401b03811115620005e357620005e36200040f565b620005fb81620005f484546200053e565b8462000574565b602080601f8311600181146200063357600084156200061a5750858301515b600019600386901b1c1916600185901b178555620005be565b600085815260208120601f198616915b82811015620006645788860151825594840194600190910190840162000643565b5085821015620006835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b611dd680620006a36000396000f3fe6080604052600436106101395760003560e01c806370a08231116100ab578063a9059cbb1161006f578063a9059cbb14610721578063c87b56dd14610741578063dd62ed3e14610761578063f04e283e146107af578063f2fde38b146107c2578063fee81cf4146107d557610140565b806370a0823114610688578063715018a6146106d6578063743976a0146106de5780638da5cb5b146106f357806395d89b411461070c57610140565b8063274e430b116100fd578063274e430b146105ca5780632a6a935d146105ea578063313ce5671461060a5780634ef41efc1461062657806354d1f13d1461066057806355f804b31461066857610140565b806306fdde0314610510578063095ea7b31461053b57806318160ddd1461056b57806323b872dd146105a257806325692962146105c257610140565b3661014057005b68a20d6e21d0e525530860003560e01c63e985e9c58190036101e65760018201546001600160a01b031633146101895760405163ce5a776b60e01b815260040160405180910390fd5b604436101561019757600080fd5b6004356001600160a01b038181166000908152600385016020908152604080832060243594851684529091529020546101e39060ff166101d85760006101db565b60015b60ff16610808565b50505b80636352211e0361024b5760018201546001600160a01b0316331461021e5760405163ce5a776b60e01b815260040160405180910390fd5b602436101561022c57600080fd5b60043561024961023b82610812565b6001600160a01b0316610808565b505b8063e5eb36c8036102b85760018201546001600160a01b031633146102835760405163ce5a776b60e01b815260040160405180910390fd5b608436101561029157600080fd5b6004356024356044356064356102a984848484610849565b6102b36001610808565b505050505b8063813500fc036103525760018201546001600160a01b031633146102f05760405163ce5a776b60e01b815260040160405180910390fd5b60643610156102fe57600080fd5b6001600160a01b03604435818116600090815268a20d6e21d0e525530b6020908152604080832060043595861684529091529020805460ff191660243515159081179091559061034e6001610808565b5050505b8063d10b6e0c036103b35760018201546001600160a01b0316331461038a5760405163ce5a776b60e01b815260040160405180910390fd5b606436101561039857600080fd5b6004356024356044356103af61023b848484610bdb565b5050505b8063081812fc0361040a5760018201546001600160a01b031633146103eb5760405163ce5a776b60e01b815260040160405180910390fd5b60243610156103f957600080fd5b60043561040861023b82610cb4565b505b8063f5b100ea036104925760018201546001600160a01b031633146104425760405163ce5a776b60e01b815260040160405180910390fd5b602436101561045057600080fd5b60043561049061048b826001600160a01b0316600090815268a20d6e21d0e5255310602052604090205463ffffffff600160801b9091041690565b610808565b505b8063e2c79281036104f95760018201546001600160a01b031633146104ca5760405163ce5a776b60e01b815260040160405180910390fd5b60043610156104d857600080fd5b68a20d6e21d0e5255308546104f990600160401b900463ffffffff16610808565b8063b7a94eb80361050e5761050e6001610808565b005b34801561051c57600080fd5b50610525610d00565b6040516105329190611996565b60405180910390f35b34801561054757600080fd5b5061055b6105563660046119e0565b610d92565b6040519015158152602001610532565b34801561057757600080fd5b5068a20d6e21d0e525530854600160601b90046001600160601b03165b604051908152602001610532565b3480156105ae57600080fd5b5061055b6105bd366004611a0a565b610e08565b61050e610eab565b3480156105d657600080fd5b5061055b6105e5366004611a46565b610efb565b3480156105f657600080fd5b5061050e610605366004611a61565b610f4a565b34801561061657600080fd5b5060405160128152602001610532565b34801561063257600080fd5b5068a20d6e21d0e5255309546001600160a01b03165b6040516001600160a01b039091168152602001610532565b61050e610f57565b34801561067457600080fd5b5061050e610683366004611a83565b610f93565b34801561069457600080fd5b506105946106a3366004611a46565b6001600160a01b0316600090815268a20d6e21d0e52553106020526040902054600160a01b90046001600160601b031690565b61050e610fad565b3480156106ea57600080fd5b50610525610fc1565b3480156106ff57600080fd5b50638b78c6d81954610648565b34801561071857600080fd5b5061052561104f565b34801561072d57600080fd5b5061055b61073c3660046119e0565b61105e565b34801561074d57600080fd5b5061052561075c366004611af5565b611074565b34801561076d57600080fd5b5061059461077c366004611b0e565b6001600160a01b03918216600090815268a20d6e21d0e525530d6020908152604080832093909416825291909152205490565b61050e6107bd366004611a46565b6110d5565b61050e6107d0366004611a46565b611112565b3480156107e157600080fd5b506105946107f0366004611a46565b63389a75e1600c908152600091909152602090205490565b8060005260206000f35b600061081d82611139565b61083a5760405163677510db60e11b815260040160405180910390fd5b61084382611156565b92915050565b68a20d6e21d0e52553086001600160a01b03841661087a57604051633a954ecd60e21b815260040160405180910390fd5b60008160020160006108b6846007016108938860011b90565b600381901c600090815260209290925260409091205460059190911b60e0161c90565b63ffffffff1681526020810191909152604001600020546001600160a01b039081169150861681146108fa5760405162a1148160e81b815260040160405180910390fd5b856001600160a01b0316836001600160a01b03161461097e576001600160a01b03808716600090815260038401602090815260408083209387168352929052205460ff1661097e5760008481526004830160205260409020546001600160a01b0384811691161461097e57604051632ce44b5f60e11b815260040160405180910390fd5b6000610989876111ab565b90506000610996876111ab565b8254909150683635c9adc5dea000009083906014906109c6908490600160a01b90046001600160601b0316611b57565b82546101009290920a6001600160601b0381810219909316918316021790915582546001600160a01b038116683635c9adc5dea00000600160a01b928390048416019092160217825550610a2b60078501600188901b610a26848b611217565b6112ba565b6000868152600485016020908152604080832080546001600160a01b03191690556001600160a01b038b168352600687018252808320855463ffffffff60801b198116600160801b9182900463ffffffff90811660001901908116909202178755631fffffff600382901c168552925282205460059190911b60e0161c6001600160a01b038a166000908152600687016020526040902063ffffffff919091169150610aef90610ae36007880160018b811b01610893565b63ffffffff16836112ba565b8154600163ffffffff600160801b80840482169283019091160263ffffffff60801b19909216919091178355610b4160078701610b2f84600190811b0190565b610a2660078a0160018d811b01610893565b6001600160a01b03891660009081526006870160205260409020610b6690828a6112ba565b610b796007870160018a811b01836112ba565b5050866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea00000604051610bc991815260200190565b60405180910390a35050505050505050565b600068a20d6e21d0e52553088168a20d6e21d0e525530a81610c0a68a20d6e21d0e525530f600189901b610893565b63ffffffff1681526020810191909152604001600020546001600160a01b03908116915084168114610c7e576001600160a01b03808216600090815260038401602090815260408083209388168352929052205460ff16610c7e576040516367d9dca160e11b815260040160405180910390fd5b60008581526004909201602052604090912080546001600160a01b0387166001600160a01b031990911617905590509392505050565b6000610cbf82611139565b610cdc5760405163677510db60e11b815260040160405180910390fd5b50600090815268a20d6e21d0e525530c60205260409020546001600160a01b031690565b606060008054610d0f90611b77565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3b90611b77565b8015610d885780601f10610d5d57610100808354040283529160200191610d88565b820191906000526020600020905b815481529060010190602001808311610d6b57829003601f168201915b5050505050905090565b60008068a20d6e21d0e525530833600081815260058301602090815260408083206001600160a01b038a16808552908352928190208890555187815293945090927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b6001600160a01b038316600090815268a20d6e21d0e525530d6020908152604080832033845290915281205468a20d6e21d0e5255308906000198114610e945780841115610e69576040516313be252b60e01b815260040160405180910390fd5b6001600160a01b03861660009081526005830160209081526040808320338452909152902084820390555b610e9f8686866112ee565b50600195945050505050565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b6001600160a01b038116600090815268a20d6e21d0e5255310602052604081208054600160581b90046001168203610f3757823b5b9392505050565b54600160581b9004600216151592915050565b610f5433826117c0565b50565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b610f9b611850565b6002610fa8828483611c0f565b505050565b610fb5611850565b610fbf600061186b565b565b60028054610fce90611b77565b80601f0160208091040260200160405190810160405280929190818152602001828054610ffa90611b77565b80156110475780601f1061101c57610100808354040283529160200191611047565b820191906000526020600020905b81548152906001019060200180831161102a57829003601f168201915b505050505081565b606060018054610d0f90611b77565b600061106b3384846112ee565b50600192915050565b60606002805461108390611b77565b1590506110bc576002611095836118a9565b6040516020016110a6929190611cd0565b6040516020818303038152906040529050919050565b505060408051602081019091526000815290565b919050565b6110dd611850565b63389a75e1600c52806000526020600c20805442111561110557636f5e88186000526004601cfd5b60009055610f548161186b565b61111a611850565b8060601b61113057637448fbae6000526004601cfd5b610f548161186b565b60008061114583611156565b6001600160a01b0316141592915050565b600068a20d6e21d0e525530868a20d6e21d0e525530a8261118468a20d6e21d0e525530f600187901b610893565b63ffffffff1681526020810191909152604001600020546001600160a01b03169392505050565b6001600160a01b038116600090815268a20d6e21d0e5255310602052604081208054909168a20d6e21d0e525530891600160581b90046001169003611211576001833b156111f7576002175b825460ff909116600160581b0260ff60581b199091161782555b50919050565b8154600160601b900463ffffffff1668a20d6e21d0e525530860008290036112b3578054819060009061124f9063ffffffff16611d67565b825463ffffffff8083166101009490940a848102910219909116179092558554600160601b820263ffffffff60601b199091161786556000908152600283016020526040902080546001600160a01b0386166001600160a01b031990911617905591505b5092915050565b826020528160031c60005260406000206007831660051b815463ffffffff8482841c188116831b8218845550505050505050565b6001600160a01b03821661131557604051633a954ecd60e21b815260040160405180910390fd5b68a20d6e21d0e5255308600061132a856111ab565b90506000611337856111ab565b90506113726040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b825463ffffffff600160801b808304821660808501528454041660a08301526001600160601b03600160a01b90910416604082018190528511156113c957604051631e9acf1760e31b815260040160405180910390fd5b6040810180518690039081905283546001600160601b03808316600160a01b9081026001600160a01b03938416178755855481810483168a0160608701819052909216029116178355608082015161143091683635c9adc5dea00000900480821191030290565b81528154600160581b90046002166000036114a057856001600160a01b0316876001600160a01b03160361146c57805160808201510360a08201525b61149a683635c9adc5dea0000082606001518161148b5761148b611d8a565b048260a0015180821191030290565b60208201525b60006114ea82602001518360000151016040805180820190915260608152600060208201526040805101828152806020018360051b81016040528183528083602001525050919050565b8251909150156115e4576001600160a01b0388166000908152600686016020526040902060808301518351875463ffffffff600160401b808304821684900382160263ffffffff60401b199092169190911789558754918303908116600160801b0263ffffffff60801b199092169190911787555b60001991909101600381901c600090815260208490526040812054919291600584901b60e0161c63ffffffff16905061159e89600701826000806118ed565b600081815260048a016020908152604090912080546001600160a01b0319169055858101805160089390931b60608f901b1760011783529101905280820361155f575050505b602082015115611748576001600160a01b03871660009081526006860160209081526040822060a085015191850151909290820190611623878c611217565b8954602088015163ffffffff60401b19821663ffffffff600160401b80850482169093018116909202178c55895463ffffffff60801b1916600160801b86831602178a55919250683635c9adc5dea00000600160601b82046001600160601b03160491640100000000909104165b6116a28b6007016108938360011b90565b63ffffffff16156116c157600101818111156116bc575060015b611691565b6116cc8686836112ba565b6116e18b6007018285888060010199506118ed565b61170b878e8360008360200151818360081b8560601b171781526020810185602001525050505050565b6001018181111561171a575060015b838503611691578a5463ffffffff9091166401000000000267ffffffff0000000019909116178a5550505050505b805151156117695760018501546117699082906001600160a01b0316611933565b50856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516117af91815260200190565b60405180910390a350505050505050565b60006117cb836111ab565b8054909150600160581b900460021615158215151461180657805460ff600160581b80830482166002189091160260ff60581b199091161781555b826001600160a01b03167fb5a1de456fff688115a4f75380060c23c8532d14ff85f687cc871456d642039383604051611843911515815260200190565b60405180910390a2505050565b638b78c6d819543314610fbf576382b429006000526004601cfd5b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b60606080604051019050602081016040526000815280600019835b928101926030600a8206018453600a9004806118c4575050819003601f19909101908152919050565b8163ffffffff168160201b17846020528360021c60005260406000206003851660061b815467ffffffffffffffff8482841c188116831b82188455505050505050505050565b81516040810363263c69d68152602080820152815160051b604401915060208183601c84016000875af160018251141661196c57600081fd5b50505050565b60005b8381101561198d578181015183820152602001611975565b50506000910152565b60208152600082518060208401526119b5816040850160208701611972565b601f01601f19169190910160400192915050565b80356001600160a01b03811681146110d057600080fd5b600080604083850312156119f357600080fd5b6119fc836119c9565b946020939093013593505050565b600080600060608486031215611a1f57600080fd5b611a28846119c9565b9250611a36602085016119c9565b9150604084013590509250925092565b600060208284031215611a5857600080fd5b610f30826119c9565b600060208284031215611a7357600080fd5b81358015158114610f3057600080fd5b60008060208385031215611a9657600080fd5b823567ffffffffffffffff80821115611aae57600080fd5b818501915085601f830112611ac257600080fd5b813581811115611ad157600080fd5b866020828501011115611ae357600080fd5b60209290920196919550909350505050565b600060208284031215611b0757600080fd5b5035919050565b60008060408385031215611b2157600080fd5b611b2a836119c9565b9150611b38602084016119c9565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b6001600160601b038281168282160390808211156112b3576112b3611b41565b600181811c90821680611b8b57607f821691505b60208210810361121157634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b601f821115610fa857600081815260208120601f850160051c81016020861015611be85750805b601f850160051c820191505b81811015611c0757828155600101611bf4565b505050505050565b67ffffffffffffffff831115611c2757611c27611bab565b611c3b83611c358354611b77565b83611bc1565b6000601f841160018114611c6f5760008515611c575750838201355b600019600387901b1c1916600186901b178355611cc9565b600083815260209020601f19861690835b82811015611ca05786850135825560209485019460019092019101611c80565b5086821015611cbd5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6000808454611cde81611b77565b60018281168015611cf65760018114611d0b57611d3a565b60ff1984168752821515830287019450611d3a565b8860005260208060002060005b85811015611d315781548a820152908401908201611d18565b50505082870194505b505050508351611d4e818360208801611972565b64173539b7b760d91b9101908152600501949350505050565b600063ffffffff808316818103611d8057611d80611b41565b6001019392505050565b634e487b7160e01b600052601260045260246000fdfea26469706673582212202b59e9c0f8723d21ea2b4c38bf0aef1a83ab48d09b5efd33e066d5823c628a3d64736f6c63430008140033608060405234801561001057600080fd5b50604051610d20380380610d2083398101604081905261002f9161005c565b683602298b8c10b0123180546001600160a01b0319166001600160a01b039290921691909117905561008c565b60006020828403121561006e57600080fd5b81516001600160a01b038116811461008557600080fd5b9392505050565b610c858061009b6000396000f3fe60806040526004361061010d5760003560e01c80636cef16e61161009557806397e5311c1161006457806397e5311c14610471578063a22cb46514610486578063b88d4fde146104a6578063c87b56dd146104c6578063e985e9c5146104e65761011f565b80636cef16e61461040157806370a08231146104165780638da5cb5b1461043657806395d89b411461045c5761011f565b806318160ddd116100dc57806318160ddd1461036b57806323b872dd1461038e57806324359879146103ae57806342842e0e146103ce5780636352211e146103e15761011f565b806301ffc9a71461029f57806306fdde03146102f1578063081812fc14610313578063095ea7b31461034b5761011f565b3661011f57341561011d57600080fd5b005b683602298b8c10b0123060003560e01c63263c69d68190036101eb5781546001600160a01b0316331461016557604051631b1e598960e11b815260040160405180910390fd5b602036103d60003e6004356024018036103d60003e602081033560051b81018036103d60003e5b8082146101de5781358060601c816001168260a01b60a81c811583028284027fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600038a450505081602001915061018c565b5050600160005260206000f35b80630f4599e5036102865760018201546001600160a01b0316156102415760018201546001600160a01b03166004356001600160a01b031614610241576040516362cf623d60e11b815260040160405180910390fd5b81546001600160a01b03161561026a57604051635fb2b52360e11b815260040160405180910390fd5b81546001600160a01b0319163317825560016000908152602090f35b604051631e085ca760e11b815260040160405180910390fd5b3480156102ab57600080fd5b506102dc6102ba366004610a10565b6301ffc9a760e09190911c9081146380ac58cd821417635b5e139f9091141790565b60405190151581526020015b60405180910390f35b3480156102fd57600080fd5b50610306610506565b6040516102e89190610a41565b34801561031f57600080fd5b5061033361032e366004610a8f565b61051c565b6040516001600160a01b0390911681526020016102e8565b34801561035757600080fd5b5061011d610366366004610ac4565b610534565b34801561037757600080fd5b506103806105ba565b6040519081526020016102e8565b34801561039a57600080fd5b5061011d6103a9366004610aee565b6105cc565b3480156103ba57600080fd5b506103336103c9366004610a8f565b61065b565b61011d6103dc366004610aee565b61066d565b3480156103ed57600080fd5b506103336103fc366004610a8f565b61069f565b34801561040d57600080fd5b5061011d6106b1565b34801561042257600080fd5b50610380610431366004610b2a565b610764565b34801561044257600080fd5b50683602298b8c10b01232546001600160a01b0316610333565b34801561046857600080fd5b5061030661077f565b34801561047d57600080fd5b50610333610790565b34801561049257600080fd5b5061011d6104a1366004610b45565b6107c5565b3480156104b257600080fd5b5061011d6104c1366004610b81565b610848565b3480156104d257600080fd5b506103066104e1366004610a8f565b6108a3565b3480156104f257600080fd5b506102dc610501366004610c1c565b6108b3565b60606105176306fdde0360006108df565b905090565b600061052e63081812fc83600061093c565b92915050565b600061053e610790565b90508260601b60601c925060405163d10b6e0c600052836020528260405233606052602060006064601c34865af1601f3d111661057e573d6000823e3d81fd5b806040525060006060528183600c5160601c7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600038a4505050565b600061051763e2c7928160008061093c565b60006105d6610790565b90508360601b60601c93508260601b60601c925060405163e5eb36c881528460208201528360408201528260608201523360808201526020816084601c840134865af160018251141661062c573d6000823e3d81fd5b508183857fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600038a450505050565b600061052e632435987983600061093c565b6106788383836105cc565b813b1561069a5761069a83838360405180602001604052806000815250610984565b505050565b600061052e636352211e83600061093c565b6000806106bc610790565b9050638da5cb5b600052602060006004601c845afa601f3d1116156106e457600c5160601c91505b683602298b8c10b0123254683602298b8c10b01230906001600160a01b03908116908416811461075e576002820180546001600160a01b0319166001600160a01b0386811691821790925560405190918316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35b50505050565b600061052e63f5b100ea836001600160a01b0316600061093c565b60606105176395d89b4160006108df565b683602298b8c10b01230546001600160a01b0316806107c257604051632d9523d760e11b815260040160405180910390fd5b90565b60006107cf610790565b90508260601b60601c925060405163813500fc6000528360205282151560405233606052602060006064601c34865af160016000511416610813573d6000823e3d81fd5b83337f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160206040a36040525050600060605250565b6108538585856105cc565b833b1561089c5761089c85858585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061098492505050565b5050505050565b606061052e63c87b56dd836108df565b60006108d663e985e9c5846001600160a01b0316846001600160a01b031661093c565b15159392505050565b606060006108eb610790565b9050604051915083600052826020526000806024601c845afa610911573d6000833e3d82fd5b60206000803e6020600051833e8151602060005101602084013e815160208301016040525092915050565b600080610947610790565b9050604051856000528460205283604052602060006044601c855afa601f3d1116610975573d6000823e3d81fd5b60405250506000519392505050565b60405163150b7a028082523360208301528560601b60601c604083015283606083015260808083015282518060a084015280156109cb578060c08401826020870160045afa505b60208360a48301601c860160008a5af16109ee573d156109ee573d6000843e3d83fd5b508060e01b825114610a085763d1a57ed66000526004601cfd5b505050505050565b600060208284031215610a2257600080fd5b81356001600160e01b031981168114610a3a57600080fd5b9392505050565b600060208083528351808285015260005b81811015610a6e57858101830151858201604001528201610a52565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215610aa157600080fd5b5035919050565b80356001600160a01b0381168114610abf57600080fd5b919050565b60008060408385031215610ad757600080fd5b610ae083610aa8565b946020939093013593505050565b600080600060608486031215610b0357600080fd5b610b0c84610aa8565b9250610b1a60208501610aa8565b9150604084013590509250925092565b600060208284031215610b3c57600080fd5b610a3a82610aa8565b60008060408385031215610b5857600080fd5b610b6183610aa8565b915060208301358015158114610b7657600080fd5b809150509250929050565b600080600080600060808688031215610b9957600080fd5b610ba286610aa8565b9450610bb060208701610aa8565b935060408601359250606086013567ffffffffffffffff80821115610bd457600080fd5b818801915088601f830112610be857600080fd5b813581811115610bf757600080fd5b896020828501011115610c0957600080fd5b9699959850939650602001949392505050565b60008060408385031215610c2f57600080fd5b610c3883610aa8565b9150610c4660208401610aa8565b9050925092905056fea264697066735822122027ab9c96f9ef80650639e7086e57312aa4b8412b8ac8dfed9b0bad45652db40b64736f6c6343000814003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000c436f696e4772616220343034000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074752414234303400000000000000000000000000000000000000000000000000