0 txs
1 call
constructor
constructor()
functions
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getTokenItemID
viewfunction getTokenItemID(uint256 _tokenId) view returns (uint256)
getTransferValidationFunction
purefunction getTransferValidationFunction() pure returns (bytes4, bool)
getTransferValidator
viewfunction getTransferValidator() view returns (address)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
isBlocklisted
viewfunction isBlocklisted(address _user) view returns (bool)
isTokenRecentlyTransferred
viewfunction isTokenRecentlyTransferred(uint256 _tokenId) view returns (bool)
isWhitelisted
viewfunction isWhitelisted(address _marketplace) view returns (bool)
lockDuration
viewfunction lockDuration() view returns (uint64)
MANAGER_ROLE
viewfunction MANAGER_ROLE() view returns (bytes32)
name
viewfunction name() view returns (string)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
paused
viewfunction paused() view returns (bool)
PAUSER_ROLE
viewfunction PAUSER_ROLE() view returns (bytes32)
royaltyInfo
viewfunction royaltyInfo(uint256 tokenId, uint256 salePrice) view returns (address receiver, uint256 amount)
safeOwnerOf
viewfunction safeOwnerOf(uint256 _tokenId) view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 _interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tcgBaseURI
viewfunction tcgBaseURI() view returns (string)
tokenURI
viewfunction tokenURI(uint256 _tokenId) view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
UPGRADER_ROLE
viewfunction UPGRADER_ROLE() view returns (bytes32)
approve
nonpayablefunction approve(address to, uint256 tokenId)
batchBurn
nonpayablefunction batchBurn(uint256[] _tokenIds)
batchBurnFrom
nonpayablefunction batchBurnFrom(address _owner, uint256[] _tokenIds)
batchMigrate
nonpayablefunction batchMigrate(address[] _receivers, uint256[] _itemIds, uint256[] _userItemIds)
batchMint
nonpayablefunction batchMint(address[] _receivers, uint256[] _itemIds)
bridgeMint
nonpayablefunction bridgeMint(address _receiver, uint256 _tokenId, uint256 _itemId)
burn
nonpayablefunction burn(uint256 _tokenId)
burnFrom
nonpayablefunction burnFrom(address _owner, uint256 _tokenId)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address _manager, address _pauser, address _upgrader, address _royaltyReceiver, address _initialValidator, string _name, string _symbol, uint64 _lockDuration)
migrate
nonpayablefunction migrate(address _receiver, uint256 _itemId, uint256 _userItemId)
mint
nonpayablefunction mint(address _receiver, uint256 _itemId) returns (uint256)
pause
nonpayablefunction pause()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
resetTokenRoyalty
nonpayablefunction resetTokenRoyalty(uint256 tokenId)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
safeBatchTransfer
nonpayablefunction safeBatchTransfer(address[] _receivers, uint256[] _tokenIds)
safeTransfer
nonpayablefunction safeTransfer(address _receiver, uint256 _tokenId)
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)
setBaseURI
nonpayablefunction setBaseURI(string _newURI)
setRoyaltyInfo
nonpayablefunction setRoyaltyInfo(address receiver, uint96 feeNumerator)
setTokenRoyalty
nonpayablefunction setTokenRoyalty(uint256 tokenId, address receiver, uint96 feeNumerator)
setTransferValidator
nonpayablefunction setTransferValidator(address validator)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
unpause
nonpayablefunction unpause()
updateBlockListStatus
nonpayablefunction updateBlockListStatus(address _user, bool _isBlocked)
updateLockDuration
nonpayablefunction updateLockDuration(uint64 _lockDuration)
updateWhitelist
nonpayablefunction updateWhitelist(address _marketplaceAddress, bool _isWhitelisted)
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
BatchMigrated
event BatchMigrated(address[] receivers, uint256[] tokenIds, uint256[] itemIds, uint256[] userItemIds, uint64 timestamp)
BatchMinted
event BatchMinted(address[] receivers, uint256[] tokenIds, uint256[] itemIds, uint64 timestamp)
BatchTransferred
event BatchTransferred(address[] receivers, uint256[] tokenIds, uint64 timestamp)
BlocklistStatusUpdated
event BlocklistStatusUpdated(address indexed user, bool isBlocked)
Burned
event Burned(address indexed owner, uint256 token_id, uint64 timestamp)
Initialized
event Initialized(uint64 version)
MarketplaceStatusUpdate
event MarketplaceStatusUpdate(address indexed marketplaceAddress, bool status)
Migrated
event Migrated(address receiver, uint256 tokenId, uint256 itemId, uint256 userItemId, uint64 timestamp)
Minted
event Minted(address indexed receiver, uint256 indexed tokenId, uint256 indexed itemId, uint64 timestamp)
Paused
event Paused(address account)
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)
TransferValidatorUpdated
event TransferValidatorUpdated(address oldValidator, address newValidator)
Unpaused
event Unpaused(address account)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
EnforcedPause
error EnforcedPause()
ERC2981InvalidDefaultRoyalty
error ERC2981InvalidDefaultRoyalty(uint256 numerator, uint256 denominator)
ERC2981InvalidDefaultRoyaltyReceiver
error ERC2981InvalidDefaultRoyaltyReceiver(address receiver)
ERC2981InvalidTokenRoyalty
error ERC2981InvalidTokenRoyalty(uint256 tokenId, uint256 numerator, uint256 denominator)
ERC2981InvalidTokenRoyaltyReceiver
error ERC2981InvalidTokenRoyaltyReceiver(uint256 tokenId, address receiver)
ERC721IncorrectOwner
error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner)
ERC721InsufficientApproval
error ERC721InsufficientApproval(address operator, uint256 tokenId)
ERC721InvalidApprover
error ERC721InvalidApprover(address approver)
ERC721InvalidOperator
error ERC721InvalidOperator(address operator)
ERC721InvalidOwner
error ERC721InvalidOwner(address owner)
ERC721InvalidReceiver
error ERC721InvalidReceiver(address receiver)
ERC721InvalidSender
error ERC721InvalidSender(address sender)
ERC721NonexistentToken
error ERC721NonexistentToken(uint256 tokenId)
ErrorAddressZero
error ErrorAddressZero()
ErrorBlockedAddress
error ErrorBlockedAddress()
ErrorNotTokenOwner
error ErrorNotTokenOwner()
ErrorSameValue
error ErrorSameValue()
ErrorTokenRecentlyTransferred
error ErrorTokenRecentlyTransferred(uint256 itemId, uint256 unlockTime)
ErrorUnequalArrayLengths
error ErrorUnequalArrayLengths(uint256 _array1Length, uint256 _array2Length)
ExpectedPause
error ExpectedPause()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b613b4f80620000e66000396000f3fe608060405234801561001057600080fd5b50600436106103785760003560e01c8063684c655a116101d3578063a9fc664e11610104578063e63ab1e9116100a2578063f24729651161007c578063f2472965146107d7578063f310f60e146107ea578063f72c0d8b146107fd578063fc22d0e51461082457600080fd5b8063e63ab1e91461079a578063e985e9c5146107af578063ec87621c146107c257600080fd5b8063c87b56dd116100de578063c87b56dd1461074e578063ce97419314610761578063d547741f14610774578063dc8e92ea1461078757600080fd5b8063a9fc664e14610715578063b6df490614610728578063b88d4fde1461073b57600080fd5b80638a616bc01161017157806395d89b411161014b57806395d89b41146106df578063a217fddf146106e7578063a22cb465146106ef578063a5d0c3521461070257600080fd5b80638a616bc01461068d5780638e204c43146106a057806391d14854146106cc57600080fd5b806379cc6790116101ad57806379cc67901461063f5780637dbe416514610652578063827157b3146106725780638456cb591461068557600080fd5b8063684c655a14610611578063685731071461061957806370a082311461062c57600080fd5b8063248a9ca3116102ad578063423f6cef1161024b57806355f804b31161022557806355f804b3146105c05780635944c753146105d35780635c975abb146105e65780636352211e146105fe57600080fd5b8063423f6cef1461058757806342842e0e1461059a57806342966c68146105ad57600080fd5b806336568abe1161028757806336568abe1461052d5780633af32abf146105405780633f4ba83a1461056c57806340c10f191461057457600080fd5b8063248a9ca3146104d55780632a55205a146104e85780632f2ff15d1461051a57600080fd5b80630d178d5d1161031a57806314dc43fc116102f457806314dc43fc1461048a57806318160ddd1461049d5780632069c98f146104af57806323b872dd146104c257600080fd5b80630d178d5d146104495780630d392cd91461045c5780630d705df61461046f57600080fd5b806306fdde031161035657806306fdde03146103e5578063081812fc146103fa578063095ea7b314610425578063098144d41461043857600080fd5b806301ffc9a71461037d57806302fa7c47146103a557806304554443146103ba575b600080fd5b61039061038b366004612e5c565b610837565b60405190151581526020015b60405180910390f35b6103b86103b3366004612eac565b610848565b005b6003546103cd906001600160401b031681565b6040516001600160401b03909116815260200161039c565b6103ed610862565b60405161039c9190612f2f565b61040d610408366004612f42565b610906565b6040516001600160a01b03909116815260200161039c565b6103b8610433366004612f5b565b61091b565b6000546001600160a01b031661040d565b6103b8610457366004613059565b61092a565b6103b861046a366004613120565b610b86565b6040805163657711f560e11b8152600160208201520161039c565b6103b86104983660046131a0565b610c3e565b6002545b60405190815260200161039c565b6103b86104bd36600461320b565b610d31565b6103b86104d0366004613226565b610d8e565b6104a16104e3366004612f42565b610e13565b6104fb6104f6366004613262565b610e35565b604080516001600160a01b03909316835260208301919091520161039c565b6103b8610528366004613284565b610efc565b6103b861053b366004613284565b610f18565b61039061054e3660046132a7565b6001600160a01b031660009081526005602052604090205460ff1690565b6103b8610f4b565b6104a1610582366004612f5b565b610f6e565b6103b8610595366004612f5b565b611046565b6103b86105a8366004613226565b611071565b6103b86105bb366004612f42565b61108c565b6103b86105ce3660046132c2565b61112f565b6103b86105e13660046132f6565b6111f8565b600080516020613ada8339815191525460ff16610390565b61040d61060c366004612f42565b61120e565b6103ed611219565b6103b86106273660046131a0565b6112a7565b6104a161063a3660046132a7565b61147c565b6103b861064d366004612f5b565b6114d8565b6104a1610660366004612f42565b60009081526007602052604090205490565b6103b8610680366004613332565b6115a5565b6103b861166e565b6103b861069b366004612f42565b61168e565b6103906106ae3660046132a7565b6001600160a01b031660009081526004602052604090205460ff1690565b6103906106da366004613284565b6116ca565b6103ed611702565b6104a1600081565b6103b86106fd366004613120565b611741565b6103b86107103660046133f7565b61174c565b6103b86107233660046132a7565b611902565b61040d610736366004612f42565b611977565b6103b86107493660046134da565b611982565b6103ed61075c366004612f42565b61199a565b6103b861076f366004613120565b6119f8565b6103b8610782366004613284565b611a9a565b6103b8610795366004613555565b611ab6565b6104a1600080516020613a9a83398151915281565b6103906107bd366004613589565b611b96565b6104a1600080516020613a7a83398151915281565b6103b86107e53660046135b3565b611c0c565b6103906107f8366004612f42565b611d0d565b6104a17f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e381565b6103b8610832366004613332565b611d18565b600061084282611da3565b92915050565b600061085381611dc8565b61085d8383611dd2565b505050565b600080516020613a5a833981519152805460609190819061088290613600565b80601f01602080910402602001604051908101604052809291908181526020018280546108ae90613600565b80156108fb5780601f106108d0576101008083540402835291602001916108fb565b820191906000526020600020905b8154815290600101906020018083116108de57829003601f168201915b505050505091505090565b600061091182611e95565b5061084282611ecd565b610926828233611f07565b5050565b6000610934611f14565b805490915060ff600160401b82041615906001600160401b031660008115801561095b5750825b90506000826001600160401b031660011480156109775750303b155b905081158015610985575080155b156109a35760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156109cd57845460ff60401b1916600160401b1785555b6001600160a01b038d1615806109ea57506001600160a01b038c16155b806109fc57506001600160a01b038b16155b15610a195760405162858bcd60e11b815260040160405180910390fd5b610a238888611f3d565b610a2b611f4f565b610a33611f59565b610a3b611f4f565b610a43611f4f565b610a4e600033611f69565b50610a67600080516020613a7a8339815191528e611f69565b50610a80600080516020613a9a8339815191528d611f69565b50610aab7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e38c611f69565b506003805467ffffffffffffffff19166001600160401b038816179055600080546001600160a01b0319166001600160a01b038b16179055610aef8a6101f4611dd2565b60408051600081526001600160a01b038b1660208201527fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac910160405180910390a18315610b7757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b600080516020613a7a833981519152610b9e81611dc8565b6001600160a01b03831660009081526005602052604090205460ff16151582151503610bdd57604051634749b1bf60e01b815260040160405180910390fd5b6001600160a01b038316600081815260056020908152604091829020805460ff191686151590811790915591519182527f2b53a43b3d9a43074cd182e5310eacab92155b7c524d3b45363c0b3acda60c9891015b60405180910390a2505050565b610c4661200e565b82818114610c76576040516355b5ee2b60e11b815260048101859052602481018390526044015b60405180910390fd5b60005b81811015610ce257610cda33878784818110610c9757610c9761363a565b9050602002016020810190610cac91906132a7565b868685818110610cbe57610cbe61363a565b9050602002013560405180602001604052806000815250612058565b600101610c79565b507feb6aef011166339e703c40eb14619fb2383dd626a9045c4b37d74b4497fd20068585858542604051610d1a9594939291906136c9565b60405180910390a150610d2b612063565b50505050565b6000610d3c81611dc8565b6003546001600160401b03808416911603610d6a57604051634749b1bf60e01b815260040160405180910390fd5b506003805467ffffffffffffffff19166001600160401b0392909216919091179055565b6001600160a01b038216610db857604051633250574960e11b815260006004820152602401610c6d565b6000610dc5838333612089565b9050836001600160a01b0316816001600160a01b031614610d2b576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610c6d565b6000908152600080516020613aba833981519152602052604090206001015490565b60008281527fdaedc9ab023613a7caf35e703657e986ccfad7e3eb0af93a2853f8d65dd86b0160205260408120805482917fdaedc9ab023613a7caf35e703657e986ccfad7e3eb0af93a2853f8d65dd86b00916001600160a01b03811690600160a01b90046001600160601b031681610ec857505081546001600160a01b03811690600160a01b90046001600160601b03165b6000612710610ee06001600160601b0384168a613722565b610eea9190613739565b929650919450505050505b9250929050565b610f0582610e13565b610f0e81611dc8565b610d2b8383611f69565b6001600160a01b0381163314610f415760405163334bd91960e11b815260040160405180910390fd5b61085d82826121d5565b600080516020613a9a833981519152610f6381611dc8565b610f6b612251565b50565b6000600080516020613a7a833981519152610f8881611dc8565b610f9061200e565b6001600160a01b03841660009081526004602052604090205460ff1615610fca57604051630e20c14560e41b815260040160405180910390fd5b6000610fd5856122b1565b60008181526007602090815260409182902087905590516001600160401b0342168152919250859183916001600160a01b038916917fe12b57e28e06a581b8eebaedeed24926d3f834d55ac97a24b6ab3c2df87fc8da910160405180910390a4915061103f612063565b5092915050565b61104e61200e565b61106933838360405180602001604052806000815250612058565b610926612063565b61085d83838360405180602001604052806000815250611982565b61109461200e565b3361109e8261120e565b6001600160a01b0316146110c55760405163b866139760e01b815260040160405180910390fd5b6110ce816122d4565b60008181526006602052604090819020805467ffffffffffffffff19169055513390600080516020613afa8339815191529061111f90849042909182526001600160401b0316602082015260400190565b60405180910390a2610f6b612063565b600061113a81611dc8565b6111ce826001805461114b90613600565b80601f016020809104026020016040519081016040528092919081815260200182805461117790613600565b80156111c45780601f10611199576101008083540402835291602001916111c4565b820191906000526020600020905b8154815290600101906020018083116111a757829003601f168201915b505050505061230f565b156111ec57604051634749b1bf60e01b815260040160405180910390fd5b600161085d83826137a3565b600061120381611dc8565b610d2b848484612334565b600061084282611e95565b6001805461122690613600565b80601f016020809104026020016040519081016040528092919081815260200182805461125290613600565b801561129f5780601f106112745761010080835404028352916020019161129f565b820191906000526020600020905b81548152906001019060200180831161128257829003601f168201915b505050505081565b600080516020613a7a8339815191526112bf81611dc8565b6112c761200e565b836000816001600160401b038111156112e2576112e2612f85565b60405190808252806020026020018201604052801561130b578160200160208202803683370190505b50905060005b82811015611429576004600089898481811061132f5761132f61363a565b905060200201602081019061134491906132a7565b6001600160a01b0316815260208101919091526040016000205460ff166114005761139488888381811061137a5761137a61363a565b905060200201602081019061138f91906132a7565b6122b1565b8282815181106113a6576113a661363a565b6020026020010181815250508585828181106113c4576113c461363a565b90506020020135600760008484815181106113e1576113e161363a565b6020026020010151815260200190815260200160002081905550611421565b60008282815181106114145761141461363a565b6020026020010181815250505b600101611311565b507f3cf1c15ecfa6e152e879a5bcaeb4a2dba10b2a6967f515ec5074db04c995ce3887878388884260405161146396959493929190613893565b60405180910390a15050611475612063565b5050505050565b6000600080516020613a5a8339815191526001600160a01b0383166114b7576040516322718ad960e21b815260006004820152602401610c6d565b6001600160a01b039092166000908152600390920160205250604090205490565b600080516020613a7a8339815191526114f081611dc8565b6114f861200e565b826001600160a01b031661150b8361120e565b6001600160a01b0316146115325760405163b866139760e01b815260040160405180910390fd5b61153b826122d4565b60008281526006602052604090819020805467ffffffffffffffff19169055516001600160a01b03841690600080516020613afa8339815191529061159590859042909182526001600160401b0316602082015260400190565b60405180910390a261085d612063565b600080516020613a7a8339815191526115bd81611dc8565b6115c561200e565b6001600160a01b03841660009081526004602052604090205460ff16156115ff57604051630e20c14560e41b815260040160405180910390fd5b6116098484612419565b60008381526007602090815260409182902084905590516001600160401b0342168152839185916001600160a01b038816917fe12b57e28e06a581b8eebaedeed24926d3f834d55ac97a24b6ab3c2df87fc8da910160405180910390a4610d2b612063565b600080516020613a9a83398151915261168681611dc8565b610f6b61247e565b600061169981611dc8565b5060009081527fdaedc9ab023613a7caf35e703657e986ccfad7e3eb0af93a2853f8d65dd86b016020526040812055565b6000918252600080516020613aba833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793018054606091600080516020613a5a8339815191529161088290613600565b6109263383836124c7565b600080516020613a7a83398151915261176481611dc8565b61176c61200e565b83516000816001600160401b0381111561178857611788612f85565b6040519080825280602002602001820160405280156117b1578160200160208202803683370190505b50905060005b828110156118b857600460008883815181106117d5576117d561363a565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661188f576118228782815181106118155761181561363a565b60200260200101516122b1565b8282815181106118345761183461363a565b6020026020010181815250508581815181106118525761185261363a565b6020026020010151600760008484815181106118705761187061363a565b60200260200101518152602001908152602001600020819055506118b0565b60008282815181106118a3576118a361363a565b6020026020010181815250505b6001016117b7565b507faf70433c6f3cc58b715c1a4f68d21a6f5bad1bf0f0c510030f163acc0dbfe81e86828787426040516118f09594939291906138eb565b60405180910390a15050610d2b612063565b600061190d81611dc8565b600054604080516001600160a01b03928316815291841660208301527fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac910160405180910390a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b600061084282612578565b61198d848484610d8e565b610d2b33858585856125b2565b606060006119a66126dc565b905060008151116119c657604051806020016040528060008152506119f1565b806119d08461276e565b6040516020016119e1929190613987565b6040516020818303038152906040525b9392505050565b6000611a0381611dc8565b6001600160a01b03831660009081526004602052604090205460ff16151582151503611a4257604051634749b1bf60e01b815260040160405180910390fd5b6001600160a01b038316600081815260046020908152604091829020805460ff191686151590811790915591519182527f285d30726c52fa6d937c831072c13afa1e31b5ec0c0c2c7ed72f48b59fa95e609101610c31565b611aa382610e13565b611aac81611dc8565b610d2b83836121d5565b611abe61200e565b60005b8151811015611b8d576000828281518110611ade57611ade61363a565b60200260200101519050336001600160a01b0316611afb8261120e565b6001600160a01b031614611b225760405163b866139760e01b815260040160405180910390fd5b611b2b816122d4565b60008181526006602052604090819020805467ffffffffffffffff19169055513390600080516020613afa83398151915290611b7c90849042909182526001600160401b0316602082015260400190565b60405180910390a250600101611ac1565b50610f6b612063565b6001600160a01b03811660009081526005602052604081205460ff1615611bbf57506001610842565b6001600160a01b0380841660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079305602090815260408083209386168352929052205460ff166119f1565b600080516020613a7a833981519152611c2481611dc8565b611c2c61200e565b60005b8251811015611d04576000838281518110611c4c57611c4c61363a565b60200260200101519050846001600160a01b0316611c698261120e565b6001600160a01b031614611c905760405163b866139760e01b815260040160405180910390fd5b611c99816122d4565b60008181526006602052604090819020805467ffffffffffffffff19169055516001600160a01b03861690600080516020613afa83398151915290611cf390849042909182526001600160401b0316602082015260400190565b60405180910390a250600101611c2f565b5061085d612063565b600061084282612800565b600080516020613a7a833981519152611d3081611dc8565b611d3861200e565b6000611d43856122b1565b604080516001600160a01b038816815260208101839052908101869052606081018590526001600160401b03421660808201529091507f59db9be49e3b63e90a7323be2118fc3624ae08b1cb574647aa85887b8f3c3fba9060a001610d1a565b60006001600160e01b0319821663152a902d60e11b148061084257506108428261284d565b610f6b8133612872565b7fdaedc9ab023613a7caf35e703657e986ccfad7e3eb0af93a2853f8d65dd86b006127106001600160601b038316811015611e3257604051636f483d0960e01b81526001600160601b038416600482015260248101829052604401610c6d565b6001600160a01b038416611e5c57604051635b6cc80560e11b815260006004820152602401610c6d565b50604080518082019091526001600160a01b039093168084526001600160601b039092166020909301839052600160a01b909202179055565b600080611ea183612578565b90506001600160a01b03811661084257604051637e27328960e01b815260048101849052602401610c6d565b60009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260409020546001600160a01b031690565b61085d83838360016128ab565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610842565b611f456129c1565b61092682826129e6565b611f576129c1565b565b611f616129c1565b611f57612a17565b6000600080516020613aba833981519152611f8484846116ca565b612004576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055611fba3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610842565b6000915050610842565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080546001190161205257604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b61198d848484612a1f565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000612093612acf565b600061209e84612578565b6001600160a01b03811660009081526004602052604090205490915060ff16156120db57604051630e20c14560e41b815260040160405180910390fd5b6120e484612800565b801561210957506001600160a01b03811660009081526005602052604090205460ff16155b801561211d57506001600160a01b03851615155b1561215e57600084815260066020526040908190205490516314efbc4d60e01b8152600481018690526001600160401b039091166024820152604401610c6d565b600061216b868686612b00565b90506001600160a01b0382161580159061219e57506001600160a01b03861660009081526005602052604090205460ff16155b156121cc576000858152600660205260409020805467ffffffffffffffff1916426001600160401b03161790555b95945050505050565b6000600080516020613aba8339815191526121f084846116ca565b15612004576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610842565b612259612c0a565b600080516020613ada833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b60028054600091826122c2836139c6565b90915550506002546108428382612419565b60006122e36000836000612089565b90506001600160a01b03811661092657604051637e27328960e01b815260048101839052602401610c6d565b6000815183511480156119f15750508051602091820120825192909101919091201490565b7fdaedc9ab023613a7caf35e703657e986ccfad7e3eb0af93a2853f8d65dd86b006127106001600160601b03831681101561239b5760405163dfd1fc1b60e01b8152600481018690526001600160601b038416602482015260448101829052606401610c6d565b6001600160a01b0384166123cc57604051634b4f842960e11b81526004810186905260006024820152604401610c6d565b506040805180820182526001600160a01b0394851681526001600160601b03938416602080830191825260009788526001909401909352942093519051909116600160a01b029116179055565b6001600160a01b03821661244357604051633250574960e11b815260006004820152602401610c6d565b600061245183836000612089565b90506001600160a01b0381161561085d576040516339e3563760e11b815260006004820152602401610c6d565b612486612acf565b600080516020613ada833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612293565b600080516020613a5a8339815191526001600160a01b03831661250857604051630b61174360e31b81526001600160a01b0384166004820152602401610c6d565b6001600160a01b038481166000818152600584016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b60009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260409020546001600160a01b031690565b6001600160a01b0383163b1561147557604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906125f49088908890879087906004016139df565b6020604051808303816000875af192505050801561262f575060408051601f3d908101601f1916820190925261262c91810190613a1c565b60015b612698573d80801561265d576040519150601f19603f3d011682016040523d82523d6000602084013e612662565b606091505b50805160000361269057604051633250574960e11b81526001600160a01b0385166004820152602401610c6d565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b146126d457604051633250574960e11b81526001600160a01b0385166004820152602401610c6d565b505050505050565b6060600180546126eb90613600565b80601f016020809104026020016040519081016040528092919081815260200182805461271790613600565b80156127645780601f1061273957610100808354040283529160200191612764565b820191906000526020600020905b81548152906001019060200180831161274757829003601f168201915b5050505050905090565b6060600061277b83612c3a565b60010190506000816001600160401b0381111561279a5761279a612f85565b6040519080825280601f01601f1916602001820160405280156127c4576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846127ce57509392505050565b6000818152600660205260408120546001600160401b031680158015906119f157506003546001600160401b034281169161283c911683613a39565b6001600160401b0316119392505050565b60006001600160e01b03198216637965db0b60e01b1480610842575061084282612d12565b61287c82826116ca565b6109265760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610c6d565b600080516020613a5a83398151915281806128ce57506001600160a01b03831615155b156129905760006128de85611e95565b90506001600160a01b0384161580159061290a5750836001600160a01b0316816001600160a01b031614155b801561291d575061291b8185611b96565b155b156129465760405163a9fbf51f60e01b81526001600160a01b0385166004820152602401610c6d565b821561298e5784866001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6129c9612d62565b611f5757604051631afcd79f60e31b815260040160405180910390fd5b6129ee6129c1565b600080516020613a5a83398151915280612a0884826137a3565b5060018101610d2b83826137a3565b6120636129c1565b6001600160a01b038216612a4957604051633250574960e11b815260006004820152602401610c6d565b6000612a5783836000612089565b90506001600160a01b038116612a8357604051637e27328960e01b815260048101839052602401610c6d565b836001600160a01b0316816001600160a01b031614610d2b576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610c6d565b600080516020613ada8339815191525460ff1615611f575760405163d93c066560e01b815260040160405180910390fd5b6000600080516020613a5a83398151915281612b1b85612578565b90506001600160a01b03841615612b3757612b37818587612d7c565b6001600160a01b03811615612b7757612b546000866000806128ab565b6001600160a01b0381166000908152600383016020526040902080546000190190555b6001600160a01b03861615612ba8576001600160a01b03861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080546001600160a01b0319166001600160a01b038a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a495945050505050565b600080516020613ada8339815191525460ff16611f5757604051638dfc202b60e01b815260040160405180910390fd5b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310612c795772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612ca5576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310612cc357662386f26fc10000830492506010015b6305f5e1008310612cdb576305f5e100830492506008015b6127108310612cef57612710830492506004015b60648310612d01576064830492506002015b600a83106108425760010192915050565b60006001600160e01b031982166380ac58cd60e01b1480612d4357506001600160e01b03198216635b5e139f60e01b145b8061084257506301ffc9a760e01b6001600160e01b0319831614610842565b6000612d6c611f14565b54600160401b900460ff16919050565b612d87838383612de0565b61085d576001600160a01b038316612db557604051637e27328960e01b815260048101829052602401610c6d565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610c6d565b60006001600160a01b03831615801590612e3e5750826001600160a01b0316846001600160a01b03161480612e1a5750612e1a8484611b96565b80612e3e5750826001600160a01b0316612e3383611ecd565b6001600160a01b0316145b949350505050565b6001600160e01b031981168114610f6b57600080fd5b600060208284031215612e6e57600080fd5b81356119f181612e46565b80356001600160a01b0381168114612e9057600080fd5b919050565b80356001600160601b0381168114612e9057600080fd5b60008060408385031215612ebf57600080fd5b612ec883612e79565b9150612ed660208401612e95565b90509250929050565b60005b83811015612efa578181015183820152602001612ee2565b50506000910152565b60008151808452612f1b816020860160208601612edf565b601f01601f19169290920160200192915050565b6020815260006119f16020830184612f03565b600060208284031215612f5457600080fd5b5035919050565b60008060408385031215612f6e57600080fd5b612f7783612e79565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612fc357612fc3612f85565b604052919050565b60006001600160401b03831115612fe457612fe4612f85565b612ff7601f8401601f1916602001612f9b565b905082815283838301111561300b57600080fd5b828260208301376000602084830101529392505050565b600082601f83011261303357600080fd5b6119f183833560208501612fcb565b80356001600160401b0381168114612e9057600080fd5b600080600080600080600080610100898b03121561307657600080fd5b61307f89612e79565b975061308d60208a01612e79565b965061309b60408a01612e79565b95506130a960608a01612e79565b94506130b760808a01612e79565b935060a08901356001600160401b03808211156130d357600080fd5b6130df8c838d01613022565b945060c08b01359150808211156130f557600080fd5b506131028b828c01613022565b92505061311160e08a01613042565b90509295985092959890939650565b6000806040838503121561313357600080fd5b61313c83612e79565b91506020830135801515811461315157600080fd5b809150509250929050565b60008083601f84011261316e57600080fd5b5081356001600160401b0381111561318557600080fd5b6020830191508360208260051b8501011115610ef557600080fd5b600080600080604085870312156131b657600080fd5b84356001600160401b03808211156131cd57600080fd5b6131d98883890161315c565b909650945060208701359150808211156131f257600080fd5b506131ff8782880161315c565b95989497509550505050565b60006020828403121561321d57600080fd5b6119f182613042565b60008060006060848603121561323b57600080fd5b61324484612e79565b925061325260208501612e79565b9150604084013590509250925092565b6000806040838503121561327557600080fd5b50508035926020909101359150565b6000806040838503121561329757600080fd5b82359150612ed660208401612e79565b6000602082840312156132b957600080fd5b6119f182612e79565b6000602082840312156132d457600080fd5b81356001600160401b038111156132ea57600080fd5b612e3e84828501613022565b60008060006060848603121561330b57600080fd5b8335925061331b60208501612e79565b915061332960408501612e95565b90509250925092565b60008060006060848603121561334757600080fd5b61335084612e79565b95602085013595506040909401359392505050565b60006001600160401b0382111561337e5761337e612f85565b5060051b60200190565b600082601f83011261339957600080fd5b813560206133ae6133a983613365565b612f9b565b8083825260208201915060208460051b8701019350868411156133d057600080fd5b602086015b848110156133ec57803583529183019183016133d5565b509695505050505050565b60008060006060848603121561340c57600080fd5b83356001600160401b038082111561342357600080fd5b818601915086601f83011261343757600080fd5b813560206134476133a983613365565b82815260059290921b8401810191818101908a84111561346657600080fd5b948201945b8386101561348b5761347c86612e79565b8252948201949082019061346b565b975050870135925050808211156134a157600080fd5b6134ad87838801613388565b935060408601359150808211156134c357600080fd5b506134d086828701613388565b9150509250925092565b600080600080608085870312156134f057600080fd5b6134f985612e79565b935061350760208601612e79565b92506040850135915060608501356001600160401b0381111561352957600080fd5b8501601f8101871361353a57600080fd5b61354987823560208401612fcb565b91505092959194509250565b60006020828403121561356757600080fd5b81356001600160401b0381111561357d57600080fd5b612e3e84828501613388565b6000806040838503121561359c57600080fd5b6135a583612e79565b9150612ed660208401612e79565b600080604083850312156135c657600080fd5b6135cf83612e79565b915060208301356001600160401b038111156135ea57600080fd5b6135f685828601613388565b9150509250929050565b600181811c9082168061361457607f821691505b60208210810361363457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b8183526000602080850194508260005b8581101561368c576001600160a01b0361367983612e79565b1687529582019590820190600101613660565b509495945050505050565b81835260006001600160fb1b038311156136b057600080fd5b8260051b80836020870137939093016020019392505050565b6060815260006136dd606083018789613650565b82810360208401526136f0818688613697565b9150506001600160401b03831660408301529695505050505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176108425761084261370c565b60008261375657634e487b7160e01b600052601260045260246000fd5b500490565b601f82111561085d576000816000526020600020601f850160051c810160208610156137845750805b601f850160051c820191505b818110156126d457828155600101613790565b81516001600160401b038111156137bc576137bc612f85565b6137d0816137ca8454613600565b8461375b565b602080601f83116001811461380557600084156137ed5750858301515b600019600386901b1c1916600185901b1785556126d4565b600085815260208120601f198616915b8281101561383457888601518255948401946001909101908401613815565b50858210156138525787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008151808452602080850194506020840160005b8381101561368c57815187529582019590820190600101613877565b6080815260006138a760808301888a613650565b82810360208401526138b98188613862565b905082810360408401526138ce818688613697565b9150506001600160401b0383166060830152979650505050505050565b60a0808252865190820181905260009060209060c0840190828a01845b8281101561392d5781516001600160a01b031684529284019290840190600101613908565b50505083810360208501526139428189613862565b91505082810360408401526139578187613862565b9050828103606084015261396b8186613862565b9150506001600160401b03831660808301529695505050505050565b60008351613999818460208801612edf565b8351908301906139ad818360208801612edf565b64173539b7b760d91b9101908152600501949350505050565b6000600182016139d8576139d861370c565b5060010190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613a1290830184612f03565b9695505050505050565b600060208284031215613a2e57600080fd5b81516119f181612e46565b6001600160401b0381811683821601908082111561103f5761103f61370c56fe80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0865d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033007e3a386316e83bca71ca69a021c153274068560a6c16736e8bfcbd1ec5997911a2646970667358221220ef127cc541797627c402cae4652c32f4bcd7421283eb782a5c0139679730e4e864736f6c63430008170033