0 txs
115.6k calls
constructor
No constructor.
functions
_averageCost
viewfunction _averageCost(uint256) view returns (uint256)
_mintTimestamps
viewfunction _mintTimestamps(uint256) view returns (uint256)
ADMIN_MINT_ROLE
viewfunction ADMIN_MINT_ROLE() view returns (bytes32)
AIRDROP_ADMIN_ROLE
viewfunction AIRDROP_ADMIN_ROLE() view returns (bytes32)
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
claimable
viewfunction claimable() view returns (bool)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
esXaiAddress
viewfunction esXaiAddress() view returns (address)
ethToXai
viewfunction ethToXai(uint256 _amount) view returns (uint256)
fundsReceiver
viewfunction fundsReceiver() view returns (address)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getMintTimestamp
viewfunction getMintTimestamp(uint256 _tokenId) view returns (uint256)
getPricingTier
viewfunction getPricingTier(uint256 _index) view returns (tuple)
getPricingTiersLength
viewfunction getPricingTiersLength() view returns (uint256)
getPromoCode
viewfunction getPromoCode(string _promoCode) view returns (tuple)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
maxSupply
viewfunction maxSupply() view returns (uint256)
mintingPaused
viewfunction mintingPaused() view returns (bool)
name
viewfunction name() view returns (string)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
price
viewfunction price(uint256 _amount, string _promoCode) view returns (uint256)
refereeAddress
viewfunction refereeAddress() view returns (address)
refereeCalculationsAddress
viewfunction refereeCalculationsAddress() view returns (address)
referralDiscountPercentage
viewfunction referralDiscountPercentage() view returns (uint256)
referralRewardPercentage
viewfunction referralRewardPercentage() view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenByIndex
viewfunction tokenByIndex(uint256 index) view returns (uint256)
tokenOfOwnerByIndex
viewfunction tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)
tokenURI
viewfunction tokenURI(uint256 _tokenId) view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
TRANSFER_ROLE
viewfunction TRANSFER_ROLE() view returns (bytes32)
usdcAddress
viewfunction usdcAddress() view returns (address)
usedAdminMintIds
viewfunction usedAdminMintIds(bytes32) view returns (bool)
usedTransferIds
viewfunction usedTransferIds(bytes32) view returns (bool)
whitelistAmounts
viewfunction whitelistAmounts(address) view returns (uint16)
xaiAddress
viewfunction xaiAddress() view returns (address)
adminMintTo
nonpayablefunction adminMintTo(address to, uint256 amount, bytes32 mintId)
adminTransferBatch
nonpayablefunction adminTransferBatch(address from, address to, uint256[] tokenIds, bytes32 transferId)
approve
nonpayablefunction approve(address to, uint256 tokenId)
claimReferralReward
nonpayablefunction claimReferralReward()
createPromoCode
nonpayablefunction createPromoCode(string _promoCode, address _recipient)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize()
mint
payablefunction mint(uint256 _amount, string _promoCode) payable
mintTo
payablefunction mintTo(address _mintToAddress, uint256 _amount, string _promoCode) payable
mintToWithUSDC
nonpayablefunction mintToWithUSDC(address _to, uint256 _amount, string _promoCode, uint256 _expectedCostInUSDC)
mintWithXai
nonpayablefunction mintWithXai(address to, uint256 _amount, string _promoCode, bool _useEsXai, uint256 _expectedCost)
removePromoCode
nonpayablefunction removePromoCode(string _promoCode)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setClaimable
nonpayablefunction setClaimable(bool _claimable)
setOrAddPricingTier
nonpayablefunction setOrAddPricingTier(uint256 _index, uint256 _price, uint256 _quantity)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
transferStakedKeys
nonpayablefunction transferStakedKeys(address from, address to, address poolAddress, uint256[] tokenIds)
updateWhitelistAmounts
nonpayablefunction updateWhitelistAmounts(address[] _toWhitelist, uint16[] _amounts)
events
AdminMintTo
event AdminMintTo(address indexed admin, address indexed receiver, uint256 amount)
AdminTransferBatch
event AdminTransferBatch(address indexed admin, bytes32 indexed transferId)
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
ClaimableChanged
event ClaimableChanged(address indexed admin, bool newClaimableState)
FundsReceiverChanged
event FundsReceiverChanged(address indexed admin, address newFundsReceiver)
Initialized
event Initialized(uint8 version)
PricingTierSetOrAdded
event PricingTierSetOrAdded(uint256 index, uint256 price, uint256 quantity)
PromoCodeCreated
event PromoCodeCreated(string promoCode, address recipient)
PromoCodeRemoved
event PromoCodeRemoved(string promoCode)
ReferralReward
event ReferralReward(address indexed buyer, address indexed referralAddress, uint256 amount)
ReferralRewardPercentagesChanged
event ReferralRewardPercentagesChanged(uint256 referralDiscountPercentage, uint256 referralRewardPercentage)
ReferralRewardV2
event ReferralRewardV2(address indexed buyer, address indexed referralAddress, address indexed currency, string promoCode, uint256 amount)
RewardClaimed
event RewardClaimed(address indexed claimer, uint256 ethAmount, uint256 xaiAmount, uint256 esXaiAmount, uint256 usdcAmount)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
TransferStaked
event TransferStaked(address indexed admin, address indexed poolAddress)
WhitelistAmountRedeemed
event WhitelistAmountRedeemed(address indexed redeemer, uint16 newAmount)
WhitelistAmountUpdatedByAdmin
event WhitelistAmountUpdatedByAdmin(address indexed redeemer, uint16 newAmount)
errors
CannotTransferStakedKey
error CannotTransferStakedKey()
ClaimingPaused
error ClaimingPaused()
ExceedsMaxSupply
error ExceedsMaxSupply()
InvalidAddress
error InvalidAddress()
InvalidAmount
error InvalidAmount()
MintingPaused
error MintingPaused()
MissingTokenIds
error MissingTokenIds()
ReentrantCall
error ReentrantCall()
ReferrerCannotBeBuyer
error ReferrerCannotBeBuyer()
TransferFailed
error TransferFailed()
TxIdPrevUsed
error TxIdPrevUsed()
creation bytecode
0x608060405234801561001057600080fd5b50615c7e80620000216000396000f3fe6080604052600436106103a25760003560e01c80636c360923116101e7578063a22cb4651161010d578063c8b34759116100a0578063d5abeb011161006f578063d5abeb0114610b61578063e1a283d614610b77578063e985e9c514610b99578063ed0b2ed014610be257600080fd5b8063c8b3475914610aea578063c965353914610b0a578063d33a926914610b20578063d547741f14610b4157600080fd5b8063c2edb18e116100dc578063c2edb18e14610a5c578063c761892914610a7c578063c850496214610a9c578063c87b56dd14610aca57600080fd5b8063a22cb465146109e1578063af38d75714610a01578063b15dee2614610a1c578063b88d4fde14610a3c57600080fd5b806391d14854116101855780639bd75727116101545780639bd75727146109795780639e211254146109995780639f6ed25f146109b9578063a217fddf146109cc57600080fd5b806391d1485414610918578063920a253e1461093857806395d89b411461094f5780639b4b2c9c1461096457600080fd5b806377097fc8116101c157806377097fc81461089e5780637a956522146108b15780638129fc1c146108e25780638376f5db146108f757600080fd5b80636c3609231461083e57806370a082311461085e5780637683d6811461087e57600080fd5b8063248a9ca3116102cc5780633cf9aa011161026a578063574082af11610239578063574082af1461076c57806359cb05e71461078c5780636352211e146107d157806369fbd9a8146107f157600080fd5b80633cf9aa01146106ec57806341b9f7cb1461070c57806342842e0e1461072c5780634f6ccce71461074c57600080fd5b80632f745c59116102a65780632f745c591461066b57806336568abe1461068b578063378c93ad146106ab5780633af10cd1146106cb57600080fd5b8063248a9ca31461060657806327d5e390146106365780632f2ff15d1461064b57600080fd5b806314cbdc72116103445780631d464bd9116103135780631d464bd914610573578063206b60f9146105a457806323b872dd146105c657806323c7e09c146105e657600080fd5b806314cbdc72146104ef57806316c1e3561461050f5780631791dcdd1461053057806318160ddd1461055e57600080fd5b8063081812fc11610380578063081812fc14610437578063095ea7b3146104575780630e16f0c8146104795780630f855fd6146104bb57600080fd5b806301ffc9a7146103a757806302d45457146103dc57806306fdde0314610415575b600080fd5b3480156103b357600080fd5b506103c76103c2366004614a7a565b610c1d565b60405190151581526020015b60405180910390f35b3480156103e857600080fd5b50610110546103fd906001600160a01b031681565b6040516001600160a01b0390911681526020016103d3565b34801561042157600080fd5b5061042a610c4c565b6040516103d39190614aef565b34801561044357600080fd5b506103fd610452366004614b02565b610cde565b34801561046357600080fd5b50610477610472366004614b30565b610d05565b005b34801561048557600080fd5b506104ad7f507caaa5b2a5a027bc340a5334d9220583b7d60d846ee2aabc76e37d69a7253b81565b6040519081526020016103d3565b3480156104c757600080fd5b506104ad7f786fcfa0099ab9aba15d4b2ccc7ffa9994e7c522c9b340b95e584749e47fcfb981565b3480156104fb57600080fd5b5061047761050a366004614b5c565b610e20565b34801561051b57600080fd5b50610114546103fd906001600160a01b031681565b34801561053c57600080fd5b506104ad61054b366004614b02565b6101026020526000908152604090205481565b34801561056a57600080fd5b506099546104ad565b34801561057f57600080fd5b506103c761058e366004614b02565b61010f6020526000908152604090205460ff1681565b3480156105b057600080fd5b506104ad600080516020615be983398151915281565b3480156105d257600080fd5b506104776105e1366004614b88565b610fe0565b3480156105f257600080fd5b5060fc546103fd906001600160a01b031681565b34801561061257600080fd5b506104ad610621366004614b02565b600090815260c9602052604090206001015490565b34801561064257600080fd5b5060fe546104ad565b34801561065757600080fd5b50610477610666366004614bc9565b611122565b34801561067757600080fd5b506104ad610686366004614b30565b611147565b34801561069757600080fd5b506104776106a6366004614bc9565b6111dd565b3480156106b757600080fd5b506104776106c6366004614c07565b61125b565b3480156106d757600080fd5b5061010d546103fd906001600160a01b031681565b3480156106f857600080fd5b50610477610707366004614d09565b6112b2565b34801561071857600080fd5b50610477610727366004614e25565b61136a565b34801561073857600080fd5b50610477610747366004614b88565b6115a8565b34801561075857600080fd5b506104ad610767366004614b02565b6115d8565b34801561077857600080fd5b50610477610787366004614ee1565b61166b565b34801561079857600080fd5b506107be6107a7366004614f22565b6101066020526000908152604090205461ffff1681565b60405161ffff90911681526020016103d3565b3480156107dd57600080fd5b506103fd6107ec366004614b02565b611776565b3480156107fd57600080fd5b5061081161080c366004614ee1565b6117d6565b6040805182516001600160a01b0316815260208084015115159082015291810151908201526060016103d3565b34801561084a57600080fd5b506104ad610859366004614b02565b61184c565b34801561086a57600080fd5b506104ad610879366004614f22565b611895565b34801561088a57600080fd5b506104ad610899366004614f3f565b61191b565b6104776108ac366004614f3f565b611c43565b3480156108bd57600080fd5b506103c76108cc366004614b02565b6101156020526000908152604090205460ff1681565b3480156108ee57600080fd5b50610477611c4f565b34801561090357600080fd5b5061010e546103fd906001600160a01b031681565b34801561092457600080fd5b506103c7610933366004614bc9565b611d98565b34801561094457600080fd5b506104ad6101005481565b34801561095b57600080fd5b5061042a611dc3565b34801561097057600080fd5b50610477611dd2565b34801561098557600080fd5b50610477610994366004614f8a565b612186565b3480156109a557600080fd5b506104ad6109b4366004614b02565b6122b0565b6104776109c7366004614fbf565b61240f565b3480156109d857600080fd5b506104ad600081565b3480156109ed57600080fd5b506104776109fc36600461501a565b61241b565b348015610a0d57600080fd5b50610101546103c79060ff1681565b348015610a2857600080fd5b50610477610a37366004615048565b612426565b348015610a4857600080fd5b50610477610a573660046150ab565b612752565b348015610a6857600080fd5b50610477610a7736600461516e565b612896565b348015610a8857600080fd5b50610477610a973660046151e9565b612baf565b348015610aa857600080fd5b506104ad610ab7366004614b02565b6101056020526000908152604090205481565b348015610ad657600080fd5b5061042a610ae5366004614b02565b612e29565b348015610af657600080fd5b50610477610b05366004615252565b612fa1565b348015610b1657600080fd5b506104ad60ff5481565b348015610b2c57600080fd5b50610113546103fd906001600160a01b031681565b348015610b4d57600080fd5b50610477610b5c366004614bc9565b613157565b348015610b6d57600080fd5b506104ad60fd5481565b348015610b8357600080fd5b5061010e546103c790600160a01b900460ff1681565b348015610ba557600080fd5b506103c7610bb43660046152a8565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b348015610bee57600080fd5b50610c02610bfd366004614b02565b61317c565b604080518251815260209283015192810192909252016103d3565b6000610c288261321e565b80610c375750610c378261323f565b80610c465750610c468261321e565b92915050565b606060658054610c5b906152d6565b80601f0160208091040260200160405190810160405280929190818152602001828054610c87906152d6565b8015610cd45780601f10610ca957610100808354040283529160200191610cd4565b820191906000526020600020905b815481529060010190602001808311610cb757829003601f168201915b5050505050905090565b6000610ce982613264565b506000908152606960205260409020546001600160a01b031690565b6000610d1082611776565b9050806001600160a01b0316836001600160a01b03161415610d835760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610d9f5750610d9f8133610bb4565b610e115760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610d7a565b610e1b83836132c6565b505050565b6000610e2b81613334565b60fe54841015610ebe5760fe8481548110610e4857610e48615311565b90600052602060002090600202016001015460fd6000828254610e6b919061533d565b9250508190555060405180604001604052808481526020018381525060fe8581548110610e9a57610e9a615311565b60009182526020918290208351600290920201908155910151600190910155610f81565b60fe54841415610f4357604080518082019091528381526020810183815260fe805460018101825560009190915291517f54075df80ec1ae6ac9100e1fd0ebf3246c17f5c933137af392011f4c5f61513a600290930292830155517f54075df80ec1ae6ac9100e1fd0ebf3246c17f5c933137af392011f4c5f61513b90910155610f81565b60405162461bcd60e51b8152602060048201526013602482015272496e646578206f7574206f6620626f756e647360681b6044820152606401610d7a565b8160fd6000828254610f939190615354565b909155505060408051858152602081018590529081018390527f8b492e853a36800006edcd7f0e52e61e9fff6c5ad5230c6afba1d4a1f12576d5906060015b60405180910390a150505050565b600080516020615be9833981519152610ff881613334565b600061100385611895565b905061101085858561333e565b610114546040516392055eaf60e01b81526001600160a01b0387811660048301528681166024830152909116906392055eaf90604401600060405180830381600087803b15801561106057600080fd5b505af1158015611074573d6000803e3d6000fd5b50506101145460405162d42acb60e71b81526001600160a01b038981166004830152600094509091169150636a1565809060240160206040518083038186803b1580156110c057600080fd5b505afa1580156110d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f8919061536c565b905081811061111a5760405163e5added160e01b815260040160405180910390fd5b505050505050565b600082815260c9602052604090206001015461113d81613334565b610e1b838361336f565b600061115283611895565b82106111b45760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610d7a565b506001600160a01b03919091166000908152609760209081526040808320938352929052205490565b6001600160a01b038116331461124d5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610d7a565b61125782826133f5565b5050565b600061126681613334565b610101805460ff191683151590811790915560405190815233907feb60b65bbf5667d23958c56ef890ad604d8fc4d001cec7ad7ade701b46fd02ff906020015b60405180910390a25050565b60006112bd81613334565b81518351146112fe5760405162461bcd60e51b815260206004820152600d60248201526c125b9d985b1a59081a5b9c1d5d609a1b6044820152606401610d7a565b60005b83518161ffff16101561136457611352848261ffff168151811061132757611327615311565b6020026020010151848361ffff168151811061134557611345615311565b602002602001015161345c565b8061135c81615385565b915050611301565b50505050565b600080516020615be983398151915261138281613334565b6001600160a01b03841615806113a057506001600160a01b03841630145b156113be5760405163e6c4247b60e01b815260040160405180910390fd5b8151806113de576040516390f22bf160e01b815260040160405180910390fd5b61011460009054906101000a90046001600160a01b03166001600160a01b031663a32cf5366040518163ffffffff1660e01b815260040160206040518083038186803b15801561142d57600080fd5b505afa158015611441573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146591906153a7565b60405163324a3aa160e01b81526001600160a01b0388811660048301528781166024830152868116604483015260648201849052919091169063324a3aa190608401600060405180830381600087803b1580156114c157600080fd5b505af11580156114d5573d6000803e3d6000fd5b5050505060005b8181101561156957611507338583815181106114fa576114fa615311565b60200260200101516134b8565b6115235760405162461bcd60e51b8152600401610d7a906153c4565b611557878786848151811061153a5761153a615311565b602002602001015160405180602001604052806000815250613537565b8061156181615411565b9150506114dc565b506040516001600160a01b0385169033907f924056ce05f29dd549f609d3a8ac1a20d23496430f4edf1d381fface1f21c5bc90600090a3505050505050565b600080516020615be98339815191526115c081613334565b60006115cb85611895565b905061101085858561356a565b60006115e360995490565b82106116465760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610d7a565b6099828154811061165957611659615311565b90600052602060002001549050919050565b600061167681613334565b60006001600160a01b0316610103848460405161169492919061542c565b908152604051908190036020019020546001600160a01b031614156116fb5760405162461bcd60e51b815260206004820152601960248201527f50726f6d6f20636f646520646f6573206e6f74206578697374000000000000006044820152606401610d7a565b6000610103848460405161171092919061542c565b9081526040519081900360200181208054921515600160a01b0260ff60a01b19909316929092179091557f95f9c856ea5546cfb98f825a18a32ae1cd3d41148eefb1e2c5c674e75ff987b2906117699085908590615465565b60405180910390a1505050565b6000818152606760205260408120546001600160a01b031680610c465760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610d7a565b6040805160608101825260008082526020820181905281830152905161010390611803908590859061542c565b908152604080516020928190038301812060608201835280546001600160a01b0381168352600160a01b900460ff16151593820193909352600190920154908201529392505050565b6000818152606760205260408120546001600160a01b0316611881576040516390f22bf160e01b815260040160405180910390fd5b506000908152610102602052604090205490565b60006001600160a01b0382166118ff5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610d7a565b506001600160a01b031660009081526068602052604090205490565b60008061192760995490565b905060008581805b60fe54811015611a3b5760fe818154811061194c5761194c615311565b906000526020600020906002020160010154826119699190615354565b9150600085831161197b576000611985565b611985868461533d565b90508084116119d45760fe82815481106119a1576119a1615311565b906000526020600020906002020160000154846119be9190615479565b6119c89086615354565b94506000935050611a3b565b60fe82815481106119e7576119e7615311565b90600052602060002090600202016000015481611a049190615479565b611a0e9086615354565b9450611a1a818561533d565b9350611a268187615354565b95505080611a3381615411565b91505061192f565b508115611a995760405162461bcd60e51b815260206004820152602660248201527f4e6f7420656e6f756768206c6963656e73657320617661696c61626c6520666f604482015265722073616c6560d01b6064820152608401610d7a565b6101038787604051611aac92919061542c565b9081526040519081900360200190205460ff600160a01b9091041615611af857606460ff546064611add919061533d565b611ae79085615479565b611af19190615498565b9250611c37565b610113546040516303db9ee160e01b81526000916001600160a01b0316906303db9ee190611b2c908b908b90600401615465565b60206040518083038186803b158015611b4457600080fd5b505afa158015611b58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7c91906153a7565b90506001600160a01b03811615611c35576040516370a0823160e01b81526001600160a01b038216600482015260009030906370a082319060240160206040518083038186803b158015611bcf57600080fd5b505afa158015611be3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c07919061536c565b1115611c3557606460ff546064611c1e919061533d565b611c289086615479565b611c329190615498565b93505b505b50909695505050505050565b610e1b33848484613585565b600054600590610100900460ff16158015611c71575060005460ff8083169116105b611cd45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610d7a565b6000805461ffff191660ff83161761010017905561010e805460ff60a01b1916905560405173e49c19cb8e68a5d0ae2ddce8f80e60e2bbd018849061010390611d2a906642696e616e636560c81b815260070190565b9081526040516020918190038201812080546001600160a01b0319166001600160a01b0394909416939093179092556000805461ff001916905560ff831682527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498910160405180910390a150565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b606060668054610c5b906152d6565b61010e54600160a81b900460ff1615611dfe576040516306fda65d60e31b815260040160405180910390fd5b61010e805460ff60a81b1916600160a81b1790556101015460ff16611e365760405163cfbf738960e01b815260040160405180910390fd5b336000908152610104602090815260408083205461010983528184205461010a845282852054610112909452919093205490919083151580611e785750600083115b80611e835750600082115b80611e8e5750600081115b611eda5760405162461bcd60e51b815260206004820152601b60248201527f4e6f20726566657272616c2072657761726420746f20636c61696d00000000006044820152606401610d7a565b33600081815261010460209081526040808320839055610109825280832083905561010a82528083208390556101129091528082208290555190919086908381818185875af1925050503d8060008114611f50576040519150601f19603f3d011682016040523d82523d6000602084013e611f55565b606091505b5050905080611f77576040516312171d8360e31b815260040160405180910390fd5b83156120075761010d5460405163a9059cbb60e01b8152336004820152602481018690526001600160a01b0390911690819063a9059cbb90604401602060405180830381600087803b158015611fcc57600080fd5b505af1158015611fe0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200491906154ba565b50505b82156120975761010e5460405163a9059cbb60e01b8152336004820152602481018590526001600160a01b0390911690819063a9059cbb90604401602060405180830381600087803b15801561205c57600080fd5b505af1158015612070573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209491906154ba565b50505b8115612127576101105460405163a9059cbb60e01b8152336004820152602481018490526001600160a01b0390911690819063a9059cbb90604401602060405180830381600087803b1580156120ec57600080fd5b505af1158015612100573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212491906154ba565b50505b60408051868152602081018690529081018490526060810183905233907f9e80c048bc588b388047ffc6e8153e7c11aa34312de7ed62e1858ff3a44ddce89060800160405180910390a2505061010e805460ff60a81b19169055505050565b7f507caaa5b2a5a027bc340a5334d9220583b7d60d846ee2aabc76e37d69a7253b6121b081613334565b6001600160a01b03841615806121ce57506001600160a01b03841630145b156121ec5760405163e6c4247b60e01b815260040160405180910390fd5b8261220a5760405163162908e360e11b815260040160405180910390fd5b6000828152610115602052604090205460ff161561223b576040516311e92cfd60e21b815260040160405180910390fd5b600082815261011560205260409020805460ff1916600117905561225e836137c4565b61226a83600086613826565b6040518381526001600160a01b0385169033907f9a501a1ca4b9a53cf8abba94b68170cbdc93b2897bcc95b92e5816f9ee0904669060200160405180910390a350505050565b60008061010b60009054906101000a90046001600160a01b03166001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561230257600080fd5b505afa158015612316573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233a919061536c565b9050600061010c60009054906101000a90046001600160a01b03166001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561238d57600080fd5b505afa1580156123a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c5919061536c565b905060006123d8836402540be400615479565b905060006123eb836402540be400615479565b90506000816123fa8489615479565b6124049190615498565b979650505050505050565b61136484848484613585565b611257338383613888565b61242f846137c4565b600061243c85858561191b565b9050600061010b60009054906101000a90046001600160a01b03166001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561248f57600080fd5b505afa1580156124a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c7919061536c565b9050600068056bc75e2d631000006124df8385615479565b6124e99190615498565b90508381111561253b5760405162461bcd60e51b815260206004820152601b60248201527f5072696365204578636565647320457870656374656420436f737400000000006044820152606401610d7a565b60006125478885615498565b905061255488828b613826565b6000806125a5848a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050610110546001600160a01b031691506139579050565b610110546040516323b872dd60e01b8152336004820152306024820152604481018890529294509092506001600160a01b03169081906323b872dd90606401602060405180830381600087803b1580156125fe57600080fd5b505af1158015612612573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263691906154ba565b5060fc546001600160a01b038083169163a9059cbb9116612657868961533d565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561269d57600080fd5b505af11580156126b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d591906154ba565b50821561274457826101118b8b6040516126f092919061542c565b908152602001604051809103902060010160008282546127109190615354565b90915550506001600160a01b038216600090815261011260205260408120805485929061273e908490615354565b90915550505b505050505050505050505050565b600080516020615be983398151915261276a81613334565b600061277586611895565b905061278386868686613da1565b610114546040516392055eaf60e01b81526001600160a01b0388811660048301528781166024830152909116906392055eaf90604401600060405180830381600087803b1580156127d357600080fd5b505af11580156127e7573d6000803e3d6000fd5b50506101145460405162d42acb60e71b81526001600160a01b038a81166004830152600094509091169150636a1565809060240160206040518083038186803b15801561283357600080fd5b505afa158015612847573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286b919061536c565b905081811061288d5760405163e5added160e01b815260040160405180910390fd5b50505050505050565b61289f856137c4565b60006128ac86868661191b565b905060006128b9826122b0565b90508281111561290b5760405162461bcd60e51b815260206004820152601b60248201527f5072696365204578636565647320457870656374656420436f737400000000006044820152606401610d7a565b60006129178884615498565b905061292488828b613826565b60008561293d5761010d546001600160a01b031661294b565b61010e546001600160a01b03165b9050600080612992858b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250613957915050565b6040516323b872dd60e01b815233600482015230602482015260448101889052919350915083906001600160a01b038216906323b872dd90606401602060405180830381600087803b1580156129e757600080fd5b505af11580156129fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1f91906154ba565b5060fc546001600160a01b038083169163a9059cbb9116612a40868a61533d565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015612a8657600080fd5b505af1158015612a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612abe91906154ba565b508215612ba0578815612b3857826101088c8c604051612adf92919061542c565b90815260200160405180910390206001016000828254612aff9190615354565b90915550506001600160a01b038216600090815261010a602052604081208054859290612b2d908490615354565b90915550612ba09050565b826101078c8c604051612b4c92919061542c565b90815260200160405180910390206001016000828254612b6c9190615354565b90915550506001600160a01b0382166000908152610109602052604081208054859290612b9a908490615354565b90915550505b50505050505050505050505050565b600080516020615be9833981519152612bc781613334565b6001600160a01b0384161580612be557506001600160a01b03841630145b15612c035760405163e6c4247b60e01b815260040160405180910390fd5b600082815261010f602052604090205460ff1615612c34576040516311e92cfd60e21b815260040160405180910390fd5b825180612c54576040516390f22bf160e01b815260040160405180910390fd5b600083815261010f60205260408120805460ff19166001179055612c7787611895565b905060005b82811015612cdf57612c9a338783815181106114fa576114fa615311565b612cb65760405162461bcd60e51b8152600401610d7a906153c4565b612ccd888888848151811061153a5761153a615311565b80612cd781615411565b915050612c7c565b506101145460405162d42acb60e71b81526001600160a01b0389811660048301526000921690636a1565809060240160206040518083038186803b158015612d2657600080fd5b505afa158015612d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d5e919061536c565b905081612d6b8483615354565b1115612d8a5760405163e5added160e01b815260040160405180910390fd5b610114546040516392055eaf60e01b81526001600160a01b038a811660048301528981166024830152909116906392055eaf90604401600060405180830381600087803b158015612dda57600080fd5b505af1158015612dee573d6000803e3d6000fd5b50506040518792503391507f2394e52aa3ffa1732b8c64bdb0eeee803f2d779427aa2a26175521968f9d87ea90600090a35050505050505050565b6000818152606760205260409020546060906001600160a01b0316612ea85760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610d7a565b6000612eb383611776565b90506000612ec084613dd3565b612ed2836001600160a01b0316613e6f565b60008681526101026020526040902054612eeb90613dd3565b612efc612ef786611895565b613dd3565b604051602001612f0f94939291906154f3565b60405160208183030381529060405290506000612f2b82613e86565b90506000612f74612f3b87613dd3565b83612f4e876001600160a01b0316613e6f565b604051602001612f609392919061583a565b604051602081830303815290604052613e86565b905080604051602001612f8791906159b0565b604051602081830303815290604052945050505050919050565b6000612fac81613334565b6001600160a01b038216612fd35760405163e6c4247b60e01b815260040160405180910390fd5b60006001600160a01b03166101038585604051612ff192919061542c565b908152604051908190036020019020546001600160a01b0316146130575760405162461bcd60e51b815260206004820152601960248201527f50726f6d6f20636f646520616c726561647920657869737473000000000000006044820152606401610d7a565b826130a45760405162461bcd60e51b815260206004820152601a60248201527f50726f6d6f20636f64652063616e6e6f7420626520656d7074790000000000006044820152606401610d7a565b604080516060810182526001600160a01b0384168152600160208201526000818301529051610103906130da908790879061542c565b90815260408051918290036020908101832084518154928601511515600160a01b026001600160a81b03199093166001600160a01b03909116179190911781559201516001909201919091557fced415b966fa8bae0231d9f3df21b6cecf7f6d8384273015a047adbd7a1bed0e90610fd2908690869086906159f5565b600082815260c9602052604090206001015461317281613334565b610e1b83836133f5565b604080518082019091526000808252602082015260fe5482106131d75760405162461bcd60e51b8152602060048201526013602482015272496e646578206f7574206f6620626f756e647360681b6044820152606401610d7a565b60fe82815481106131ea576131ea615311565b9060005260206000209060020201604051806040016040529081600082015481526020016001820154815250509050919050565b60006001600160e01b03198216637965db0b60e01b1480610c465750610c46825b60006001600160e01b0319821663780e9d6360e01b1480610c465750610c4682613fe6565b6000818152606760205260409020546001600160a01b03166132c35760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610d7a565b50565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906132fb82611776565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6132c38133614036565b61334833826134b8565b6133645760405162461bcd60e51b8152600401610d7a906153c4565b610e1b83838361408f565b6133798282611d98565b61125757600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff191660011790556133b13390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6133ff8282611d98565b1561125757600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6001600160a01b03821660008181526101066020908152604091829020805461ffff191661ffff861690811790915591519182527f6700d39f70694fcd465d77dc72d835b0051f821f18de92165b3151940d7f669491016112a6565b6000806134c483611776565b9050806001600160a01b0316846001600160a01b0316148061350b57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b8061352f5750836001600160a01b031661352484610cde565b6001600160a01b0316145b949350505050565b61354284848461408f565b61354e84848484614200565b6113645760405162461bcd60e51b8152600401610d7a90615a21565b610e1b83838360405180602001604052806000815250612752565b61358e836137c4565b600061359b84848461191b565b905060006135a98583615498565b9050813410156135fb5760405162461bcd60e51b815260206004820152601f60248201527f45746865722076616c75652073656e74206973206e6f7420636f7272656374006044820152606401610d7a565b613606858288613826565b6000806136498487878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250613957915050565b909250905081156136bc5781610103878760405161366892919061542c565b908152602001604051809103902060010160008282546136889190615354565b90915550506001600160a01b03811660009081526101046020526040812080548492906136b6908490615354565b90915550505b60006136c8853461533d565b60fc549091506000906001600160a01b03166136e4858861533d565b604051600081818185875af1925050503d8060008114613720576040519150601f19603f3d011682016040523d82523d6000602084013e613725565b606091505b5050905080613747576040516312171d8360e31b815260040160405180910390fd5b81156137b857604051600090339084908381818185875af1925050503d806000811461378f576040519150601f19603f3d011682016040523d82523d6000602084013e613794565b606091505b50509050806137b6576040516312171d8360e31b815260040160405180910390fd5b505b50505050505050505050565b60fd54816137d160fb5490565b6137db9190615354565b11156137fa5760405163c30436e960e01b815260040160405180910390fd5b61010e54600160a01b900460ff16156132c3576040516375ab03ab60e11b815260040160405180910390fd5b60005b838110156113645761383f60fb80546001019055565b600061384a60fb5490565b9050613856838261430d565b60009081526101026020908152604080832042905561010590915290208390558061388081615411565b915050613829565b816001600160a01b0316836001600160a01b031614156138ea5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610d7a565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60008083516000141561396f57506000905080613d99565b6000610103856040516139829190615a73565b908152604080516020928190038301812060608201835280546001600160a01b038116808452600160a01b90910460ff161515948301949094526001015491810191909152915060009015613aee5781602001516139e857600080935093505050613d99565b81516001600160a01b0316331415613a135760405163afd8e2f160e01b815260040160405180910390fd5b60646101005488613a249190615479565b613a2e9190615498565b90506001600160a01b038516613a865781516040518281526001600160a01b039091169033907f53958b9c644a1d5529da7c36929d59417eb9a996f08e02a52632bfe20c92ef489060200160405180910390a3613ae2565b846001600160a01b031682600001516001600160a01b0316336001600160a01b03167f6d0c7d2da6b2b3b015119e732757cd282f85434add559e56549a6199ca9882738985604051613ad9929190615a8f565b60405180910390a45b90519092509050613d99565b610113546040516303db9ee160e01b81526000916001600160a01b0316906303db9ee190613b20908a90600401614aef565b60206040518083038186803b158015613b3857600080fd5b505afa158015613b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b7091906153a7565b90506001600160a01b03811615613d8e5782516001600160a01b0316331415613bac5760405163afd8e2f160e01b815260040160405180910390fd5b6040516370a0823160e01b81526001600160a01b038216600482015230906370a082319060240160206040518083038186803b158015613beb57600080fd5b505afa158015613bff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c23919061536c565b613c365760008094509450505050613d99565b8061010388604051613c489190615a73565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b03199093169290921790915560019061010390613c8a908a90615a73565b9081526040519081900360200190208054911515600160a01b0260ff60a01b1990921691909117905561010054606490613cc4908a615479565b613cce9190615498565b91506001600160a01b038616613d265782516040518381526001600160a01b039091169033907f53958b9c644a1d5529da7c36929d59417eb9a996f08e02a52632bfe20c92ef489060200160405180910390a3613d82565b856001600160a01b031683600001516001600160a01b0316336001600160a01b03167f6d0c7d2da6b2b3b015119e732757cd282f85434add559e56549a6199ca9882738a86604051613d79929190615a8f565b60405180910390a45b9093509150613d999050565b600080945094505050505b935093915050565b613dab33836134b8565b613dc75760405162461bcd60e51b8152600401610d7a906153c4565b61136484848484613537565b60606000613de0836144a6565b60010190506000816001600160401b03811115613dff57613dff614c24565b6040519080825280601f01601f191660200182016040528015613e29576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084613e6257613e67565b613e33565b509392505050565b6060610c4682613e7e8461457e565b6001016145e8565b6060815160001415613ea657505060408051602081019091526000815290565b6000604051806060016040528060408152602001615c096040913990506000600384516002613ed59190615354565b613edf9190615498565b613eea906004615479565b6001600160401b03811115613f0157613f01614c24565b6040519080825280601f01601f191660200182016040528015613f2b576020820181803683370190505b50905060018201602082018586518701602081018051600082525b82841015613fa1576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f8116870151865350600185019450613f46565b9052505085516003900660018114613fc05760028114613fd357613fdb565b603d6001830353603d6002830353613fdb565b603d60018303535b509195945050505050565b60006001600160e01b031982166380ac58cd60e01b148061401757506001600160e01b03198216635b5e139f60e01b145b80610c4657506301ffc9a760e01b6001600160e01b0319831614610c46565b6140408282611d98565b6112575761404d8161478a565b6140588360206145e8565b604051602001614069929190615ab1565b60408051601f198184030181529082905262461bcd60e51b8252610d7a91600401614aef565b826001600160a01b03166140a282611776565b6001600160a01b0316146140c85760405162461bcd60e51b8152600401610d7a90615b26565b6001600160a01b03821661412a5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610d7a565b61413783838360016147a0565b826001600160a01b031661414a82611776565b6001600160a01b0316146141705760405162461bcd60e51b8152600401610d7a90615b26565b600081815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260688552838620805460001901905590871680865283862080546001019055868652606790945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60006001600160a01b0384163b1561430257604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290614244903390899088908890600401615b6b565b602060405180830381600087803b15801561425e57600080fd5b505af192505050801561428e575060408051601f3d908101601f1916820190925261428b91810190615b9e565b60015b6142e8573d8080156142bc576040519150601f19603f3d011682016040523d82523d6000602084013e6142c1565b606091505b5080516142e05760405162461bcd60e51b8152600401610d7a90615a21565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061352f565b506001949350505050565b6001600160a01b0382166143635760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610d7a565b6000818152606760205260409020546001600160a01b0316156143c85760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610d7a565b6143d66000838360016147a0565b6000818152606760205260409020546001600160a01b03161561443b5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610d7a565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106144e55772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310614511576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061452f57662386f26fc10000830492506010015b6305f5e1008310614547576305f5e100830492506008015b612710831061455b57612710830492506004015b6064831061456d576064830492506002015b600a8310610c465760010192915050565b600080608083901c156145965760809290921c916010015b604083901c156145ab5760409290921c916008015b602083901c156145c05760209290921c916004015b601083901c156145d55760109290921c916002015b600883901c15610c465760010192915050565b606060006145f7836002615479565b614602906002615354565b6001600160401b0381111561461957614619614c24565b6040519080825280601f01601f191660200182016040528015614643576020820181803683370190505b509050600360fc1b8160008151811061465e5761465e615311565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061468d5761468d615311565b60200101906001600160f81b031916908160001a90535060006146b1846002615479565b6146bc906001615354565b90505b6001811115614734576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106146f0576146f0615311565b1a60f81b82828151811061470657614706615311565b60200101906001600160f81b031916908160001a90535060049490941c9361472d81615bbb565b90506146bf565b5083156147835760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610d7a565b9392505050565b6060610c466001600160a01b03831660146145e8565b600181111561480f5760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b6064820152608401610d7a565b816001600160a01b03851661486b5761486681609980546000838152609a60205260408120829055600182018355919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b61488e565b836001600160a01b0316856001600160a01b03161461488e5761488e85826148d4565b6001600160a01b0384166148aa576148a581614971565b6148cd565b846001600160a01b0316846001600160a01b0316146148cd576148cd8482614a20565b5050505050565b600060016148e184611895565b6148eb919061533d565b60008381526098602052604090205490915080821461493e576001600160a01b03841660009081526097602090815260408083208584528252808320548484528184208190558352609890915290208190555b5060009182526098602090815260408084208490556001600160a01b039094168352609781528383209183525290812055565b6099546000906149839060019061533d565b6000838152609a6020526040812054609980549394509092849081106149ab576149ab615311565b9060005260206000200154905080609983815481106149cc576149cc615311565b6000918252602080832090910192909255828152609a90915260408082208490558582528120556099805480614a0457614a04615bd2565b6001900381819060005260206000200160009055905550505050565b6000614a2b83611895565b6001600160a01b039093166000908152609760209081526040808320868452825280832085905593825260989052919091209190915550565b6001600160e01b0319811681146132c357600080fd5b600060208284031215614a8c57600080fd5b813561478381614a64565b60005b83811015614ab2578181015183820152602001614a9a565b838111156113645750506000910152565b60008151808452614adb816020860160208601614a97565b601f01601f19169290920160200192915050565b6020815260006147836020830184614ac3565b600060208284031215614b1457600080fd5b5035919050565b6001600160a01b03811681146132c357600080fd5b60008060408385031215614b4357600080fd5b8235614b4e81614b1b565b946020939093013593505050565b600080600060608486031215614b7157600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215614b9d57600080fd5b8335614ba881614b1b565b92506020840135614bb881614b1b565b929592945050506040919091013590565b60008060408385031215614bdc57600080fd5b823591506020830135614bee81614b1b565b809150509250929050565b80151581146132c357600080fd5b600060208284031215614c1957600080fd5b813561478381614bf9565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614c6257614c62614c24565b604052919050565b60006001600160401b03821115614c8357614c83614c24565b5060051b60200190565b600082601f830112614c9e57600080fd5b81356020614cb3614cae83614c6a565b614c3a565b82815260059290921b84018101918181019086841115614cd257600080fd5b8286015b84811015614cfe57803561ffff81168114614cf15760008081fd5b8352918301918301614cd6565b509695505050505050565b60008060408385031215614d1c57600080fd5b82356001600160401b0380821115614d3357600080fd5b818501915085601f830112614d4757600080fd5b81356020614d57614cae83614c6a565b82815260059290921b84018101918181019089841115614d7657600080fd5b948201945b83861015614d9d578535614d8e81614b1b565b82529482019490820190614d7b565b96505086013592505080821115614db357600080fd5b50614dc085828601614c8d565b9150509250929050565b600082601f830112614ddb57600080fd5b81356020614deb614cae83614c6a565b82815260059290921b84018101918181019086841115614e0a57600080fd5b8286015b84811015614cfe5780358352918301918301614e0e565b60008060008060808587031215614e3b57600080fd5b8435614e4681614b1b565b93506020850135614e5681614b1b565b92506040850135614e6681614b1b565b915060608501356001600160401b03811115614e8157600080fd5b614e8d87828801614dca565b91505092959194509250565b60008083601f840112614eab57600080fd5b5081356001600160401b03811115614ec257600080fd5b602083019150836020828501011115614eda57600080fd5b9250929050565b60008060208385031215614ef457600080fd5b82356001600160401b03811115614f0a57600080fd5b614f1685828601614e99565b90969095509350505050565b600060208284031215614f3457600080fd5b813561478381614b1b565b600080600060408486031215614f5457600080fd5b8335925060208401356001600160401b03811115614f7157600080fd5b614f7d86828701614e99565b9497909650939450505050565b600080600060608486031215614f9f57600080fd5b8335614faa81614b1b565b95602085013595506040909401359392505050565b60008060008060608587031215614fd557600080fd5b8435614fe081614b1b565b93506020850135925060408501356001600160401b0381111561500257600080fd5b61500e87828801614e99565b95989497509550505050565b6000806040838503121561502d57600080fd5b823561503881614b1b565b91506020830135614bee81614bf9565b60008060008060006080868803121561506057600080fd5b853561506b81614b1b565b94506020860135935060408601356001600160401b0381111561508d57600080fd5b61509988828901614e99565b96999598509660600135949350505050565b600080600080608085870312156150c157600080fd5b84356150cc81614b1b565b93506020858101356150dd81614b1b565b93506040860135925060608601356001600160401b038082111561510057600080fd5b818801915088601f83011261511457600080fd5b81358181111561512657615126614c24565b615138601f8201601f19168501614c3a565b9150808252898482850101111561514e57600080fd5b808484018584013760008482840101525080935050505092959194509250565b60008060008060008060a0878903121561518757600080fd5b863561519281614b1b565b95506020870135945060408701356001600160401b038111156151b457600080fd5b6151c089828a01614e99565b90955093505060608701356151d481614bf9565b80925050608087013590509295509295509295565b600080600080608085870312156151ff57600080fd5b843561520a81614b1b565b9350602085013561521a81614b1b565b925060408501356001600160401b0381111561523557600080fd5b61524187828801614dca565b949793965093946060013593505050565b60008060006040848603121561526757600080fd5b83356001600160401b0381111561527d57600080fd5b61528986828701614e99565b909450925050602084013561529d81614b1b565b809150509250925092565b600080604083850312156152bb57600080fd5b82356152c681614b1b565b91506020830135614bee81614b1b565b600181811c908216806152ea57607f821691505b6020821081141561530b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008282101561534f5761534f615327565b500390565b6000821982111561536757615367615327565b500190565b60006020828403121561537e57600080fd5b5051919050565b600061ffff8083168181141561539d5761539d615327565b6001019392505050565b6000602082840312156153b957600080fd5b815161478381614b1b565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b600060001982141561542557615425615327565b5060010190565b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600061352f60208301848661543c565b600081600019048311821515161561549357615493615327565b500290565b6000826154b557634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156154cc57600080fd5b815161478381614bf9565b600081516154e9818560208601614a97565b9290920192915050565b7f3c73766720786d6c6e733d27687474703a2f2f7777772e77332e6f72672f323081527f30302f737667272077696474683d2731303027206865696768743d273130302760208201527f207374796c653d276261636b67726f756e642d636f6c6f723a626c61636b3b2760408201527f3e3c706f6c79676f6e20706f696e74733d2735302c3020302c38362e3620313060608201527f302c38362e36272066696c6c3d276e6f6e6527207374726f6b653d277265642760808201527f207374726f6b652d77696474683d27323027207472616e73666f726d3d27736360a08201527f616c6528302e3129207472616e736c6174652836302c20363029272f3e3c746560c08201527f787420783d27352720793d2732352720666f6e742d73697a653d27322e38272060e08201527f66696c6c3d2777686974652720666f6e742d66616d696c793d276d6f6e6f737061010082015270030b1b2939f2634b1b2b739b29024b21d1607d1b61012082015260006158306158176158116157766157706156fb6156f56156876101318a018e6154d7565b7f3c2f746578743e3c7465787420783d27352720793d2733302720666f6e742d7381527f697a653d27322e38272066696c6c3d2777686974652720666f6e742d66616d696020820152750363c9e93b6b7b737b9b830b1b2939f27bbb732b91d160551b604082015260560190565b8b6154d7565b7f3c2f746578743e3c7465787420783d27352720793d2733352720666f6e742d7381527f697a653d27322e38272066696c6c3d2777686974652720666f6e742d66616d6960208201527f6c793d276d6f6e6f7370616365273e4d696e742054696d657374616d703a20006040820152605f0190565b886154d7565b7f3c2f746578743e3c7465787420783d27352720793d2734302720666f6e742d7381527f697a653d27322e38272066696c6c3d2777686974652720666f6e742d66616d6960208201527f6c793d276d6f6e6f7370616365273e546f74616c204e756d626572206f66204c60408201527f6963656e736573204f776e6564206279204f776e65723a200000000000000000606082015260780190565b856154d7565b6c1e17ba32bc3a1f1e17b9bb339f60991b8152600d0190565b9695505050505050565b707b226e616d65223a2022546f6b656e202360781b81528351600090615867816011850160208901614a97565b7f222c20226465736372697074696f6e223a202241204e6f64654c6963656e73656011918401918201527f20746f6b656e222c2022696d616765223a2022646174613a696d6167652f737660318201526c19cade1b5b0ed8985cd94d8d0b609a1b605182015284516158e081605e840160208901614a97565b7f222c202261747472696275746573223a205b7b2274726169745f74797065223a605e929091019182015273101127bbb732b9111610113b30b63ab2911d101160611b607e820152835161593b816092840160208801614a97565b7f227d2c207b2274726169745f74797065223a20224c6567616c222c202276616c609292909101918201527f7565223a202268747470733a2f2f7861692e67616d65732f73656e7472796e6f60b28201526e646561677265656d656e74227d5d7d60881b60d282015260e10195945050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000008152600082516159e881601d850160208701614a97565b91909101601d0192915050565b604081526000615a0960408301858761543c565b905060018060a01b0383166020830152949350505050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008251615a85818460208701614a97565b9190910192915050565b604081526000615aa26040830185614ac3565b90508260208301529392505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351615ae9816017850160208801614a97565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615b1a816028840160208801614a97565b01602801949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061583090830184614ac3565b600060208284031215615bb057600080fd5b815161478381614a64565b600081615bca57615bca615327565b506000190190565b634e487b7160e01b600052603160045260246000fdfe8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220dc0bdd15dbe5a26bd62764ab91b4e28e68ff28d8ccaa3506ca3d3d88a440ff6264736f6c63430008090033