0 txs
1.5k calls
constructor
constructor()
functions
available
viewfunction available(string cid) view returns (bool)
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
baseTokenURI
viewfunction baseTokenURI() view returns (string)
cyberIdRegistry
viewfunction cyberIdRegistry() view returns (address)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
defaultResolver
viewfunction defaultResolver() view returns (address)
generateCommit
purefunction generateCommit(string cid, address to, bytes32 secret, bytes middlewareData) pure returns (bytes32)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getRoleMember
viewfunction getRoleMember(bytes32 role, uint256 index) view returns (address)
getRoleMemberCount
viewfunction getRoleMemberCount(bytes32 role) view returns (uint256)
getTokenId
purefunction getTokenId(string cid) pure returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
labels
viewfunction labels(uint256) view returns (string)
middleware
viewfunction middleware() view returns (address)
name
viewfunction name() view returns (string)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
paused
viewfunction paused() view returns (bool)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
reverseRegistrar
viewfunction reverseRegistrar() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
timestampOf
viewfunction timestampOf(bytes32) view returns (uint256)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
approve
nonpayablefunction approve(address to, uint256 tokenId)
batchRegister
nonpayablefunction batchRegister(tuple[] params)
burn
nonpayablefunction burn(string cid)
commit
nonpayablefunction commit(bytes32 commitment)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address _cyberIdRegistry, address _defaultResolver, address _reverseRegistrar, string _tokenName, string _tokenSymbol, address _owner)
pause
nonpayablefunction pause()
reclaim
nonpayablefunction reclaim(string cid, address owner)
register
payablefunction register(string cid, address to, bytes32 secret, bytes middlewareData) payable
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setBaseTokenURI
nonpayablefunction setBaseTokenURI(string uri)
setMiddleware
nonpayablefunction setMiddleware(address _middleware, bytes data)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
unpause
nonpayablefunction unpause()
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
BaseTokenURISet
event BaseTokenURISet(string baseTokenURI)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
Burn
event Burn(address indexed from, uint256 indexed tokenId)
Initialized
event Initialized(uint8 version)
MiddlewareSet
event MiddlewareSet(address indexed middleware, bytes data)
Paused
event Paused(address account)
Register
event Register(address indexed from, address indexed to, uint256 indexed tokenId, string cid, uint256 cost)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
Unpaused
event Unpaused(address account)
Upgraded
event Upgraded(address indexed implementation)
errors
No errors.
creation bytecode
0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e7565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516144876200011f60003960008181610dd401528181610e1401528181610ef501528181610f350152610fc401526144876000f3fe60806040526004361061027d5760003560e01c806379911bb61161014f578063b88d4fde116100c1578063dafa1d2d1161007a578063dafa1d2d1461077e578063e985e9c51461079e578063f14fcbc8146107e7578063f25fed4814610807578063f4f20ac014610827578063f6d0aeb11461084857600080fd5b8063b88d4fde146106c9578063c87b56dd146106e9578063ca15c87314610709578063ca2467f314610729578063d547741f14610749578063d547cfb71461076957600080fd5b806391d148541161011357806391d148541461061f57806395d89b411461063f578063a217fddf14610654578063a22cb46514610669578063a5b81fdf14610689578063aeb8ce9b146106a957600080fd5b806379911bb61461058857806380869853146105a8578063828eab0e146105c95780638456cb59146105ea5780639010d07c146105ff57600080fd5b80632f2ff15d116101f35780634f1ef286116101ac5780634f1ef286146104d957806352d1902d146104ec5780635c975abb146105015780636352211e1461051a57806370a082311461053a57806376fa0b8a1461055a57600080fd5b80632f2ff15d1461042457806330176e131461044457806336568abe146104645780633659cfe6146104845780633f4ba83a146104a457806342842e0e146104b957600080fd5b806318160ddd1161024557806318160ddd146103535780631e7663bc1461037357806323b872dd14610393578063248a9ca3146103b357806324f82a99146103e35780632ae639471461040457600080fd5b806301ffc9a71461028257806306fdde03146102b7578063081812fc146102d9578063095ea7b3146103115780630995509014610333575b600080fd5b34801561028e57600080fd5b506102a261029d3660046136c4565b61085b565b60405190151581526020015b60405180910390f35b3480156102c357600080fd5b506102cc61087b565b6040516102ae9190613739565b3480156102e557600080fd5b506102f96102f436600461374c565b61090d565b6040516001600160a01b0390911681526020016102ae565b34801561031d57600080fd5b5061033161032c36600461377a565b610934565b005b34801561033f57600080fd5b5061033161034e3660046137ee565b610a4e565b34801561035f57600080fd5b50610197545b6040519081526020016102ae565b34801561037f57600080fd5b5061036561038e366004613842565b610ba2565b34801561039f57600080fd5b506103316103ae366004613883565b610c06565b3480156103bf57600080fd5b506103656103ce36600461374c565b60009081526097602052604090206001015490565b3480156103ef57600080fd5b50610191546102f9906001600160a01b031681565b34801561041057600080fd5b5061036561041f3660046138c4565b610c35565b34801561043057600080fd5b5061033161043f366004613951565b610c8c565b34801561045057600080fd5b5061033161045f366004613842565b610cb1565b34801561047057600080fd5b5061033161047f366004613951565b610d4c565b34801561049057600080fd5b5061033161049f366004613981565b610dca565b3480156104b057600080fd5b50610331610ea9565b3480156104c557600080fd5b506103316104d4366004613883565b610ebc565b6103316104e7366004613a40565b610eeb565b3480156104f857600080fd5b50610365610fb7565b34801561050d57600080fd5b5061015f5460ff166102a2565b34801561052657600080fd5b506102f961053536600461374c565b61106a565b34801561054657600080fd5b50610365610555366004613981565b6110ca565b34801561056657600080fd5b5061036561057536600461374c565b6101956020526000908152604090205481565b34801561059457600080fd5b506103316105a3366004613a8f565b611150565b3480156105b457600080fd5b50610192546102f9906001600160a01b031681565b3480156105d557600080fd5b50610193546102f9906001600160a01b031681565b3480156105f657600080fd5b50610331611266565b34801561060b57600080fd5b506102f961061a366004613b03565b611279565b34801561062b57600080fd5b506102a261063a366004613951565b611298565b34801561064b57600080fd5b506102cc6112c3565b34801561066057600080fd5b50610365600081565b34801561067557600080fd5b50610331610684366004613b33565b6112d2565b34801561069557600080fd5b506103316106a4366004613b61565b6112dd565b3480156106b557600080fd5b506102a26106c4366004613842565b6114ca565b3480156106d557600080fd5b506103316106e4366004613c1b565b61158f565b3480156106f557600080fd5b506102cc61070436600461374c565b6115bf565b34801561071557600080fd5b5061036561072436600461374c565b61164c565b34801561073557600080fd5b50610331610744366004613c86565b611663565b34801561075557600080fd5b50610331610764366004613951565b611741565b34801561077557600080fd5b506102cc611766565b34801561078a57600080fd5b50610331610799366004613842565b6117f5565b3480156107aa57600080fd5b506102a26107b9366004613cdc565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b3480156107f357600080fd5b5061033161080236600461374c565b611897565b34801561081357600080fd5b506102cc61082236600461374c565b6118fe565b34801561083357600080fd5b50610194546102f9906001600160a01b031681565b6103316108563660046138c4565b611918565b600061086682611bac565b80610875575061087582611bd1565b92915050565b60606065805461088a90613d0a565b80601f01602080910402602001604051908101604052809291908181526020018280546108b690613d0a565b80156109035780601f106108d857610100808354040283529160200191610903565b820191906000526020600020905b8154815290600101906020018083116108e657829003601f168201915b5050505050905090565b600061091882611c21565b506000908152606960205260409020546001600160a01b031690565b600061093f8261106a565b9050806001600160a01b0316836001600160a01b0316036109b15760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806109cd57506109cd81336107b9565b610a3f5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016109a8565b610a498383611c80565b505050565b60408051808201909152600d81526c4f50455241544f525f524f4c4560981b6020909101527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610a9d81611cee565b6001600160a01b038416610ae55760405162461bcd60e51b815260206004820152600f60248201526e5a45524f5f4d4944444c455741524560881b60448201526064016109a8565b61019480546001600160a01b0319166001600160a01b0386169081179091556040516310a8366d60e21b81526342a0d9b490610b279086908690600401613d6d565b600060405180830381600087803b158015610b4157600080fd5b505af1158015610b55573d6000803e3d6000fd5b50505050836001600160a01b03167f317bc731cea09952e6d579c406d69585ee06139f2f6b596f08507a771906f34e8484604051610b94929190613d6d565b60405180910390a250505050565b6000806000805160206143eb83398151915260001b8484604051610bc7929190613d81565b604051908190038120610be69291602001918252602082015260400190565b60408051808303601f190181529190528051602090910120949350505050565b61015f5460ff1615610c2a5760405162461bcd60e51b81526004016109a890613d91565b610a49838383611cf8565b6000808787604051610c48929190613d81565b6040519081900381209150610c699082908890889088908890602001613dbf565b604051602081830303815290604052805190602001209150509695505050505050565b600082815260976020526040902060010154610ca781611cee565b610a498383611d29565b60408051808201909152600d81526c4f50455241544f525f524f4c4560981b6020909101527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610d0081611cee565b610d0d61019684846135a1565b507f2e9b34e5ec7377754a85ec13c1e9a442a00db0c46dbdefbb143dd0371fd20c1c8383604051610d3f929190613d6d565b60405180910390a1505050565b6001600160a01b0381163314610dbc5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016109a8565b610dc68282611d4b565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610e125760405162461bcd60e51b81526004016109a890613df9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e5b60008051602061440b833981519152546001600160a01b031690565b6001600160a01b031614610e815760405162461bcd60e51b81526004016109a890613e45565b610e8a81611d6d565b60408051600080825260208201909252610ea691839190611db0565b50565b6000610eb481611cee565b610ea6611f1b565b61015f5460ff1615610ee05760405162461bcd60e51b81526004016109a890613d91565b610a49838383611f6e565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610f335760405162461bcd60e51b81526004016109a890613df9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610f7c60008051602061440b833981519152546001600160a01b031690565b6001600160a01b031614610fa25760405162461bcd60e51b81526004016109a890613e45565b610fab82611d6d565b610dc682826001611db0565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110575760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016109a8565b5060008051602061440b83398151915290565b6000818152606760205260408120546001600160a01b0316806108755760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109a8565b60006001600160a01b0382166111345760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016109a8565b506001600160a01b031660009081526068602052604090205490565b60408051808201909152600d81526c4f50455241544f525f524f4c4560981b6020909101527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961119f81611cee565b60005b828110156112605761124e8484838181106111bf576111bf613e91565b90506020028101906111d19190613ea7565b6111db9080613ec7565b8686858181106111ed576111ed613e91565b90506020028101906111ff9190613ea7565b611210906040810190602001613981565b87878681811061122257611222613e91565b90506020028101906112349190613ea7565b611245906060810190604001613981565b60016000611f89565b8061125881613f23565b9150506111a2565b50505050565b600061127181611cee565b610ea66121af565b600082815260c96020526040812061129190836121ed565b9392505050565b60009182526097602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606066805461088a90613d0a565b610dc63383836121f9565b600054610100900460ff16158080156112fd5750600054600160ff909116105b806113175750303b158015611317575060005460ff166001145b61137a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016109a8565b6000805460ff19166001179055801561139d576000805461ff0019166101001790555b61019180546001600160a01b03808c166001600160a01b03199283161790925561019280548a84169083161790556101938054928b1692909116919091179055604080516020601f880181900481028201810190925286815261144e91889088908190840183828082843760009201919091525050604080516020601f8a0181900481028201810190925288815292508891508790819084018382808284376000920191909152506122c792505050565b6114566122f8565b61145e6122f8565b611466612321565b61146e6121af565b611479600083611d29565b80156114bf576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b610194546000906001600160a01b031661151b5760405162461bcd60e51b815260206004820152601260248201527113525111131155d0549157d393d517d4d15560721b60448201526064016109a8565b61019454604051633d61f37560e11b81526001600160a01b0390911690637ac3e6ea9061154e9086908690600401613d6d565b602060405180830381865afa15801561156b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112919190613f3c565b61015f5460ff16156115b35760405162461bcd60e51b81526004016109a890613d91565b61126084848484612350565b6000818152606760205260409020546060906001600160a01b03166116195760405162461bcd60e51b815260206004820152601060248201526f1253959053125117d513d2d15397d25160821b60448201526064016109a8565b61019661162583612382565b604051602001611636929190613ff1565b6040516020818303038152906040529050919050565b600081815260c96020526040812061087590612445565b600061166f8484610ba2565b905061167b338261244f565b61168457600080fd5b610191546040516001600160a01b03909116906306ab5923906000805160206143eb833981519152906116ba9088908890613d81565b60405190819003812060e084901b6001600160e01b0319168252600482019290925260248101919091526001600160a01b03851660448201526064015b6020604051808303816000875af1158015611716573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173a9190614016565b5050505050565b60008281526097602052604090206001015461175c81611cee565b610a498383611d4b565b610196805461177490613d0a565b80601f01602080910402602001604051908101604052809291908181526020018280546117a090613d0a565b80156117ed5780601f106117c2576101008083540402835291602001916117ed565b820191906000526020600020905b8154815290600101906020018083116117d057829003601f168201915b505050505081565b60006118018383610ba2565b905061180d338261244f565b6118485760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064016109a8565b611851816124ce565b610197600081546118619061402f565b90915550604051819033907fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca590600090a3505050565b60008181526101956020526040902054620151800142116118ea5760405162461bcd60e51b815260206004820152600d60248201526c434f4d4d49545f5245504c415960981b60448201526064016109a8565b600090815261019560205260409020429055565b610198602052600090815260409020805461177490613d0a565b610194546001600160a01b03166119665760405162461bcd60e51b815260206004820152601260248201527113525111131155d0549157d393d517d4d15560721b60448201526064016109a8565b61019460009054906101000a90046001600160a01b03166001600160a01b031663f1ebaa666040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119de9190613f3c565b611aa35760006119f2878787878787610c35565b60008181526101956020526040902054909150620151808101421115611a4a5760405162461bcd60e51b815260206004820152600d60248201526c1393d517d0d3d3535255151151609a1b60448201526064016109a8565b603c81014211611a915760405162461bcd60e51b815260206004820152601260248201527152454749535445525f544f4f5f515549434b60701b60448201526064016109a8565b50600090815261019560205260408120555b610194546040805160608101825233815281516020601f8a018190048102820181019093528881526000936001600160a01b031692633da6aaed923492909180830191908d908d90819084018382808284376000920191909152505050908252506001600160a01b038a166020909101526040516001600160e01b031960e085901b168152611b39919088908890600401614046565b60206040518083038185885af1158015611b57573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b7c9190614016565b61019354909150611ba3908890889088906001600160a01b03908116908216331486611f89565b50505050505050565b60006001600160e01b03198216635a05180f60e01b148061087557506108758261256d565b60006001600160e01b031982166380ac58cd60e01b1480611c0257506001600160e01b03198216635b5e139f60e01b145b8061087557506301ffc9a760e01b6001600160e01b0319831614610875565b6000818152606760205260409020546001600160a01b0316610ea65760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016109a8565b600081815260696020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611cb58261106a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b610ea68133612592565b611d02338261244f565b611d1e5760405162461bcd60e51b81526004016109a8906140a0565b610a498383836125eb565b611d338282612757565b600082815260c960205260409020610a4990826127dd565b611d5582826127f2565b600082815260c960205260409020610a499082612859565b611d78600033611298565b610ea65760405162461bcd60e51b81526020600482015260096024820152682727aa2fa7aba722a960b91b60448201526064016109a8565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611de357610a498361286e565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611e3d575060408051601f3d908101601f19168201909252611e3a91810190614016565b60015b611ea05760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016109a8565b60008051602061440b8339815191528114611f0f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016109a8565b50610a4983838361290a565b611f2361292f565b61015f805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b610a498383836040518060200160405280600081525061158f565b611f9386866114ca565b611fd45760405162461bcd60e51b81526020600482015260126024820152714e414d455f4e4f545f415641494c41424c4560701b60448201526064016109a8565b6001600160a01b038316611ff257610193546001600160a01b031692505b60008686604051612004929190613d81565b604051908190038120610191546305ef2c7f60e41b83529092506001600160a01b031690635ef2c7f090612053906000805160206143eb8339815191529085908a908a906000906004016140ed565b600060405180830381600087803b15801561206d57600080fd5b505af1158015612081573d6000803e3d6000fd5b5050604080516000805160206143eb833981519152602082015290810184905260009250606001905060408051601f1981840301815291815281516020928301206000818152610198909352912090915081906120df908a8a6135a1565b506120eb868389612979565b84156121345761213489898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508b91506129ed9050565b61213e8782612b35565b610197805490600061214f83613f23565b919050555080876001600160a01b0316336001600160a01b03167fa50d98082663c2b716ab4f8b6b2a51fcaed7eae222cd3d74b19de4691ede728a8c8c8960405161219c93929190614122565b60405180910390a4505050505050505050565b6121b7612b4f565b61015f805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611f513390565b60006112918383612b96565b816001600160a01b0316836001600160a01b03160361225a5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109a8565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054610100900460ff166122ee5760405162461bcd60e51b81526004016109a890614146565b610dc68282612bc0565b600054610100900460ff1661231f5760405162461bcd60e51b81526004016109a890614146565b565b600054610100900460ff166123485760405162461bcd60e51b81526004016109a890614146565b61231f612c0e565b61235a338361244f565b6123765760405162461bcd60e51b81526004016109a8906140a0565b61126084848484612c42565b604080516080810191829052607e8101919083906f181899199a1a9b1b9c1cb0b131b232b360811b600f83161a90607f01536f181899199a1a9b1b9c1cb0b131b232b360811b600f8260041c161a835360081c5b8015612427576001198301926f181899199a1a9b1b9c1cb0b131b232b360811b600f83161a9060001901536f181899199a1a9b1b9c1cb0b131b232b360811b600f8260041c161a835360081c6123d6565b50613078601f19830152819003600201602119909101908152919050565b6000610875825490565b60008061245b8361106a565b9050806001600160a01b0316846001600160a01b031614806124a257506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b806124c65750836001600160a01b03166124bb8461090d565b6001600160a01b0316145b949350505050565b60006124d98261106a565b90506124e48261106a565b600083815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526068845282852080546000190190558785526067909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a4610dc6816000846001612c75565b60006001600160e01b03198216637965db0b60e01b1480610875575061087582611bd1565b61259c8282611298565b610dc6576125a981612e6e565b6125b4836020612e80565b6040516020016125c5929190614191565b60408051601f198184030181529082905262461bcd60e51b82526109a891600401613739565b826001600160a01b03166125fe8261106a565b6001600160a01b0316146126245760405162461bcd60e51b81526004016109a890614206565b6001600160a01b0382166126865760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109a8565b826001600160a01b03166126998261106a565b6001600160a01b0316146126bf5760405162461bcd60e51b81526004016109a890614206565b600081815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260688552838620805460001901905590871680865283862080546001019055868652606790945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4610a498383836001612c75565b6127618282611298565b610dc65760008281526097602090815260408083206001600160a01b03851684529091529020805460ff191660011790556127993390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000611291836001600160a01b03841661301b565b6127fc8282611298565b15610dc65760008281526097602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000611291836001600160a01b03841661306a565b6001600160a01b0381163b6128db5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016109a8565b60008051602061440b83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6129138361315d565b6000825111806129205750805b15610a4957611260838361319d565b61015f5460ff1661231f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016109a8565b610193546001600160a01b0390811690841603610a495760405162d5fa2b60e81b8152600481018390526001600160a01b03828116602483015284169063d5fa2b0090604401600060405180830381600087803b1580156129d957600080fd5b505af1158015611ba3573d6000803e3d6000fd5b6101915461019254604051632ffef98760e21b81526001600160a01b0384811660048301526000938116926302571be39291169063bffbe61c90602401602060405180830381865afa158015612a47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6b9190614016565b6040518263ffffffff1660e01b8152600401612a8991815260200190565b602060405180830381865afa158015612aa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aca919061424b565b90506001600160a01b03811661126057610192546040516001600160a01b0390911690637a806d6b90849081908790612b07908a90602001614268565b6040516020818303038152906040526040518563ffffffff1660e01b81526004016116f79493929190614292565b610dc68282604051806020016040528060008152506131c2565b61015f5460ff161561231f5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016109a8565b6000826000018281548110612bad57612bad613e91565b9060005260206000200154905092915050565b600054610100900460ff16612be75760405162461bcd60e51b81526004016109a890614146565b8151612bfa906065906020850190613625565b508051610a49906066906020840190613625565b600054610100900460ff16612c355760405162461bcd60e51b81526004016109a890614146565b61015f805460ff19169055565b612c4d8484846125eb565b612c59848484846131f5565b6112605760405162461bcd60e51b81526004016109a8906142c6565b6001600160a01b038416156112605761019154604051630178b8bf60e01b8152600481018490526000916001600160a01b031690630178b8bf90602401602060405180830381865afa158015612ccf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf3919061424b565b610193549091506001600160a01b0390811690821603612dcf5761019154600084815261019860205260409081902090516001600160a01b0390921691635ef2c7f0916000805160206143eb83398151915291612d509190614318565b604051908190038120610193546001600160e01b031960e086901b168352612d8a93928a916001600160a01b0316906000906004016140ed565b600060405180830381600087803b158015612da457600080fd5b505af1158015612db8573d6000803e3d6000fd5b50505050612dca818460001b86612979565b61173a565b61019154600084815261019860205260409081902090516001600160a01b0390921691635ef2c7f0916000805160206143eb83398151915291612e129190614318565b6040519081900381206001600160e01b031960e085901b168252612e409291899060009081906004016140ed565b600060405180830381600087803b158015612e5a57600080fd5b505af11580156114bf573d6000803e3d6000fd5b60606108756001600160a01b03831660145b60606000612e8f836002614324565b612e9a906002614343565b6001600160401b03811115612eb157612eb161399e565b6040519080825280601f01601f191660200182016040528015612edb576020820181803683370190505b509050600360fc1b81600081518110612ef657612ef6613e91565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612f2557612f25613e91565b60200101906001600160f81b031916908160001a9053506000612f49846002614324565b612f54906001614343565b90505b6001811115612fcc576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612f8857612f88613e91565b1a60f81b828281518110612f9e57612f9e613e91565b60200101906001600160f81b031916908160001a90535060049490941c93612fc58161402f565b9050612f57565b5083156112915760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016109a8565b600081815260018301602052604081205461306257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610875565b506000610875565b6000818152600183016020526040812054801561315357600061308e60018361435b565b85549091506000906130a29060019061435b565b90508181146131075760008660000182815481106130c2576130c2613e91565b90600052602060002001549050808760000184815481106130e5576130e5613e91565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061311857613118614372565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610875565b6000915050610875565b6131668161286e565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611291838360405180606001604052806027815260200161442b602791396132f6565b6131cc838361336e565b6131d960008484846131f5565b610a495760405162461bcd60e51b81526004016109a8906142c6565b60006001600160a01b0384163b156132eb57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290613239903390899088908890600401614388565b6020604051808303816000875af1925050508015613274575060408051601f3d908101601f19168201909252613271918101906143bb565b60015b6132d1573d8080156132a2576040519150601f19603f3d011682016040523d82523d6000602084013e6132a7565b606091505b5080516000036132c95760405162461bcd60e51b81526004016109a8906142c6565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506124c6565b506001949350505050565b6060600080856001600160a01b03168560405161331391906143d8565b600060405180830381855af49150503d806000811461334e576040519150601f19603f3d011682016040523d82523d6000602084013e613353565b606091505b509150915061336486838387613503565b9695505050505050565b6001600160a01b0382166133c45760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109a8565b6000818152606760205260409020546001600160a01b0316156134295760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109a8565b6000818152606760205260409020546001600160a01b03161561348e5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109a8565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4610dc6600083836001612c75565b6060831561357257825160000361356b576001600160a01b0385163b61356b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109a8565b50816124c6565b6124c683838151156135875781518083602001fd5b8060405162461bcd60e51b81526004016109a89190613739565b8280546135ad90613d0a565b90600052602060002090601f0160209004810192826135cf5760008555613615565b82601f106135e85782800160ff19823516178555613615565b82800160010185558215613615579182015b828111156136155782358255916020019190600101906135fa565b50613621929150613699565b5090565b82805461363190613d0a565b90600052602060002090601f0160209004810192826136535760008555613615565b82601f1061366c57805160ff1916838001178555613615565b82800160010185558215613615579182015b8281111561361557825182559160200191906001019061367e565b5b80821115613621576000815560010161369a565b6001600160e01b031981168114610ea657600080fd5b6000602082840312156136d657600080fd5b8135611291816136ae565b60005b838110156136fc5781810151838201526020016136e4565b838111156112605750506000910152565b600081518084526137258160208601602086016136e1565b601f01601f19169290920160200192915050565b602081526000611291602083018461370d565b60006020828403121561375e57600080fd5b5035919050565b6001600160a01b0381168114610ea657600080fd5b6000806040838503121561378d57600080fd5b823561379881613765565b946020939093013593505050565b60008083601f8401126137b857600080fd5b5081356001600160401b038111156137cf57600080fd5b6020830191508360208285010111156137e757600080fd5b9250929050565b60008060006040848603121561380357600080fd5b833561380e81613765565b925060208401356001600160401b0381111561382957600080fd5b613835868287016137a6565b9497909650939450505050565b6000806020838503121561385557600080fd5b82356001600160401b0381111561386b57600080fd5b613877858286016137a6565b90969095509350505050565b60008060006060848603121561389857600080fd5b83356138a381613765565b925060208401356138b381613765565b929592945050506040919091013590565b600080600080600080608087890312156138dd57600080fd5b86356001600160401b03808211156138f457600080fd5b6139008a838b016137a6565b90985096506020890135915061391582613765565b909450604088013593506060880135908082111561393257600080fd5b5061393f89828a016137a6565b979a9699509497509295939492505050565b6000806040838503121561396457600080fd5b82359150602083013561397681613765565b809150509250929050565b60006020828403121561399357600080fd5b813561129181613765565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126139c557600080fd5b81356001600160401b03808211156139df576139df61399e565b604051601f8301601f19908116603f01168101908282118183101715613a0757613a0761399e565b81604052838152866020858801011115613a2057600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060408385031215613a5357600080fd5b8235613a5e81613765565b915060208301356001600160401b03811115613a7957600080fd5b613a85858286016139b4565b9150509250929050565b60008060208385031215613aa257600080fd5b82356001600160401b0380821115613ab957600080fd5b818501915085601f830112613acd57600080fd5b813581811115613adc57600080fd5b8660208260051b8501011115613af157600080fd5b60209290920196919550909350505050565b60008060408385031215613b1657600080fd5b50508035926020909101359150565b8015158114610ea657600080fd5b60008060408385031215613b4657600080fd5b8235613b5181613765565b9150602083013561397681613b25565b60008060008060008060008060c0898b031215613b7d57600080fd5b8835613b8881613765565b97506020890135613b9881613765565b96506040890135613ba881613765565b955060608901356001600160401b0380821115613bc457600080fd5b613bd08c838d016137a6565b909750955060808b0135915080821115613be957600080fd5b50613bf68b828c016137a6565b90945092505060a0890135613c0a81613765565b809150509295985092959890939650565b60008060008060808587031215613c3157600080fd5b8435613c3c81613765565b93506020850135613c4c81613765565b92506040850135915060608501356001600160401b03811115613c6e57600080fd5b613c7a878288016139b4565b91505092959194509250565b600080600060408486031215613c9b57600080fd5b83356001600160401b03811115613cb157600080fd5b613cbd868287016137a6565b9094509250506020840135613cd181613765565b809150509250925092565b60008060408385031215613cef57600080fd5b8235613cfa81613765565b9150602083013561397681613765565b600181811c90821680613d1e57607f821691505b602082108103613d3e57634e487b7160e01b600052602260045260246000fd5b50919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260006124c6602083018486613d44565b8183823760009101908152919050565b6020808252601490820152731514905394d1915497d393d517d0531313d5d15160621b604082015260600190565b8581526bffffffffffffffffffffffff198560601b1660208201528360348201528183605483013760009101605401908152949350505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008235605e19833603018112613ebd57600080fd5b9190910192915050565b6000808335601e19843603018112613ede57600080fd5b8301803591506001600160401b03821115613ef857600080fd5b6020019150368190038213156137e757600080fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613f3557613f35613f0d565b5060010190565b600060208284031215613f4e57600080fd5b815161129181613b25565b8054600090600181811c9080831680613f7357607f831692505b60208084108203613f9457634e487b7160e01b600052602260045260246000fd5b818015613fa85760018114613fb957613fe5565b60ff19861689528489019650613fe5565b876000528160002060005b86811015613fdd5781548b820152908501908301613fc4565b505084890196505b50505050505092915050565b6000613ffd8285613f59565b835161400d8183602088016136e1565b01949350505050565b60006020828403121561402857600080fd5b5051919050565b60008161403e5761403e613f0d565b506000190190565b60408152600060018060a01b03808651166040840152602086015160608085015261407460a085018261370d565b90508160408801511660808501528381036020850152614095818688613d44565b979650505050505050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b94855260208501939093526001600160a01b0391821660408501521660608301526001600160401b0316608082015260a00190565b604081526000614136604083018587613d44565b9050826020830152949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516141c98160178501602088016136e1565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516141fa8160288401602088016136e1565b01602801949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60006020828403121561425d57600080fd5b815161129181613765565b6000825161427a8184602087016136e1565b651731bcb132b960d11b920191825250600601919050565b6001600160a01b0385811682528481166020830152831660408201526080606082018190526000906133649083018461370d565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60006112918284613f59565b600081600019048311821515161561433e5761433e613f0d565b500290565b6000821982111561435657614356613f0d565b500190565b60008282101561436d5761436d613f0d565b500390565b634e487b7160e01b600052603160045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906133649083018461370d565b6000602082840312156143cd57600080fd5b8151611291816136ae565b60008251613ebd8184602087016136e156fe085ce9dbd6bf88d21613576ea20ed9c2c0f37a9f4d3608bc0d69f735e4d2d146360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ef06600660975d2370f6c4f6669c6c8f23e38394f8286725a9c4a13f6d7ed99a64736f6c634300080e0033