0 txs
69 calls
constructor
constructor()
functions
balanceOf
viewfunction balanceOf(address account, uint256 id) view returns (uint256)
balanceOfBatch
viewfunction balanceOfBatch(address[] accounts, uint256[] ids) view returns (uint256[])
exists
viewfunction exists(uint256 id) view returns (bool)
getItemBalances
viewfunction getItemBalances(address account_, uint256[] ids_) view returns (tuple[] balances)
hasTraits
viewfunction hasTraits(address account, uint256[] traitIds) view returns (bool[])
isApprovedForAll
viewfunction isApprovedForAll(address account, address operator) view returns (bool)
owner
viewfunction owner() view returns (address)
ownsAllTraits
viewfunction ownsAllTraits(address account, uint256[] traitIds) view returns (bool)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
totalSupply
viewfunction totalSupply() view returns (uint256)
totalSupply
viewfunction totalSupply(uint256 id) view returns (uint256)
traitExists
viewfunction traitExists(uint256 id_) view returns (bool)
traitItems
viewfunction traitItems(uint256) view returns (uint256 id, uint256 maxSupply, uint256 mintPrice, uint8 traitType)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
uri
viewfunction uri(uint256 tokenId) view returns (string)
deleteTrait
nonpayablefunction deleteTrait(uint256 id_)
initialize
nonpayablefunction initialize(string uri_)
mint
payablefunction mint(address account, uint256 id, uint256 amount, bytes data) payable
mintBatch
payablefunction mintBatch(address account, uint256[] ids, uint256[] amounts, bytes data) payable
renounceOwnership
nonpayablefunction renounceOwnership()
safeBatchTransferFrom
nonpayablefunction safeBatchTransferFrom(address from, address to, uint256[] ids, uint256[] values, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 id, uint256 value, bytes data)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setBaseURI
nonpayablefunction setBaseURI(string baseURI)
setTrait
nonpayablefunction setTrait(uint256 id_, uint8 traitType_, uint256 maxSupply_, uint256 mintPrice_)
setTraits
nonpayablefunction setTraits(uint256[] ids_, uint8[] traitTypes_, uint256[] maxSupplies_, uint256[] mintPrices_)
setURI
nonpayablefunction setURI(string newuri)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateTraitMaxSupply
nonpayablefunction updateTraitMaxSupply(uint256 id_, uint256 maxSupply_)
updateTraitMintPrice
nonpayablefunction updateTraitMintPrice(uint256 id_, uint256 mintPrice_)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdraw
nonpayablefunction withdraw(address to)
events
ApprovalForAll
event ApprovalForAll(address indexed account, address indexed operator, bool approved)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
TraitItemDeleted
event TraitItemDeleted(uint256 id)
TraitItemMaxSupplyUpdated
event TraitItemMaxSupplyUpdated(uint256 id, uint256 maxSupply)
TraitItemMintPriceUpdated
event TraitItemMintPriceUpdated(uint256 id, uint256 mintPrice)
TraitItemSet
event TraitItemSet(uint256 id, uint8 traitType, uint256 maxSupply, uint256 mintPrice)
TransferBatch
event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values)
TransferSingle
event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value)
Upgraded
event Upgraded(address indexed implementation)
URI
event URI(string value, uint256 indexed id)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
ERC1155InsufficientBalance
error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId)
ERC1155InvalidApprover
error ERC1155InvalidApprover(address approver)
ERC1155InvalidArrayLength
error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength)
ERC1155InvalidOperator
error ERC1155InvalidOperator(address operator)
ERC1155InvalidReceiver
error ERC1155InvalidReceiver(address receiver)
ERC1155InvalidSender
error ERC1155InvalidSender(address sender)
ERC1155MissingApprovalForAll
error ERC1155MissingApprovalForAll(address operator, address owner)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedCall
error FailedCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516139f56100f95f395f8181611f9c01528181611fc5015261217501526139f55ff3fe6080604052600436106101f4575f3560e01c8063715018a611610117578063ab60b073116100ac578063cd158d0b1161007c578063f242432a11610062578063f242432a146106f5578063f2fde38b14610714578063f62d188814610733575f5ffd5b8063cd158d0b14610663578063e985e9c51461068f575f5ffd5b8063ab60b07314610586578063ac694cff146105b2578063ad3cb1cc146105d1578063bd85b03914610619575f5ffd5b806390af1bae116100e757806390af1bae1461050a578063992e687c146105295780639e0dc8e514610548578063a22cb46514610567575f5ffd5b8063715018a61461046d578063731133e91461048157806382a27aea146104945780638da5cb5b146104c4575f5ffd5b806339e3fa981161018d57806351cff8d91161015d57806351cff8d9146103d457806352d1902d146103f357806355f804b3146102595780635fde9c9714610407575f5ffd5b806339e3fa981461032a5780634e1273f4146103495780634f1ef286146103755780634f558e7914610388575f5ffd5b806318160ddd116101c857806318160ddd146102a65780631f7fdffa146102d95780632705c062146102ec5780632eb2c2d61461030b575f5ffd5b8062fdd58e146101f857806301ffc9a71461022a57806302fe5305146102595780630e89341c1461027a575b5f5ffd5b348015610203575f5ffd5b50610217610212366004612ea3565b610752565b6040519081526020015b60405180910390f35b348015610235575f5ffd5b50610249610244366004612efa565b61079a565b6040519015158152602001610221565b348015610264575f5ffd5b50610278610273366004612fb3565b6107a4565b005b348015610285575f5ffd5b50610299610294366004613000565b6107b8565b6040516102219190613045565b3480156102b1575f5ffd5b507f4a593662ee04d27b6a00ebb31be7fe0c102c2ade82a7c5d764f2df05dc4e280154610217565b6102786102e7366004613102565b6107f3565b3480156102f7575f5ffd5b506102496103063660046131a3565b610b0a565b348015610316575f5ffd5b506102786103253660046131f0565b610b7b565b348015610335575f5ffd5b506102786103443660046132a3565b610c38565b348015610354575f5ffd5b506103686103633660046132c3565b610e39565b60405161022191906133ac565b6102786103833660046133be565b610f1d565b348015610393575f5ffd5b506102496103a2366004613000565b5f9081527f4a593662ee04d27b6a00ebb31be7fe0c102c2ade82a7c5d764f2df05dc4e28006020526040902054151590565b3480156103df575f5ffd5b506102786103ee366004613401565b610f3c565b3480156103fe575f5ffd5b5061021761108c565b348015610412575f5ffd5b5061044a610421366004613000565b5f6020819052908152604090208054600182015460028301546003909301549192909160ff1684565b6040805194855260208501939093529183015260ff166060820152608001610221565b348015610478575f5ffd5b506102786110ba565b61027861048f36600461341c565b6110cd565b34801561049f575f5ffd5b506102496104ae366004613000565b5f90815260208190526040902060010154151590565b3480156104cf575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b039091168152602001610221565b348015610515575f5ffd5b506102786105243660046132a3565b611294565b348015610534575f5ffd5b50610278610543366004613000565b611350565b348015610553575f5ffd5b50610278610562366004613478565b6114e4565b348015610572575f5ffd5b50610278610581366004613583565b6116d4565b348015610591575f5ffd5b506105a56105a03660046131a3565b6116df565b60405161022191906135be565b3480156105bd575f5ffd5b506102786105cc36600461360c565b6117bc565b3480156105dc575f5ffd5b506102996040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b348015610624575f5ffd5b50610217610633366004613000565b5f9081527f4a593662ee04d27b6a00ebb31be7fe0c102c2ade82a7c5d764f2df05dc4e2800602052604090205490565b34801561066e575f5ffd5b5061068261067d3660046131a3565b6118dc565b6040516102219190613644565b34801561069a575f5ffd5b506102496106a936600461367d565b6001600160a01b039182165f9081527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45016020908152604080832093909416825291909152205460ff1690565b348015610700575f5ffd5b5061027861070f3660046136a9565b611972565b34801561071f575f5ffd5b5061027861072e366004613401565b611a27565b34801561073e575f5ffd5b5061027861074d366004612fb3565b611a7a565b5f8181527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4500602090815260408083206001600160a01b03861684529091529020545b92915050565b5f61079482611bcf565b6107ac611cb1565b6107b581611d25565b50565b60606107c382611d71565b6107cc83611e46565b6040516020016107dd929190613718565b6040516020818303038152906040529050919050565b815183511461086f5760405162461bcd60e51b815260206004820152603260248201527f45524331313535547261697473426173653a2049447320616e6420616d6f756e60448201527f7473206c656e677468206d69736d61746368000000000000000000000000000060648201526084015b60405180910390fd5b5f805b8451811015610a80576108ae8582815181106108905761089061372c565b60200260200101515f90815260208190526040902060010154151590565b6109095760405162461bcd60e51b815260206004820152602660248201527f45524331313535547261697473426173653a204974656d20646f6573206e6f7460448201526508195e1a5cdd60d21b6064820152608401610866565b5f5f86838151811061091d5761091d61372c565b602002602001015181526020019081526020015f206001015461098386838151811061094b5761094b61372c565b60200260200101515f9081527f4a593662ee04d27b6a00ebb31be7fe0c102c2ade82a7c5d764f2df05dc4e2800602052604090205490565b8583815181106109955761099561372c565b60200260200101516109a79190613754565b1115610a1b5760405162461bcd60e51b815260206004820152602560248201527f45524331313535547261697473426173653a204d617820737570706c7920726560448201527f61636865640000000000000000000000000000000000000000000000000000006064820152608401610866565b838181518110610a2d57610a2d61372c565b60200260200101515f5f878481518110610a4957610a4961372c565b602002602001015181526020019081526020015f2060020154610a6c9190613767565b610a769083613754565b9150600101610872565b5080341015610af75760405162461bcd60e51b815260206004820152602560248201527f45524331313535547261697473426173653a20496e73756666696369656e742060448201527f66756e64730000000000000000000000000000000000000000000000000000006064820152608401610866565b610b0385858585611ee3565b5050505050565b5f805b8251811015610b7157828181518110610b2857610b2861372c565b60200260200101515f0315610b6957610b5a84848381518110610b4d57610b4d61372c565b6020026020010151610752565b5f03610b69575f915050610794565b600101610b0d565b5060019392505050565b336001600160a01b0386168114801590610bd957506001600160a01b038087165f9081527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4501602090815260408083209385168352929052205460ff16155b15610c23576040517fe237d9220000000000000000000000000000000000000000000000000000000081526001600160a01b03808316600483015287166024820152604401610866565b610c308686868686611f19565b505050505050565b610c40611cb1565b5f82815260208190526040902060010154610cac5760405162461bcd60e51b815260206004820152602660248201527f45524331313535547261697473426173653a204974656d20646f6573206e6f7460448201526508195e1a5cdd60d21b6064820152608401610866565b5f8111610d215760405162461bcd60e51b815260206004820152603460248201527f45524331313535547261697473426173653a204d617820737570706c79206d7560448201527f73742062652067726561746572207468616e20300000000000000000000000006064820152608401610866565b5f8281527f4a593662ee04d27b6a00ebb31be7fe0c102c2ade82a7c5d764f2df05dc4e28006020526040902054811015610de95760405162461bcd60e51b815260206004820152604160248201527f45524331313535547261697473426173653a204d617820737570706c79206d7560448201527f73742062652067726561746572207468616e2063757272656e7420737570706c60648201527f7900000000000000000000000000000000000000000000000000000000000000608482015260a401610866565b5f828152602081815260409182902060010183905581518481529081018390527f20dbcad51488045b5b836634e19c7cdf87dcf2bf1e9c70cd65e44b4a8921fbf491015b60405180910390a15050565b60608151835114610e8357815183516040517f5b05999100000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610866565b5f835167ffffffffffffffff811115610e9e57610e9e612f15565b604051908082528060200260200182016040528015610ec7578160200160208202803683370190505b5090505f5b8451811015610f1557602080820286010151610ef090602080840287010151610752565b828281518110610f0257610f0261372c565b6020908102919091010152600101610ecc565b509392505050565b610f25611f91565b610f2e82612061565b610f388282612069565b5050565b610f44611cb1565b6001600160a01b038116610f9a5760405162461bcd60e51b815260206004820152600f60248201527f496e76616c6964206164647265737300000000000000000000000000000000006044820152606401610866565b4780610fe85760405162461bcd60e51b815260206004820152601260248201527f4e6f2045544820746f20776974686472617700000000000000000000000000006044820152606401610866565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611031576040519150601f19603f3d011682016040523d82523d5f602084013e611036565b606091505b50509050806110875760405162461bcd60e51b815260206004820152601360248201527f455448207472616e73666572206661696c6564000000000000000000000000006044820152606401610866565b505050565b5f61109561216a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6110c2611cb1565b6110cb5f6121cc565b565b5f838152602081905260409020600201546110e9908390613767565b34101561115e5760405162461bcd60e51b815260206004820152602560248201527f4172746973745472616974733a20496e73756666696369656e742066756e647360448201527f2073656e740000000000000000000000000000000000000000000000000000006064820152608401610866565b5f838152602081905260409020600101546111ca5760405162461bcd60e51b815260206004820152602660248201527f45524331313535547261697473426173653a204974656d20646f6573206e6f7460448201526508195e1a5cdd60d21b6064820152608401610866565b5f83815260208181526040808320600101547f4a593662ee04d27b6a00ebb31be7fe0c102c2ade82a7c5d764f2df05dc4e28009092529091205461120e9084613754565b11156112825760405162461bcd60e51b815260206004820152602560248201527f45524331313535547261697473426173653a204d617820737570706c7920726560448201527f61636865640000000000000000000000000000000000000000000000000000006064820152608401610866565b61128e84848484612254565b50505050565b61129c611cb1565b5f828152602081905260409020600101546113085760405162461bcd60e51b815260206004820152602660248201527f45524331313535547261697473426173653a204974656d20646f6573206e6f7460448201526508195e1a5cdd60d21b6064820152608401610866565b5f828152602081815260409182902060020183905581518481529081018390527fe588bc995bdb6c45071eb730e1016b41f75bac92912e490d168f428f168f1b6d9101610e2d565b611358611cb1565b5f818152602081905260409020600101546113c45760405162461bcd60e51b815260206004820152602660248201527f45524331313535547261697473426173653a204974656d20646f6573206e6f7460448201526508195e1a5cdd60d21b6064820152608401610866565b5f818152602081815260408083208381556001810184905560028101849055600301805460ff191690557f4a593662ee04d27b6a00ebb31be7fe0c102c2ade82a7c5d764f2df05dc4e2800909152902054156114ae5760405162461bcd60e51b815260206004820152604160248201527f45524331313535547261697473426173653a2043616e6e6f742064656c65746560448201527f206974656d207769746820737570706c792067726561746572207468616e203060648201527f2e00000000000000000000000000000000000000000000000000000000000000608482015260a401610866565b6040518181527f07146d9dc10314d607121c36d0470d8e233ad1e6dbdd94292ffe4e41de0d1a5f9060200160405180910390a150565b6114ec611cb1565b82518451146115635760405162461bcd60e51b815260206004820152603660248201527f45524331313535547261697473426173653a2049447320616e6420747261697460448201527f207479706573206c656e677468206d69736d61746368000000000000000000006064820152608401610866565b81518451146115da5760405162461bcd60e51b815260206004820152603760248201527f45524331313535547261697473426173653a2049447320616e64206d6178207360448201527f7570706c696573206c656e677468206d69736d617463680000000000000000006064820152608401610866565b80518451146116515760405162461bcd60e51b815260206004820152603660248201527f45524331313535547261697473426173653a2049447320616e64206d696e742060448201527f707269636573206c656e677468206d69736d61746368000000000000000000006064820152608401610866565b5f5b8451811015610b03576116cc8582815181106116715761167161372c565b602002602001015185838151811061168b5761168b61372c565b60200260200101518584815181106116a5576116a561372c565b60200260200101518585815181106116bf576116bf61372c565b60200260200101516117bc565b600101611653565b610f383383836122af565b6060815167ffffffffffffffff8111156116fb576116fb612f15565b60405190808252806020026020018201604052801561173f57816020015b604080518082019091525f80825260208201528152602001906001900390816117195790505b5090505f5b82518110156117b557604051806040016040528084838151811061176a5761176a61372c565b6020026020010151815260200161178d86868581518110610b4d57610b4d61372c565b8152508282815181106117a2576117a261372c565b6020908102919091010152600101611744565b5092915050565b6117c4611cb1565b5f82116118395760405162461bcd60e51b815260206004820152603460248201527f45524331313535547261697473426173653a204d617820737570706c79206d7560448201527f73742062652067726561746572207468616e20300000000000000000000000006064820152608401610866565b6040805160808082018352868252602080830186815283850186815260ff89811660608088018281525f8e81528088528a902098518955945160018901559251600288015592516003909601805460ff191696909116959095179094558451898152918201529283018590529082018390527f5348732ae434c118982ddb9f62fe68d21618ee263d0fda5d749e12e734f0dad1910160405180910390a150505050565b60605f825167ffffffffffffffff8111156118f9576118f9612f15565b604051908082528060200260200182016040528015611922578160200160208202803683370190505b5090505f5b8351811015610f15575f61194786868481518110610b4d57610b4d61372c565b1182828151811061195a5761195a61372c565b91151560209283029190910190910152600101611927565b336001600160a01b03861681148015906119d057506001600160a01b038087165f9081527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4501602090815260408083209385168352929052205460ff16155b15611a1a576040517fe237d9220000000000000000000000000000000000000000000000000000000081526001600160a01b03808316600483015287166024820152604401610866565b610c308686868686612381565b611a2f611cb1565b6001600160a01b038116611a71576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401610866565b6107b5816121cc565b5f611a83612427565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f81158015611aaf5750825b90505f8267ffffffffffffffff166001148015611acb5750303b155b905081158015611ad9575080155b15611b10576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315611b5b57845468ff00000000000000001916680100000000000000001785555b611b648661244f565b611b6d33612460565b611b75612471565b611b7d612471565b8315610c3057845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a26000000000000000000000000000000000000000000000000000000001480611c6157507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061079457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610794565b33611ce37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146110cb576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610866565b7f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45007f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c450261108783826137fa565b7f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c450280546060917f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c450091611dc29061377e565b80601f0160208091040260200160405190810160405280929190818152602001828054611dee9061377e565b8015611e395780601f10611e1057610100808354040283529160200191611e39565b820191905f5260205f20905b815481529060010190602001808311611e1c57829003601f168201915b5050505050915050919050565b60605f611e5283612479565b60010190505f8167ffffffffffffffff811115611e7157611e71612f15565b6040519080825280601f01601f191660200182016040528015611e9b576020820181803683370190505b5090508181016020015b5f19017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084611ea557509392505050565b6001600160a01b038416611f0c57604051632bfa23e760e11b81525f6004820152602401610866565b61128e5f8585858561255a565b6001600160a01b038416611f4257604051632bfa23e760e11b81525f6004820152602401610866565b6001600160a01b038516611f84576040517f01a835140000000000000000000000000000000000000000000000000000000081525f6004820152602401610866565b610b03858585858561255a565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061202a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661201e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156110cb576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107b5611cb1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156120c3575060408051601f3d908101601f191682019092526120c0918101906138b5565b60015b612104576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610866565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612160576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610866565b61108783836125ad565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110cb576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6001600160a01b03841661227d57604051632bfa23e760e11b81525f6004820152602401610866565b60408051600180825260208201869052818301908152606082018590526080820190925290610c305f8784848761255a565b7f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45006001600160a01b038316612312576040517fced3e1000000000000000000000000000000000000000000000000000000000081525f6004820152602401610866565b6001600160a01b038481165f818152600184016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6001600160a01b0384166123aa57604051632bfa23e760e11b81525f6004820152602401610866565b6001600160a01b0385166123ec576040517f01a835140000000000000000000000000000000000000000000000000000000081525f6004820152602401610866565b6040805160018082526020820186905281830190815260608201859052608082019092529061241e878784848761255a565b50505050505050565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610794565b612457612602565b6107b581612640565b612468612602565b6107b581612648565b6110cb612602565b5f807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106124c1577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106124ed576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061250b57662386f26fc10000830492506010015b6305f5e1008310612523576305f5e100830492506008015b612710831061253757612710830492506004015b60648310612549576064830492506002015b600a83106107945760010192915050565b61256685858585612650565b6001600160a01b03841615610b03578251339060010361259f576020848101519084015161259883898985858961265c565b5050610c30565b610c308187878787876127c7565b6125b6826128f8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156125fa57611087828261299f565b610f38612a11565b61260a612a49565b6110cb576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107ac612602565b611a2f612602565b61128e84848484612a67565b6001600160a01b0384163b15610c30576040517ff23a6e610000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063f23a6e61906126b990899089908890889088906004016138cc565b6020604051808303815f875af19250505080156126f3575060408051601f3d908101601f191682019092526126f091810190613913565b60015b61275a573d808015612720576040519150601f19603f3d011682016040523d82523d5f602084013e612725565b606091505b5080515f0361275257604051632bfa23e760e11b81526001600160a01b0386166004820152602401610866565b805160208201fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e61000000000000000000000000000000000000000000000000000000001461241e57604051632bfa23e760e11b81526001600160a01b0386166004820152602401610866565b6001600160a01b0384163b15610c30576040517fbc197c810000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063bc197c8190612824908990899088908890889060040161392e565b6020604051808303815f875af192505050801561285e575060408051601f3d908101601f1916820190925261285b91810190613913565b60015b61288b573d808015612720576040519150601f19603f3d011682016040523d82523d5f602084013e612725565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c81000000000000000000000000000000000000000000000000000000001461241e57604051632bfa23e760e11b81526001600160a01b0386166004820152602401610866565b806001600160a01b03163b5f03612946576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401610866565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516129bb9190613990565b5f60405180830381855af49150503d805f81146129f3576040519150601f19603f3d011682016040523d82523d5f602084013e6129f8565b606091505b5091509150612a08858383612b72565b95945050505050565b34156110cb576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f612a52612427565b5468010000000000000000900460ff16919050565b7f4a593662ee04d27b6a00ebb31be7fe0c102c2ade82a7c5d764f2df05dc4e2800612a9485858585612bea565b6001600160a01b038516612b12575f805b8451811015612af75760208181028581018201519087018201515f9081529185905260408220805491928392612adc908490613754565b90915550612aec90508184613754565b925050600101612aa5565b5080826001015f828254612b0b9190613754565b9091555050505b6001600160a01b038416610b03575f805b8451811015612b5e5760208181028581018201519087018201515f908152918590526040909120805482900390559190910190600101612b23565b506001820180549190910390555050505050565b606082612b8757612b8282612e4e565b612be3565b8151158015612b9e57506001600160a01b0384163b155b15612be0576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610866565b50805b9392505050565b805182517f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45009114612c5457825182516040517f5b05999100000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610866565b335f5b8451811015612d6f576020818102868101820151908601909101516001600160a01b03891615612d21575f828152602086815260408083206001600160a01b038d16845290915290205481811015612cfb576040517f03dee4c50000000000000000000000000000000000000000000000000000000081526001600160a01b038b166004820152602481018290526044810183905260648101849052608401610866565b5f838152602087815260408083206001600160a01b038e16845290915290209082900390555b6001600160a01b03881615612d65575f828152602086815260408083206001600160a01b038c16845290915281208054839290612d5f908490613754565b90915550505b5050600101612c57565b508351600103612def5760208401515f906020850151909150866001600160a01b0316886001600160a01b0316846001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051612de0929190918252602082015260400190565b60405180910390a45050610c30565b846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051612e3e92919061399b565b60405180910390a4505050505050565b805115612e5d57805160208201fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811681146107b5575f5ffd5b5f5f60408385031215612eb4575f5ffd5b8235612ebf81612e8f565b946020939093013593505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146107b5575f5ffd5b5f60208284031215612f0a575f5ffd5b8135612be381612ecd565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612f5257612f52612f15565b604052919050565b5f5f67ffffffffffffffff841115612f7457612f74612f15565b50601f8301601f1916602001612f8981612f29565b915050828152838383011115612f9d575f5ffd5b828260208301375f602084830101529392505050565b5f60208284031215612fc3575f5ffd5b813567ffffffffffffffff811115612fd9575f5ffd5b8201601f81018413612fe9575f5ffd5b612ff884823560208401612f5a565b949350505050565b5f60208284031215613010575f5ffd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f612be36020830184613017565b5f67ffffffffffffffff82111561307057613070612f15565b5060051b60200190565b5f82601f830112613089575f5ffd5b813561309c61309782613057565b612f29565b8082825260208201915060208360051b8601019250858311156130bd575f5ffd5b602085015b838110156130da5780358352602092830192016130c2565b5095945050505050565b5f82601f8301126130f3575f5ffd5b612be383833560208501612f5a565b5f5f5f5f60808587031215613115575f5ffd5b843561312081612e8f565b9350602085013567ffffffffffffffff81111561313b575f5ffd5b6131478782880161307a565b935050604085013567ffffffffffffffff811115613163575f5ffd5b61316f8782880161307a565b925050606085013567ffffffffffffffff81111561318b575f5ffd5b613197878288016130e4565b91505092959194509250565b5f5f604083850312156131b4575f5ffd5b82356131bf81612e8f565b9150602083013567ffffffffffffffff8111156131da575f5ffd5b6131e68582860161307a565b9150509250929050565b5f5f5f5f5f60a08688031215613204575f5ffd5b853561320f81612e8f565b9450602086013561321f81612e8f565b9350604086013567ffffffffffffffff81111561323a575f5ffd5b6132468882890161307a565b935050606086013567ffffffffffffffff811115613262575f5ffd5b61326e8882890161307a565b925050608086013567ffffffffffffffff81111561328a575f5ffd5b613296888289016130e4565b9150509295509295909350565b5f5f604083850312156132b4575f5ffd5b50508035926020909101359150565b5f5f604083850312156132d4575f5ffd5b823567ffffffffffffffff8111156132ea575f5ffd5b8301601f810185136132fa575f5ffd5b803561330861309782613057565b8082825260208201915060208360051b850101925087831115613329575f5ffd5b6020840193505b8284101561335457833561334381612e8f565b825260209384019390910190613330565b9450505050602083013567ffffffffffffffff8111156131da575f5ffd5b5f8151808452602084019350602083015f5b828110156133a2578151865260209586019590910190600101613384565b5093949350505050565b602081525f612be36020830184613372565b5f5f604083850312156133cf575f5ffd5b82356133da81612e8f565b9150602083013567ffffffffffffffff8111156133f5575f5ffd5b6131e6858286016130e4565b5f60208284031215613411575f5ffd5b8135612be381612e8f565b5f5f5f5f6080858703121561342f575f5ffd5b843561343a81612e8f565b93506020850135925060408501359150606085013567ffffffffffffffff81111561318b575f5ffd5b803560ff81168114613473575f5ffd5b919050565b5f5f5f5f6080858703121561348b575f5ffd5b843567ffffffffffffffff8111156134a1575f5ffd5b6134ad8782880161307a565b945050602085013567ffffffffffffffff8111156134c9575f5ffd5b8501601f810187136134d9575f5ffd5b80356134e761309782613057565b8082825260208201915060208360051b850101925089831115613508575f5ffd5b6020840193505b828410156135315761352084613463565b82526020938401939091019061350f565b9550505050604085013567ffffffffffffffff81111561354f575f5ffd5b61355b8782880161307a565b925050606085013567ffffffffffffffff811115613577575f5ffd5b6131978782880161307a565b5f5f60408385031215613594575f5ffd5b823561359f81612e8f565b9150602083013580151581146135b3575f5ffd5b809150509250929050565b602080825282518282018190525f918401906040840190835b818110156136015783518051845260209081015181850152909301926040909201916001016135d7565b509095945050505050565b5f5f5f5f6080858703121561361f575f5ffd5b8435935061362f60208601613463565b93969395505050506040820135916060013590565b602080825282518282018190525f918401906040840190835b81811015613601578351151583526020938401939092019160010161365d565b5f5f6040838503121561368e575f5ffd5b823561369981612e8f565b915060208301356135b381612e8f565b5f5f5f5f5f60a086880312156136bd575f5ffd5b85356136c881612e8f565b945060208601356136d881612e8f565b93506040860135925060608601359150608086013567ffffffffffffffff81111561328a575f5ffd5b5f81518060208401855e5f93019283525090919050565b5f612ff86137268386613701565b84613701565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561079457610794613740565b808202811582820484141761079457610794613740565b600181811c9082168061379257607f821691505b6020821081036137b057634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561108757805f5260205f20601f840160051c810160208510156137db5750805b601f840160051c820191505b81811015610b03575f81556001016137e7565b815167ffffffffffffffff81111561381457613814612f15565b61382881613822845461377e565b846137b6565b6020601f82116001811461385a575f83156138435750848201515b5f19600385901b1c1916600184901b178455610b03565b5f84815260208120601f198516915b828110156138895787850151825560209485019460019092019101613869565b50848210156138a657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f602082840312156138c5575f5ffd5b5051919050565b6001600160a01b03861681526001600160a01b038516602082015283604082015282606082015260a060808201525f61390860a0830184613017565b979650505050505050565b5f60208284031215613923575f5ffd5b8151612be381612ecd565b6001600160a01b03861681526001600160a01b038516602082015260a060408201525f61395e60a0830186613372565b82810360608401526139708186613372565b905082810360808401526139848185613017565b98975050505050505050565b5f612be38284613701565b604081525f6139ad6040830185613372565b8281036020840152612a08818561337256fea26469706673582212204403797dc02c0cc58daef76315c757a4a2a45949a38b1b0511b92e38eefac71b64736f6c634300081b0033