0 txs
23 calls
constructor
constructor(address fairWallets)
functions
_primarySaleReceiver
viewfunction _primarySaleReceiver() view returns (address)
balanceOf
viewfunction balanceOf(address account, uint256 id) view returns (uint256)
balanceOfBatch
viewfunction balanceOfBatch(address[] accounts, uint256[] ids) view returns (uint256[])
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
FAIR_WALLETS_ADDRESS
viewfunction FAIR_WALLETS_ADDRESS() view returns (address)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isApprovedForAll
viewfunction isApprovedForAll(address account, address operator) view returns (bool)
MINTER_ROLE
viewfunction MINTER_ROLE() view returns (bytes32)
name
viewfunction name() view returns (string)
operatorFilterDisabled
viewfunction operatorFilterDisabled() view returns (bool)
operatorFilterRegistry
viewfunction operatorFilterRegistry() view returns (address)
owner
viewfunction owner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
royaltyInfo
viewfunction royaltyInfo(uint256 _tokenId, uint256 _salePrice) view returns (address, uint256)
SECOND_ADMIN_ROLE
viewfunction SECOND_ADMIN_ROLE() view returns (bytes32)
signatureReleased
viewfunction signatureReleased() view returns (bool)
stageMints
viewfunction stageMints(uint256, address) view returns (uint256)
stubsBurnt
viewfunction stubsBurnt() view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenClaims
viewfunction tokenClaims(uint256) view returns (uint256)
tokenSupply
viewfunction tokenSupply(uint256 tokenId) view returns (uint256)
totalStages
viewfunction totalStages() view returns (uint256)
uri
viewfunction uri(uint256 tokenId) view returns (string)
userArtClaims
viewfunction userArtClaims(uint256, address) view returns (uint256)
viewCurrentStage
viewfunction viewCurrentStage() view returns (uint256)
viewLatestStage
viewfunction viewLatestStage() view returns (uint256)
viewStageMap
viewfunction viewStageMap(uint256 stageId) view returns (tuple)
viewTokenData
viewfunction viewTokenData(uint256 tokenId) view returns (tuple)
_initialize
nonpayablefunction _initialize(uint96 royaltyPercentage_, address[] royaltyReceivers, tuple[] stages, string name_, string symbol_)
airdrop
nonpayablefunction airdrop(uint256 tokenId, uint256 quantity, address recipient)
changePrimarySaleReceiver
nonpayablefunction changePrimarySaleReceiver(address newPrimarySaleReceiver)
changeSecondaryRoyaltyReceiver
nonpayablefunction changeSecondaryRoyaltyReceiver(address newSecondaryRoyaltyReceiver, uint96 newRoyaltyValue)
claimArt
nonpayablefunction claimArt(uint256 tokenIdToClaim, uint256 claimQuantity, uint256 totalStubsToBurn)
emitEvent
nonpayablefunction emitEvent()
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
mint
payablefunction mint(bytes signature, uint256 nonce, uint256 numberOfTokens, uint256 maxMintsPerWallet, address recipient) payable
releaseSignature
nonpayablefunction releaseSignature()
renounceOwnership
nonpayablefunction renounceOwnership()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
safeBatchTransferFrom
nonpayablefunction safeBatchTransferFrom(address from, address to, uint256[] ids, uint256[] amounts, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes data)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setStages
nonpayablefunction setStages(tuple[] stages, uint256 startId)
setStubsURI
nonpayablefunction setStubsURI(string newURI)
setTokenData
nonpayablefunction setTokenData(uint256 tokenId, tuple data)
setTokenURI
nonpayablefunction setTokenURI(uint256 tokenId, string newURI)
toggleOperatorFilterDisabled
nonpayablefunction toggleOperatorFilterDisabled() returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateOperatorFilterRegistry
nonpayablefunction updateOperatorFilterRegistry(address newRegistry, address subscriptionOrRegistrantToCopy, bool subscribe)
updateRegistrySubscription
nonpayablefunction updateRegistrySubscription(address subscriptionOrRegistrantToCopy, bool subscribe, bool copyEntries)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdraw
payablefunction withdraw() payable
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
Airdrop
event Airdrop(uint256 tokenCount, uint256 newTotal, address[] recipients)
ApprovalForAll
event ApprovalForAll(address indexed account, address indexed operator, bool approved)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
BurnableSet
event BurnableSet(bool burnState)
Initialized
event Initialized(uint8 version)
Mint
event Mint(address minterAddress, uint256 stage, uint256 mintCount)
NewCloneTicker
event NewCloneTicker(address _newClone, address _owner, string symbol)
NewMaxMintsPerWalletSet
event NewMaxMintsPerWalletSet(uint128 newGlobalMintsPerWallet)
NewPathURI
event NewPathURI(string newPathURI)
NewPrimarySaleReceiver
event NewPrimarySaleReceiver(address newPrimaryReceiver)
NewSecondaryRoyalties
event NewSecondaryRoyalties(address newSecondaryReceiver, uint96 newRoyalty)
NewStagesSet
event NewStagesSet((uint40 startTime, uint40 endTime, uint32 mintsPerWallet, uint32 phaseLimit, uint112 price, bytes32 merkleRoot)[] stages, uint256 startIndex)
NewTokenURI
event NewTokenURI(string newTokenURI)
OperatorFilterDisabled
event OperatorFilterDisabled(bool disabled)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
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)
SignatureReleased
event SignatureReleased()
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)
URILocked
event URILocked()
errors
AddressLimitPerTx
error AddressLimitPerTx()
AlreadyLockedURI
error AlreadyLockedURI()
BurnerIsNotApproved
error BurnerIsNotApproved()
BurningOff
error BurningOff()
CannotDeleteOngoingStage
error CannotDeleteOngoingStage()
CannotEditPastStages
error CannotEditPastStages()
EndTimeInThePast
error EndTimeInThePast()
EndTimeLessThanStartTime
error EndTimeLessThanStartTime()
ETHSendFail
error ETHSendFail()
ExceedsMintsPerWallet
error ExceedsMintsPerWallet()
ExceedsNFTsOnSale
error ExceedsNFTsOnSale()
IncorrectIndex
error IncorrectIndex()
InvalidNonce
error InvalidNonce()
InvalidStartTime
error InvalidStartTime()
InvalidTokenId
error InvalidTokenId()
LessNFTsOnSaleThanBefore
error LessNFTsOnSaleThanBefore()
MerkleProofFail
error MerkleProofFail()
MerkleStage
error MerkleStage()
NotEnoughETH
error NotEnoughETH()
NotEnoughStubsToBurn
error NotEnoughStubsToBurn()
NotEnoughSupplyRemaining
error NotEnoughSupplyRemaining()
OnlyAdmin
error OnlyAdmin()
OperatorNotAllowed
error OperatorNotAllowed(address operator)
PhaseLimitEnd
error PhaseLimitEnd()
PhaseLimitExceedsTokenCount
error PhaseLimitExceedsTokenCount()
PhaseStartsBeforePriorPhaseEnd
error PhaseStartsBeforePriorPhaseEnd()
PublicStage
error PublicStage()
RegistryInvalid
error RegistryInvalid()
ReusedHash
error ReusedHash()
SaleEnd
error SaleEnd()
SaleNotActive
error SaleNotActive()
StageDoesNotExist
error StageDoesNotExist()
StageLimitPerTx
error StageLimitPerTx()
StartTimeInThePast
error StartTimeInThePast()
TimeLimit
error TimeLimit()
TokenCountExceedsPhaseLimit
error TokenCountExceedsPhaseLimit()
TokenDoesNotExist
error TokenDoesNotExist()
TokenLimitPerTx
error TokenLimitPerTx()
TooManyStagesInTheFuture
error TooManyStagesInTheFuture()
UnauthorisedUser
error UnauthorisedUser()
UnrecognizableHash
error UnrecognizableHash()
ZeroAddress
error ZeroAddress()
creation bytecode
0x60c0604052306080523480156200001557600080fd5b506040516200600738038062006007833981016040819052620000389162000140565b6001600160a01b038116620000605760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03811660a052620000776200007e565b5062000172565b600054610100900460ff1615620000eb5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156200013e576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200015357600080fd5b81516001600160a01b03811681146200016b57600080fd5b9392505050565b60805160a051615e4c620001bb6000396000818161087601526116750152600081816115ab015281816115eb01528181611ac801528181611b080152611b800152615e4c6000f3fe6080604052600436106102ea5760003560e01c806372c06f5a11610186578063baffe10f116100d7578063dedd76e711610085578063dedd76e71461095d578063e409b125146109e9578063e985e9c514610a09578063ec1bae4214610a53578063f242432a14610a73578063f2fde38b14610a93578063f86a352914610ab357600080fd5b8063baffe10f14610864578063c0dad79b14610898578063ccb8c2c1146108b3578063ce4c61aa146108d3578063d03d583f146108e8578063d539139314610909578063d547741f1461093d57600080fd5b80638da5cb5b116101345780638da5cb5b1461078d57806391d14854146107b457806394b08a4b146107d457806395d89b41146107f4578063a217fddf14610809578063a22cb4651461081e578063b0ccc31e1461083e57600080fd5b806372c06f5a146106a757806378a58522146106bc5780637b0cb839146106f55780637f1fea591461070a578063804207361461072a578063869d3bde1461073f5780638cd90c321461075457600080fd5b80633540558a116102405780634e1273f4116101ee5780634e1273f4146105eb5780634f1ef2861461061857806352d1902d1461062b578063577199fd14610640578063659b8b2a146106605780636e1388ba1461067b578063715018a61461069257600080fd5b80633540558a1461052157806336568abe146105435780633659cfe6146105635780633ccfd60b146105835780633f52af3c1461058b5780634538b17e146105ab5780634e0b9df2146105cb57600080fd5b8063254cc9811161029d578063254cc981146104065780632693ebf214610433578063271cb146146104615780632955a21d1461048f5780632a55205a146104a25780632eb2c2d6146104e15780632f2ff15d1461050157600080fd5b8062fdd58e146102ef57806301ffc9a71461032257806306fdde03146103525780630e89341c14610374578063162094c4146103945780631e2e8c95146103b6578063248a9ca3146103d6575b600080fd5b3480156102fb57600080fd5b5061030f61030a366004614891565b610aca565b6040519081526020015b60405180910390f35b34801561032e57600080fd5b5061034261033d3660046148d3565b610b66565b6040519015158152602001610319565b34801561035e57600080fd5b50610367610b71565b6040516103199190614940565b34801561038057600080fd5b5061036761038f366004614953565b610c00565b3480156103a057600080fd5b506103b46103af366004614a21565b610cf9565b005b3480156103c257600080fd5b506103b46103d1366004614a67565b610d63565b3480156103e257600080fd5b5061030f6103f1366004614953565b60009081526065602052604090206001015490565b34801561041257600080fd5b50610426610421366004614953565b610dfa565b6040516103199190614aa0565b34801561043f57600080fd5b5061030f61044e366004614953565b60009081526101c4602052604090205490565b34801561046d57600080fd5b5061030f61047c366004614953565b6101fe6020526000908152604090205481565b6103b461049d366004614b48565b610fa4565b3480156104ae57600080fd5b506104c26104bd366004614bb6565b6112e4565b604080516001600160a01b039093168352602083019190915201610319565b3480156104ed57600080fd5b506103b46104fc366004614c6c565b611394565b34801561050d57600080fd5b506103b461051c366004614d19565b6114fe565b34801561052d57600080fd5b5061030f600080516020615df783398151915281565b34801561054f57600080fd5b506103b461055e366004614d19565b611523565b34801561056f57600080fd5b506103b461057e366004614d49565b6115a1565b6103b4611669565b34801561059757600080fd5b506103b46105a6366004614d82565b61186b565b3480156105b757600080fd5b506103b46105c6366004614db7565b6118eb565b3480156105d757600080fd5b506103b46105e6366004614e3e565b611955565b3480156105f757600080fd5b5061060b610606366004614ef8565b611995565b6040516103199190614f8c565b6103b4610626366004614f9f565b611abe565b34801561063757600080fd5b5061030f611b73565b34801561064c57600080fd5b506103b461065b366004614fe6565b611c22565b34801561066c57600080fd5b506101f9546103429060ff1681565b34801561068757600080fd5b5061030f6101c85481565b34801561069e57600080fd5b506103b4611d1e565b3480156106b357600080fd5b50610342611d30565b3480156106c857600080fd5b5061030f6106d7366004614d19565b61020160209081526000928352604080842090915290825290205481565b34801561070157600080fd5b506103b4611da5565b34801561071657600080fd5b506103b4610725366004614d49565b611dfd565b34801561073657600080fd5b506103b4611ea4565b34801561074b57600080fd5b5061030f611f16565b34801561076057600080fd5b5061030f61076f366004614d19565b6101fc60209081526000928352604080842090915290825290205481565b34801561079957600080fd5b5060c9546001600160a01b03165b6040516103199190615026565b3480156107c057600080fd5b506103426107cf366004614d19565b611f94565b3480156107e057600080fd5b506103b46107ef36600461503a565b611fbf565b34801561080057600080fd5b50610367612098565b34801561081557600080fd5b5061030f600081565b34801561082a57600080fd5b506103b461083936600461506a565b6120a6565b34801561084a57600080fd5b50610191546107a79061010090046001600160a01b031681565b34801561087057600080fd5b506107a77f000000000000000000000000000000000000000000000000000000000000000081565b3480156108a457600080fd5b50610191546103429060ff1681565b3480156108bf57600080fd5b506103b46108ce366004615098565b612174565b3480156108df57600080fd5b5061030f612421565b3480156108f457600080fd5b506101ff546107a7906001600160a01b031681565b34801561091557600080fd5b5061030f7ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc981565b34801561094957600080fd5b506103b4610958366004614d19565b612476565b34801561096957600080fd5b5061097d610978366004614953565b61249b565b6040516103199190600060c08201905064ffffffffff80845116835280602085015116602084015250604083015163ffffffff808216604085015280606086015116606085015250506001600160701b03608084015116608083015260a083015160a083015292915050565b3480156109f557600080fd5b506103b4610a043660046150c4565b61256f565b348015610a1557600080fd5b50610342610a243660046150f8565b6001600160a01b0391821660009081526101c66020908152604080832093909416825291909152205460ff1690565b348015610a5f57600080fd5b506103b4610a6e366004615126565b6125a4565b348015610a7f57600080fd5b506103b4610a8e3660046151e7565b6127c8565b348015610a9f57600080fd5b506103b4610aae366004614d49565b612925565b348015610abf57600080fd5b5061030f6101fd5481565b60006001600160a01b038316610b3a5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b5060008181526101c5602090815260408083206001600160a01b03861684529091529020545b92915050565b6000610b608261299b565b6101f78054610b7f9061524f565b80601f0160208091040260200160405190810160405280929190818152602001828054610bab9061524f565b8015610bf85780601f10610bcd57610100808354040283529160200191610bf8565b820191906000526020600020905b815481529060010190602001808311610bdb57829003601f168201915b505050505081565b606081600003610c9d576102008054610c189061524f565b80601f0160208091040260200160405190810160405280929190818152602001828054610c449061524f565b8015610c915780601f10610c6657610100808354040283529160200191610c91565b820191906000526020600020905b815481529060010190602001808311610c7457829003601f168201915b50505050509050919050565b60008281526101fb602052604090206003018054610cba9061524f565b9050600003610cdc5760405163677510db60e11b815260040160405180910390fd5b60008281526101fb602052604090206003018054610c189061524f565b610d04600033611f94565b610d2157604051634e8df0bf60e01b815260040160405180910390fd5b81600003610d42576040516307ed98ed60e31b815260040160405180910390fd5b60008281526101fb60205260409020600301610d5e82826152cf565b505050565b610d7b600080516020615df783398151915233611f94565b610d9857604051634e8df0bf60e01b815260040160405180910390fd5b8215610ddd5760008381526101fb602052604090206003018054610dbb9061524f565b9050600003610ddd5760405163677510db60e11b815260040160405180910390fd5b610d5e8184846040518060200160405280600081525060006129db565b60408051610100810182526000808252602080830182905282840182905260608084018390526080840183905260a0840183905260c0840183905260e08401528482526101fb9052919091206003018054610e549061524f565b9050600003610e765760405163677510db60e11b815260040160405180910390fd5b60008281526101fb6020908152604091829020825161010081018452815464ffffffffff8082168352600160281b82041693820193909352600160501b830463ffffffff90811694820194909452600160701b83049093166060840152600160901b9091046001600160701b03166080830152600181015460a083015260028101546001600160a01b031660c083015260038101805460e084019190610f1b9061524f565b80601f0160208091040260200160405190810160405280929190818152602001828054610f479061524f565b8015610f945780601f10610f6957610100808354040283529160200191610f94565b820191906000526020600020905b815481529060010190602001808311610f7757829003601f168201915b5050505050815250509050919050565b6000610fae611f16565b60008181526101fa60209081526040808320815160c081018352815464ffffffffff8082168352600160281b82041694820194909452600160501b840463ffffffff90811693820193909352600160701b84049092166060830152600160901b9092046001600160701b0316608082015260019091015460a082015291925086900361104d57604051633ab3447f60e11b815260040160405180910390fd5b6000611057612b3a565b9050816060015163ffffffff1681106110825760405162491a1760e81b815260040160405180910390fd5b60a0820151156110a557604051630268975d60e51b815260040160405180910390fd5b6101f95460ff1661116c5760006110be85888a89612b7b565b9050737a6f5866f97034bb7153829bdaac1ffcb8facb716110df828b612bfc565b6001600160a01b031614611106576040516332c3ce2560e11b815260040160405180910390fd5b6001600160a01b03851660009081526101c76020526040902054881161113f5760405163dc5a682560e01b815260040160405180910390fd5b61114a8860286153a4565b43111561116a57604051639e8c142f60e01b815260040160405180910390fd5b505b60808201516001600160701b031661118487826153b7565b34146111a357604051632c1d501360e11b815260040160405180910390fd5b8660001080156111b4575060148711155b6111d1576040516332b4cb2160e21b815260040160405180910390fd5b60006111e186868a86888c612c18565b905061120086600083604051806020016040528060008152508d6129db565b8781101561128e57600082611215838b6153ce565b61121f91906153b7565b604051909150600090339083908381818185875af1925050503d8060008114611264576040519150601f19603f3d011682016040523d82523d6000602084013e611269565b606091505b505090508061128b57604051635579a42f60e11b815260040160405180910390fd5b50505b604080516001600160a01b0388168152602081018790529081018290527f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f9060600160405180910390a150505050505050505050565b6000828152610160602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b031692820192909252829161135b57506040805180820190915261015f546001600160a01b0381168252600160a01b90046001600160601b031660208201525b60208101516000906127109061137a906001600160601b0316876153b7565b61138491906153e1565b91519350909150505b9250929050565b61019154859060ff161580156113bb57506101915461010090046001600160a01b03163b15155b156114b157336001600160a01b0382160361141a576001600160a01b0386163314806113ec57506113ec8633610a24565b6114085760405162461bcd60e51b8152600401610b3190615403565b6114158686868686612d3b565b6114f6565b61019154604051633185c44d60e21b81526101009091046001600160a01b03169063c6171134906114519030903390600401615451565b602060405180830381865afa15801561146e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611492919061546b565b6114b15733604051633b79c77360e21b8152600401610b319190615026565b6001600160a01b0386163314806114cd57506114cd8633610a24565b6114e95760405162461bcd60e51b8152600401610b3190615403565b6114f68686868686612d3b565b505050505050565b60008281526065602052604090206001015461151981612f03565b610d5e8383612f0d565b6001600160a01b03811633146115935760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610b31565b61159d8282612f93565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036115e95760405162461bcd60e51b8152600401610b3190615488565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661161b612ffa565b6001600160a01b0316146116415760405162461bcd60e51b8152600401610b31906154d4565b61164a81613016565b604080516000808252602082019092526116669183919061301e565b50565b611671613189565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304b8adb46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f59190615520565b9050611702600033611f94565b806117155750336001600160a01b038216145b61175a5760405162461bcd60e51b81526020600482015260166024820152754e6f74206f776e6572206f7220466169722e78797a2160501b6044820152606401610b31565b4760006001600160a01b03831660326117748460036153b7565b61177e91906153e1565b604051600081818185875af1925050503d80600081146117ba576040519150601f19603f3d011682016040523d82523d6000602084013e6117bf565b606091505b50509050806117e157604051635579a42f60e11b815260040160405180910390fd5b6101ff5460405147916000916001600160a01b039091169083908381818185875af1925050503d8060008114611833576040519150601f19603f3d011682016040523d82523d6000602084013e611838565b606091505b505090508061185a57604051635579a42f60e11b815260040160405180910390fd5b50505050506118696001609755565b565b611876600033611f94565b61189357604051634e8df0bf60e01b815260040160405180910390fd5b61189d82826131e9565b604080516001600160a01b03841681526001600160601b03831660208201527fef5955f7902e6696c028804c62be1c24a0f98d9d30de5c31c83fa7f8b5c15c6f910160405180910390a15050565b6118f6600033611f94565b61191357604051634e8df0bf60e01b815260040160405180910390fd5b81600003611934576040516307ed98ed60e31b815260040160405180910390fd5b60008281526101fb60205260409020819061194f82826156a3565b50505050565b61196d600080516020615df783398151915233611f94565b61198a57604051634e8df0bf60e01b815260040160405180910390fd5b61194f8383836132e7565b606081518351146119fa5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610b31565b600083516001600160401b03811115611a1557611a1561496c565b604051908082528060200260200182016040528015611a3e578160200160208202803683370190505b50905060005b8451811015611ab657611a89858281518110611a6257611a626157ec565b6020026020010151858381518110611a7c57611a7c6157ec565b6020026020010151610aca565b828281518110611a9b57611a9b6157ec565b6020908102919091010152611aaf81615802565b9050611a44565b509392505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003611b065760405162461bcd60e51b8152600401610b3190615488565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611b38612ffa565b6001600160a01b031614611b5e5760405162461bcd60e51b8152600401610b31906154d4565b611b6782613016565b61159d8282600161301e565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c0e5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610b31565b50600080516020615db08339815191525b90565b611c2b33613742565b611c4857604051634755657960e01b815260040160405180910390fd5b826001600160a01b0381163b600003611c7457604051630458607f60e41b815260040160405180910390fd5b60405163c3c5a54760e01b81526001600160a01b0382169063c3c5a54790611ca0903090600401615026565b6020604051808303816000875af1158015611cbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce3919061546b565b611cf257611cf281848461374e565b61019180546001600160a01b0390921661010002610100600160a81b0319909216919091179055505050565b611d266138ef565b6118696000613949565b6000611d3b33613742565b611d5857604051634755657960e01b815260040160405180910390fd5b610191805460ff81161560ff1990911681179091556040518181527fd8c469bcb7a4be6d69103a5fdb65991249a95423350dc583495ccf5e7c28a88d9060200160405180910390a1905090565b611dad6138ef565b7f62e4ed1ae964bf13ab15b4efee5e0889bdf5d1b1cd6d33d036546dc478773c6030611de160c9546001600160a01b031690565b6101f8604051611df39392919061581b565b60405180910390a1565b611e08600033611f94565b611e2557604051634e8df0bf60e01b815260040160405180910390fd5b6001600160a01b038116611e4c5760405163d92e233d60e01b815260040160405180910390fd5b6101ff80546001600160a01b0319166001600160a01b0383169081179091556040517fd45e158b56e768c1167267f8516bcf96348071775faded3c9216b60855d873de91611e9991615026565b60405180910390a150565b611eaf600033611f94565b611ecc57604051634e8df0bf60e01b815260040160405180910390fd5b6101f95460ff1615611edd57600080fd5b6101f9805460ff191660011790556040517ffbbcc58867e8fad1d9f72f1b991660f5ec5e4e068374aa442b8604eef182b63990600090a1565b6101fd546000905b8015611f7a576000190160008181526101fa602052604090205464ffffffffff164210801590611f6b575060008181526101fa6020526040902054600160281b900464ffffffffff164211155b15611f7557919050565b611f1e565b5060405163b7b2409760e01b815260040160405180910390fd5b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611fc833613742565b611fe557604051634755657960e01b815260040160405180910390fd5b6101915461010090046001600160a01b0316803b60000361201957604051630458607f60e41b815260040160405180910390fd5b6001600160a01b03841661208d5760405163034a0dc160e41b815230600482015282151560248201526001600160a01b038216906334a0dc1090604401600060405180830381600087803b15801561207057600080fd5b505af1158015612084573d6000803e3d6000fd5b5050505061194f565b61194f81858561374e565b6101f88054610b7f9061524f565b61019154829060ff161580156120cd57506101915461010090046001600160a01b03163b15155b156121695761019154604051633185c44d60e21b81526101009091046001600160a01b03169063c6171134906121099030908590600401615451565b602060405180830381865afa158015612126573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214a919061546b565b6121695780604051633b79c77360e21b8152600401610b319190615026565b610d5e33848461399b565b60008381526101fb60209081526040808320815161010081018352815464ffffffffff8082168352600160281b82041694820194909452600160501b840463ffffffff90811693820193909352600160701b84049092166060830152600160901b9092046001600160701b03166080820152600182015460a082015260028201546001600160a01b031660c082015260038201805491929160e08401919061221b9061524f565b80601f01602080910402602001604051908101604052809291908181526020018280546122479061524f565b80156122945780601f1061226957610100808354040283529160200191612294565b820191906000526020600020905b81548152906001019060200180831161227757829003601f168201915b50505050508152505090506000838260a001516122b191906153b7565b90508281146122d3576040516327806ba760e11b815260040160405180910390fd5b815164ffffffffff164210156122fc5760405163b7b2409760e01b815260040160405180910390fd5b816020015164ffffffffff164211156123285760405163b7b2409760e01b815260040160405180910390fd5b816040015163ffffffff16846101fe60008881526020019081526020016000205461235391906153a4565b11156123725760405163740f8e6d60e11b815260040160405180910390fd5b606082015160008681526102016020908152604080832033845290915290205463ffffffff909116906123a69086906153a4565b11156123c55760405163740f8e6d60e11b815260040160405180910390fd5b60008581526101fe60209081526040808320805488019055610201825280832033808552925282208054870190556123fd9183613a7c565b61241a3386866040518060200160405280600081525060006129db565b5050505050565b6101fd546000905b801561246e576000190160008181526101fa6020526040902054600160281b900464ffffffffff16421115612469576124638160016153a4565b91505090565b612429565b506000905090565b60008281526065602052604090206001015461249181612f03565b610d5e8383612f93565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091526101fd5482106124f0576040516327e7ab7d60e11b815260040160405180910390fd5b5060009081526101fa6020908152604091829020825160c081018452815464ffffffffff8082168352600160281b82041693820193909352600160501b830463ffffffff90811694820194909452600160701b83049093166060840152600160901b9091046001600160701b031660808301526001015460a082015290565b61257a600033611f94565b61259757604051634e8df0bf60e01b815260040160405180910390fd5b61020061159d82826152cf565b600054610100900460ff16158080156125c45750600054600160ff909116105b806125de5750303b1580156125de575060005460ff166001145b6126415760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b31565b6000805460ff191660011790558015612664576000805461ff0019166101001790555b855160021461267257600080fd5b61267a613c27565b612682613c52565b61268d600033612f0d565b6126a5600080516020615df783398151915233612f0d565b6126ad613c79565b6126b5613ca8565b6126e36daaeb6d7670e522a718067333cd4e733cc6cdda760b79bafa08df41ecfa224f810dceb66001613cd7565b6101f76126f084826152cf565b506101f86126fe83826152cf565b5085600081518110612712576127126157ec565b60200260200101516101ff60006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061276586600181518110612757576127576157ec565b6020026020010151886131e9565b831561277957612777858560006132e7565b505b80156127bf576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b61019154859060ff161580156127ef57506101915461010090046001600160a01b03163b15155b156128e057336001600160a01b03821603612849576001600160a01b03861633148061282057506128208633610a24565b61283c5760405162461bcd60e51b8152600401610b3190615403565b6114158686868686613d1a565b61019154604051633185c44d60e21b81526101009091046001600160a01b03169063c6171134906128809030903390600401615451565b602060405180830381865afa15801561289d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c1919061546b565b6128e05733604051633b79c77360e21b8152600401610b319190615026565b6001600160a01b0386163314806128fc57506128fc8633610a24565b6129185760405162461bcd60e51b8152600401610b3190615403565b6114f68686868686613d1a565b61292d6138ef565b6001600160a01b0381166129925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b31565b61166681613949565b60006001600160e01b03198216636cdb3d1360e11b14806129cc57506001600160e01b031982166303a24d0760e21b145b80610b605750610b6082613e2f565b6001600160a01b038516612a3b5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610b31565b336000612a4786613e54565b90506000612a5486613e54565b905060008781526101c5602090815260408083206001600160a01b038c16845290915281208054889290612a899084906153a4565b909155505060008781526101c4602052604081208054889290612aad9084906153a4565b90915550508315612ad5576001600160a01b03881660009081526101c7602052604090208490555b60408051888152602081018890526001600160a01b03808b1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4612b308360008a8a8a8a613e9f565b5050505050505050565b6101c85460008080526101c46020527f900a14da7b74a618a1c29a2c66a3b979a3228cef88a1bb8e8ee5ed807c9db89f549091612b76916153a4565b905090565b604080517f5b174e00b853ebb074ee5cb5d23ca67a264896e5670f923ac103fccad5232b5560208201526001600160a01b03861691810191909152606081018490526080810183905260a081018290526000908190612bf29060c00160405160208183030381529060405280519060200120613ffa565b9695505050505050565b6000806000612c0b85856140d5565b91509150611ab681614117565b60008581526101fc602090815260408083206001600160a01b038a168452909152808220549084015163ffffffff1615612c9a57836040015163ffffffff168110612c7657604051632f18066d60e01b815260040160405180910390fd5b836040015163ffffffff168682011115612c9a5780846040015163ffffffff160395505b836060015163ffffffff168686011115612cbe5784846060015163ffffffff160395505b600083118015612cd257506101f95460ff16155b15612d0757828110612cf757604051632f18066d60e01b815260040160405180910390fd5b828682011115612d075780830395505b60008781526101fc602090815260408083206001600160a01b038c1684529091529020908601905550839695505050505050565b8151835114612d9d5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610b31565b6001600160a01b038416612dc35760405162461bcd60e51b8152600401610b31906158c4565b3360005b8451811015612e9d576000858281518110612de457612de46157ec565b602002602001015190506000858381518110612e0257612e026157ec565b60209081029190910181015160008481526101c5835260408082206001600160a01b038e168352909352919091205490915081811015612e545760405162461bcd60e51b8152600401610b3190615909565b60009283526101c5602090815260408085206001600160a01b038d811687529252808520928490039092558916835290912080549091019055612e9681615802565b9050612dc7565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051612eed929190615953565b60405180910390a46114f681878787878761425c565b6116668133614317565b612f178282611f94565b61159d5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612f4f3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b612f9d8282611f94565b1561159d5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600080516020615db0833981519152546001600160a01b031690565b6116666138ef565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561305157610d5e83614370565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156130ab575060408051601f3d908101601f191682019092526130a891810190615978565b60015b61310e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610b31565b600080516020615db0833981519152811461317d5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610b31565b50610d5e83838361440c565b6002609754036131db5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b31565b6002609755565b6001609755565b6127106001600160601b03821611156132575760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608401610b31565b6001600160a01b0382166132ad5760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401610b31565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b9091021761015f55565b600082816132f3612421565b90506014821115613317576040516373c2b52560e11b815260040160405180910390fd5b6101fd54801580159061332957508185105b15613347576040516344ca163560e11b815260040160405180910390fd5b80851115613368576040516307cc4d8f60e01b815260040160405180910390fd5b6133736014836153a4565b61337d84876153a4565b111561339c5760405163c1eae7bb60e01b815260040160405180910390fd5b60008581526101fa602052604081205464ffffffffff1690849003613429574281116133db5760405163bf4a806960e01b815260040160405180910390fd5b6101fd8690556040517f842cd1905522b3731a39e0d2fb9d3757bc29b4e57e9253b230d437bf10505e9b90613415908a908a908a9061599c565b60405180910390a18594505050505061373b565b60008888600081811061343e5761343e6157ec565b905060c002018036038101906134549190615a5d565b905061345e612b3a565b816060015163ffffffff16101561348857604051630e93fda160e21b815260040160405180910390fd5b42821115801561349757508115155b80156134a557506101fd5487105b1561350257805164ffffffffff1682146134d257604051632ca4094f60e21b815260040160405180910390fd5b42816020015164ffffffffff16116134fd5760405163804491f960e01b815260040160405180910390fd5b61352d565b42816000015164ffffffffff161161352d5760405163667e606760e11b815260040160405180910390fd5b868581015b888214613566578a8a8a840381811061354d5761354d6157ec565b905060c002018036038101906135639190615a5d565b92505b826000015164ffffffffff16836020015164ffffffffff161161359c57604051631131dc6b60e11b815260040160405180910390fd5b811561362c57600019820160009081526101fa6020526040902054606084015164ffffffffff600160281b8304169163ffffffff600160701b90910481169116101561360257428110613602576040516357be1d0d60e01b815260040160405180910390fd5b835164ffffffffff16811061362a5760405163064f2b0760e31b815260040160405180910390fd5b505b60008281526101fa60209081526040918290208551815492870151938701516060880151608089015164ffffffffff93841669ffffffffffffffffffff1990961695909517600160281b93909616929092029490941767ffffffffffffffff60501b1916600160501b63ffffffff9586160263ffffffff60701b191617600160701b9490911693909302929092176001600160901b0316600160901b6001600160701b039092169190910217815560a084015160019182015590910190808210613532576101fd8190556040517f842cd1905522b3731a39e0d2fb9d3757bc29b4e57e9253b230d437bf10505e9b9061372a908d908d908d9061599c565b60405180910390a196505050505050505b9392505050565b6000610b608183611f94565b60405163c3c5a54760e01b81526001600160a01b0384169063c3c5a5479061377a903090600401615026565b6020604051808303816000875af1158015613799573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137bd919061546b565b1561385257801561382457604051632cc5350560e21b81526001600160a01b0384169063b314d414906137f69030908690600401615451565b600060405180830381600087803b15801561381057600080fd5b505af11580156127bf573d6000803e3d6000fd5b604051630781ad2d60e21b81526001600160a01b03841690631e06b4b4906137f69030908690600401615451565b801561388657604051633e9f1edf60e11b81526001600160a01b03841690637d3e3dbe906137f69030908690600401615451565b6001600160a01b038216156138c35760405163a0af290360e01b81526001600160a01b0384169063a0af2903906137f69030908690600401615451565b604051632210724360e11b81526001600160a01b03841690634420e486906137f6903090600401615026565b60c9546001600160a01b031633146118695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b31565b60c980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603613a0e5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610b31565b6001600160a01b0383811660008181526101c66020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b038316613ade5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610b31565b336000613aea84613e54565b90506000613af784613e54565b60408051602080820183526000918290528882526101c581528282206001600160a01b038b1683529052205490915084811015613b825760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610b31565b60008681526101c5602090815260408083206001600160a01b038b81168086529184528285208a870390558a85526101c4845282852080548b9003905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4846101c86000828254613c0e91906153a4565b90915550506040805160208101909152600090526127bf565b600054610100900460ff16613c4e5760405162461bcd60e51b8152600401610b3190615b00565b6118695b600054610100900460ff166118695760405162461bcd60e51b8152600401610b3190615b00565b600054610100900460ff16613ca05760405162461bcd60e51b8152600401610b3190615b00565b611869614431565b600054610100900460ff16613ccf5760405162461bcd60e51b8152600401610b3190615b00565b611869614461565b600054610100900460ff16613cfe5760405162461bcd60e51b8152600401610b3190615b00565b6001600160a01b0383163b15610d5e5782611cf281848461374e565b6001600160a01b038416613d405760405162461bcd60e51b8152600401610b31906158c4565b336000613d4c85613e54565b90506000613d5985613e54565b905060008681526101c5602090815260408083206001600160a01b038c16845290915290205485811015613d9f5760405162461bcd60e51b8152600401610b3190615909565b60008781526101c5602090815260408083206001600160a01b038d81168086529184528285208b870390558c81168086529483902080548c01905582518c81529384018b90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4613e24848a8a8a8a8a613e9f565b505050505050505050565b60006001600160e01b0319821663152a902d60e11b1480610b605750610b6082614488565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613e8e57613e8e6157ec565b602090810291909101015292915050565b6001600160a01b0384163b156114f65760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190613ee39089908990889088908890600401615b4b565b6020604051808303816000875af1925050508015613f1e575060408051601f3d908101601f19168201909252613f1b91810190615b90565b60015b613fca57613f2a615bad565b806308c379a003613f635750613f3e615bc8565b80613f495750613f65565b8060405162461bcd60e51b8152600401610b319190614940565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610b31565b6001600160e01b0319811663f23a6e6160e01b146127bf5760405162461bcd60e51b8152600401610b3190615c51565b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6020808301919091527f36cb08f6aafe2399767bf40e9642429d7535f40e61bd81428cad09095c5d337d828401527f06c015bd22b4c69690933c1058878ebdfef31f9aaae40bbe86d8a09fe1b2972c60608301524660808301523060a0808401919091528351808403909101815260c08301845280519082012061190160f01b60e084015260e283018190526101028084018690528451808503909101815261012290930190935281519101206000919061373b565b600080825160410361410b5760208301516040840151606085015160001a6140ff878285856144bd565b9450945050505061138d565b5060009050600261138d565b600081600481111561412b5761412b615c99565b036141335750565b600181600481111561414757614147615c99565b0361418f5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606401610b31565b60028160048111156141a3576141a3615c99565b036141f05760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b31565b600381600481111561420457614204615c99565b036116665760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b31565b6001600160a01b0384163b156114f65760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906142a09089908990889088908890600401615caf565b6020604051808303816000875af19250505080156142db575060408051601f3d908101601f191682019092526142d891810190615b90565b60015b6142e757613f2a615bad565b6001600160e01b0319811663bc197c8160e01b146127bf5760405162461bcd60e51b8152600401610b3190615c51565b6143218282611f94565b61159d5761432e81614577565b614339836020614589565b60405160200161434a929190615d0d565b60408051601f198184030181529082905262461bcd60e51b8252610b3191600401614940565b6001600160a01b0381163b6143dd5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610b31565b600080516020615db083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61441583614724565b6000825111806144225750805b15610d5e5761194f8383614764565b600054610100900460ff166144585760405162461bcd60e51b8152600401610b3190615b00565b61186933613949565b600054610100900460ff166131e25760405162461bcd60e51b8152600401610b3190615b00565b60006001600160e01b03198216637965db0b60e01b1480610b6057506301ffc9a760e01b6001600160e01b0319831614610b60565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311156144ea575060009050600361456e565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561453e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166145675760006001925092505061456e565b9150600090505b94509492505050565b6060610b606001600160a01b03831660145b606060006145988360026153b7565b6145a39060026153a4565b6001600160401b038111156145ba576145ba61496c565b6040519080825280601f01601f1916602001820160405280156145e4576020820181803683370190505b509050600360fc1b816000815181106145ff576145ff6157ec565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061462e5761462e6157ec565b60200101906001600160f81b031916908160001a90535060006146528460026153b7565b61465d9060016153a4565b90505b60018111156146d5576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110614691576146916157ec565b1a60f81b8282815181106146a7576146a76157ec565b60200101906001600160f81b031916908160001a90535060049490941c936146ce81615d7c565b9050614660565b50831561373b5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610b31565b61472d81614370565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6147cc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610b31565b600080846001600160a01b0316846040516147e79190615d93565b600060405180830381855af49150503d8060008114614822576040519150601f19603f3d011682016040523d82523d6000602084013e614827565b606091505b509150915061484f8282604051806060016040528060278152602001615dd060279139614858565b95945050505050565b6060831561486757508161373b565b61373b8383815115613f495781518083602001fd5b6001600160a01b038116811461166657600080fd5b600080604083850312156148a457600080fd5b82356148af8161487c565b946020939093013593505050565b6001600160e01b03198116811461166657600080fd5b6000602082840312156148e557600080fd5b813561373b816148bd565b60005b8381101561490b5781810151838201526020016148f3565b50506000910152565b6000815180845261492c8160208601602086016148f0565b601f01601f19169290920160200192915050565b60208152600061373b6020830184614914565b60006020828403121561496557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b03811182821017156149a7576149a761496c565b6040525050565b600082601f8301126149bf57600080fd5b81356001600160401b038111156149d8576149d861496c565b6040516149ef601f8301601f191660200182614982565b818152846020838601011115614a0457600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614a3457600080fd5b8235915060208301356001600160401b03811115614a5157600080fd5b614a5d858286016149ae565b9150509250929050565b600080600060608486031215614a7c57600080fd5b83359250602084013591506040840135614a958161487c565b809150509250925092565b60208152600064ffffffffff808451166020840152806020850151166040840152506040830151614ad9606084018263ffffffff169052565b50606083015163ffffffff811660808401525060808301516001600160701b03811660a08401525060a083015160c083015260c0830151614b2560e08401826001600160a01b03169052565b5060e083015161010083810152614b40610120840182614914565b949350505050565b600080600080600060a08688031215614b6057600080fd5b85356001600160401b03811115614b7657600080fd5b614b82888289016149ae565b9550506020860135935060408601359250606086013591506080860135614ba88161487c565b809150509295509295909350565b60008060408385031215614bc957600080fd5b50508035926020909101359150565b60006001600160401b03821115614bf157614bf161496c565b5060051b60200190565b600082601f830112614c0c57600080fd5b81356020614c1982614bd8565b604051614c268282614982565b83815260059390931b8501820192828101915086841115614c4657600080fd5b8286015b84811015614c615780358352918301918301614c4a565b509695505050505050565b600080600080600060a08688031215614c8457600080fd5b8535614c8f8161487c565b94506020860135614c9f8161487c565b935060408601356001600160401b0380821115614cbb57600080fd5b614cc789838a01614bfb565b94506060880135915080821115614cdd57600080fd5b614ce989838a01614bfb565b93506080880135915080821115614cff57600080fd5b50614d0c888289016149ae565b9150509295509295909350565b60008060408385031215614d2c57600080fd5b823591506020830135614d3e8161487c565b809150509250929050565b600060208284031215614d5b57600080fd5b813561373b8161487c565b80356001600160601b0381168114614d7d57600080fd5b919050565b60008060408385031215614d9557600080fd5b8235614da08161487c565b9150614dae60208401614d66565b90509250929050565b60008060408385031215614dca57600080fd5b8235915060208301356001600160401b03811115614de757600080fd5b83016101008186031215614d3e57600080fd5b60008083601f840112614e0c57600080fd5b5081356001600160401b03811115614e2357600080fd5b60208301915083602060c08302850101111561138d57600080fd5b600080600060408486031215614e5357600080fd5b83356001600160401b03811115614e6957600080fd5b614e7586828701614dfa565b909790965060209590950135949350505050565b600082601f830112614e9a57600080fd5b81356020614ea782614bd8565b604051614eb48282614982565b83815260059390931b8501820192828101915086841115614ed457600080fd5b8286015b84811015614c61578035614eeb8161487c565b8352918301918301614ed8565b60008060408385031215614f0b57600080fd5b82356001600160401b0380821115614f2257600080fd5b614f2e86838701614e89565b93506020850135915080821115614f4457600080fd5b50614a5d85828601614bfb565b600081518084526020808501945080840160005b83811015614f8157815187529582019590820190600101614f65565b509495945050505050565b60208152600061373b6020830184614f51565b60008060408385031215614fb257600080fd5b8235614fbd8161487c565b915060208301356001600160401b03811115614a5157600080fd5b801515811461166657600080fd5b600080600060608486031215614ffb57600080fd5b83356150068161487c565b925060208401356150168161487c565b91506040840135614a9581614fd8565b6001600160a01b0391909116815260200190565b60008060006060848603121561504f57600080fd5b833561505a8161487c565b9250602084013561501681614fd8565b6000806040838503121561507d57600080fd5b82356150888161487c565b91506020830135614d3e81614fd8565b6000806000606084860312156150ad57600080fd5b505081359360208301359350604090920135919050565b6000602082840312156150d657600080fd5b81356001600160401b038111156150ec57600080fd5b614b40848285016149ae565b6000806040838503121561510b57600080fd5b82356151168161487c565b91506020830135614d3e8161487c565b60008060008060008060a0878903121561513f57600080fd5b61514887614d66565b955060208701356001600160401b038082111561516457600080fd5b6151708a838b01614e89565b9650604089013591508082111561518657600080fd5b6151928a838b01614dfa565b909650945060608901359150808211156151ab57600080fd5b6151b78a838b016149ae565b935060808901359150808211156151cd57600080fd5b506151da89828a016149ae565b9150509295509295509295565b600080600080600060a086880312156151ff57600080fd5b853561520a8161487c565b9450602086013561521a8161487c565b9350604086013592506060860135915060808601356001600160401b0381111561524357600080fd5b614d0c888289016149ae565b600181811c9082168061526357607f821691505b60208210810361528357634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610d5e57600081815260208120601f850160051c810160208610156152b05750805b601f850160051c820191505b818110156114f6578281556001016152bc565b81516001600160401b038111156152e8576152e861496c565b6152fc816152f6845461524f565b84615289565b602080601f83116001811461533157600084156153195750858301515b600019600386901b1c1916600185901b1785556114f6565b600085815260208120601f198616915b8281101561536057888601518255948401946001909101908401615341565b508582101561537e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b6057610b6061538e565b8082028115828204841417610b6057610b6061538e565b81810381811115610b6057610b6061538e565b6000826153fe57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b6001600160a01b0392831681529116602082015260400190565b60006020828403121561547d57600080fd5b815161373b81614fd8565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60006020828403121561553257600080fd5b815161373b8161487c565b64ffffffffff8116811461166657600080fd5b63ffffffff8116811461166657600080fd5b60008135610b6081615550565b6001600160701b038116811461166657600080fd5b60008135610b608161556f565b60008135610b608161487c565b6000808335601e198436030181126155b557600080fd5b8301803591506001600160401b038211156155cf57600080fd5b60200191503681900382131561138d57600080fd5b6001600160401b038311156155fb576155fb61496c565b61560f83615609835461524f565b83615289565b6000601f841160018114615643576000851561562b5750838201355b600019600387901b1c1916600186901b17835561241a565b600083815260209020601f19861690835b828110156156745786850135825560209485019460019092019101615654565b50868210156156915760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81356156ae8161553d565b64ffffffffff8116905081548164ffffffffff19821617835560208401356156d58161553d565b69ffffffffff00000000008160281b168369ffffffffffffffffffff1984161717845550505061572e61570a60408401615562565b82805463ffffffff60501b191660509290921b63ffffffff60501b16919091179055565b61576161573d60608401615562565b82805463ffffffff60701b191660709290921b63ffffffff60701b16919091179055565b61579461577060808401615584565b8280546001600160901b031660909290921b6001600160901b031916919091179055565b60a082013560018201556157d16157ad60c08401615591565b6002830180546001600160a01b0319166001600160a01b0392909216919091179055565b6157de60e083018361559e565b61194f8183600386016155e4565b634e487b7160e01b600052603260045260246000fd5b6000600182016158145761581461538e565b5060010190565b6001600160a01b0384811682528316602080830191909152606060408301528254600091829161584a8161524f565b806060870152608060018084166000811461586c5760018114615886576158b4565b60ff1985168984015283151560051b8901830196506158b4565b896000528560002060005b858110156158ac5781548b8201860152908301908701615891565b8a0184019750505b50949a9950505050505050505050565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b6040815260006159666040830185614f51565b828103602084015261484f8185614f51565b60006020828403121561598a57600080fd5b5051919050565b8035614d7d8161556f565b6040808252818101849052600090606080840187845b88811015615a475781356159c58161553d565b64ffffffffff9081168452602090838201356159e08161553d565b1690840152818501356159f281615550565b63ffffffff908116848701528285013590615a0c82615550565b16838501526080615a1e838201615991565b6001600160701b03169084015260a0828101359084015260c092830192909101906001016159b2565b5050809350505050826020830152949350505050565b600060c08284031215615a6f57600080fd5b60405160c081018181106001600160401b0382111715615a9157615a9161496c565b6040528235615a9f8161553d565b81526020830135615aaf8161553d565b60208201526040830135615ac281615550565b60408201526060830135615ad581615550565b60608201526080830135615ae88161556f565b608082015260a0928301359281019290925250919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090615b8590830184614914565b979650505050505050565b600060208284031215615ba257600080fd5b815161373b816148bd565b600060033d1115611c1f5760046000803e5060005160e01c90565b600060443d1015615bd65790565b6040516003193d81016004833e81513d6001600160401b038160248401118184111715615c0557505050505090565b8285019150815181811115615c1d5750505050505090565b843d8701016020828501011115615c375750505050505090565b615c4660208286010187614982565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b0386811682528516602082015260a060408201819052600090615cdb90830186614f51565b8281036060840152615ced8186614f51565b90508281036080840152615d018185614914565b98975050505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351615d3f8160178501602088016148f0565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615d708160288401602088016148f0565b01602801949350505050565b600081615d8b57615d8b61538e565b506000190190565b60008251615da58184602087016148f0565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564fd63b67fde00b77f1f54f050135a475665b815acd10a8e7fd785ba074846734aa2646970667358221220fab82d0cc402904b71d25827bc59c509ac450fd3fc4df7961860220ceb65526164736f6c6343000811003300000000000000000000000043376277553840aeccaeb798e03f54ab321bcff2