0 txs
834 calls
constructor
constructor()
functions
ADMIN_ROLE
viewfunction ADMIN_ROLE() view returns (bytes32)
checkIfUserhasAcode
viewfunction checkIfUserhasAcode(address _user) view returns (string referralCode)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getAllOutstandingDebts
viewfunction getAllOutstandingDebts() view returns (tuple[])
getLevelBenefits
purefunction getLevelBenefits() pure returns (string lowLevels, string midLevels, string highLevels)
getOutstandingDebtsCount
viewfunction getOutstandingDebtsCount() view returns (uint256)
getReferrerDashboard
viewfunction getReferrerDashboard(address _referrer) view returns (string code, uint256 level, uint256 totalRewards, uint256 totalReferrals, uint256 activeReferrals, uint256 currentLevelProgress, uint256 nextLevelThreshold, string referredByCode)
getReferrerLevel
viewfunction getReferrerLevel(address referrer) view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getTotalOutstandingDebts
viewfunction getTotalOutstandingDebts() view returns (uint256 ethDebts, uint256 tokenDebts)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
investmentThresholds
viewfunction investmentThresholds(uint256) view returns (uint256)
marketingWallet
viewfunction marketingWallet(address) view returns (bool)
paused
viewfunction paused() view returns (bool)
PAUSER_ROLE
viewfunction PAUSER_ROLE() view returns (bytes32)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
referralCodes
viewfunction referralCodes(string) view returns (address)
referrerRewardPercentages
viewfunction referrerRewardPercentages(uint256) view returns (uint256)
referrers
viewfunction referrers(address) view returns (string referralCode, uint256 level, uint256 investmentAmount, uint256 referralVolume, uint256 totalRewards, uint256 activeReferrals, string referredBy)
rewardToken
viewfunction rewardToken() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
UPGRADER_ROLE
viewfunction UPGRADER_ROLE() view returns (bytes32)
volumeThresholds
viewfunction volumeThresholds(uint256) view returns (uint256)
adjustTotalRewards
nonpayablefunction adjustTotalRewards(address _referrer, uint256 _newTotalRewards)
createMarketingReferralCode
nonpayablefunction createMarketingReferralCode(address _marketingAddress, uint256 _initialInvestment, string _referredByCode) returns (string)
createReferralCode
nonpayablefunction createReferralCode(address _user, uint256 _initialInvestment, string _referredByCode) returns (string)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address _rewardToken)
pause
nonpayablefunction pause()
processQueuedPayments
nonpayablefunction processQueuedPayments(uint256 _maxPayments) returns (uint256)
processReferral
nonpayablefunction processReferral(address _referee, string _code, uint256 _purchaseAmount, bool isEthPayment, uint256 currentUsdPrice)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setInvestmentThresholds
nonpayablefunction setInvestmentThresholds(uint256[] _newThresholds)
setReferrerRewardPercentages
nonpayablefunction setReferrerRewardPercentages(uint256[] _newPercentages)
setVolumeThresholds
nonpayablefunction setVolumeThresholds(uint256[] _newThresholds)
unpause
nonpayablefunction unpause()
updateInvestmentAmount
nonpayablefunction updateInvestmentAmount(address _referrer, uint256 _additionalAmount)
updateMarketingLevel
nonpayablefunction updateMarketingLevel(address _address, uint256 level) returns (uint256)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
Initialized
event Initialized(uint64 version)
Paused
event Paused(address account)
ReferralCodeGenerated
event ReferralCodeGenerated(address indexed referrer, string code)
ReferralProcessed
event ReferralProcessed(address indexed referrer, address indexed referee, uint256 referrerReward, uint256 transferAmount)
ReferrerLevelUpdated
event ReferrerLevelUpdated(address indexed referrer, uint256 newLevel)
ReferrerRewardsAdjusted
event ReferrerRewardsAdjusted(address indexed referrer, uint256 oldTotalRewards, uint256 newTotalRewards)
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)
Unpaused
event Unpaused(address account)
Upgraded
event Upgraded(address indexed implementation)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
EnforcedPause
error EnforcedPause()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExpectedPause
error ExpectedPause()
FailedCall
error FailedCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516141466100fd60003960008181612e0501528181612e2e0152612f9301526141466000f3fe6080604052600436106102315760003560e01c80637f976eaa1161012d578063c4d66de8116100b0578063e6df7c0f11610077578063e6df7c0f146107a2578063f3ba465f146107c2578063f6731ec4146107e4578063f72c0d8b14610804578063f7c618c114610838578063fa2d4c971461085857005b8063c4d66de8146106d6578063d547741f146106f6578063d8feb48e14610716578063de2ad91a14610746578063e63ab1e91461078057005b8063a63e4eb8116100f4578063a63e4eb814610618578063ad3cb1cc14610638578063aeebf7a914610676578063ba113d0414610696578063c23d4374146106b657005b80637f976eaa1461058e5780638456cb59146105ae57806391d14854146105c35780639e94cf4f146105e3578063a217fddf1461060357005b806343e04786116101b55780636187da231161017c5780636187da23146104555780636779249414610489578063756c9f84146104b357806375b238fc1461054c5780637f5ab1581461056e57005b806343e04786146103b55780634a3b68cc146103d55780634f1ef2861461040857806352d1902d1461041b5780635c975abb1461043057005b80632655e840116101f95780632655e840146102e75780632789fae1146103405780632f2ff15d1461036057806336568abe146103805780633f4ba83a146103a057005b806301ffc9a71461023357806302951a04146102685780630cb803b414610287578063248a9ca3146102a7578063263c7eca146102c7575b005b34801561023f57600080fd5b5061025361024e36600461374f565b610878565b60405190151581526020015b60405180910390f35b34801561027457600080fd5b506007545b60405190815260200161025f565b34801561029357600080fd5b506102316102a2366004613795565b6108af565b3480156102b357600080fd5b506102796102c23660046137bf565b610989565b3480156102d357600080fd5b506102796102e23660046137bf565b6109ab565b3480156102f357600080fd5b50610328610302366004613899565b80516020818301810180516002825292820191909301209152546001600160a01b031681565b6040516001600160a01b03909116815260200161025f565b34801561034c57600080fd5b5061023161035b3660046138e3565b6109cc565b34801561036c57600080fd5b5061023161037b366004613954565b610e00565b34801561038c57600080fd5b5061023161039b366004613954565b610e22565b3480156103ac57600080fd5b50610231610e5a565b3480156103c157600080fd5b506102796103d0366004613795565b610e7d565b3480156103e157600080fd5b506103f56103f0366004613980565b611004565b60405161025f97969594939291906139eb565b610231610416366004613a3c565b61114e565b34801561042757600080fd5b5061027961116d565b34801561043c57600080fd5b506000805160206140d18339815191525460ff16610253565b34801561046157600080fd5b50610475610470366004613980565b61118a565b60405161025f989796959493929190613a9d565b34801561049557600080fd5b5061049e61134b565b6040805192835260208301919091520161025f565b3480156104bf57600080fd5b506040805180820182526014808252734164646974696f6e616c20746f6b656e7320352560601b60208084019190915283518085018552918252734164646974696f6e616c20746f6b656e7320372560601b828201528351808501855260158152744164646974696f6e616c20746f6b656e732031302560581b91810191909152925161025f9390613af7565b34801561055857600080fd5b506102796000805160206140f183398151915281565b34801561057a57600080fd5b50610231610589366004613b3a565b6113f8565b34801561059a57600080fd5b506102316105a9366004613b3a565b611419565b3480156105ba57600080fd5b5061023161143a565b3480156105cf57600080fd5b506102536105de366004613954565b61145a565b3480156105ef57600080fd5b506102796105fe3660046137bf565b611492565b34801561060f57600080fd5b50610279600081565b34801561062457600080fd5b50610231610633366004613b3a565b6114a2565b34801561064457600080fd5b50610669604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161025f9190613be9565b34801561068257600080fd5b50610669610691366004613bfc565b6114c3565b3480156106a257600080fd5b506102796106b13660046137bf565b611876565b3480156106c257600080fd5b506102316106d1366004613795565b611bb5565b3480156106e257600080fd5b506102316106f1366004613980565b611c54565b34801561070257600080fd5b50610231610711366004613954565b612405565b34801561072257600080fd5b50610253610731366004613980565b60036020526000908152604090205460ff1681565b34801561075257600080fd5b50610279610761366004613980565b6001600160a01b03166000908152600160208190526040909120015490565b34801561078c57600080fd5b5061027960008051602061409183398151915281565b3480156107ae57600080fd5b506106696107bd366004613bfc565b612421565b3480156107ce57600080fd5b506107d76127ee565b60405161025f9190613c52565b3480156107f057600080fd5b506102796107ff3660046137bf565b61288a565b34801561081057600080fd5b506102797f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e381565b34801561084457600080fd5b50600054610328906001600160a01b031681565b34801561086457600080fd5b50610669610873366004613980565b61289a565b60006001600160e01b03198216637965db0b60e01b14806108a957506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000805160206140f18339815191526108c781612946565b6001600160a01b0383166000908152600160205260408120805490919082906108ef90613cb7565b9050116109345760405162461bcd60e51b815260206004820152600e60248201526d2737ba1030903932b332b93932b960911b60448201526064015b60405180910390fd5b6004810180549084905560408051828152602081018690526001600160a01b038716917f7bdbc297dc0e9c358e7fd989f3ceb575b84d3a3b780f6495e98d039c2a2c2ebc910160405180910390a25050505050565b60009081526000805160206140b1833981519152602052604090206001015490565b600481815481106109bb57600080fd5b600091825260209091200154905081565b6000805160206140f18339815191526109e481612946565b6109ec612950565b60006002866040516109fe9190613ceb565b908152604051908190036020019020546001600160a01b0316905080610a5e5760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420726566657272616c20636f646560581b604482015260640161092b565b866001600160a01b0316816001600160a01b031603610a8f5760405162461bcd60e51b815260040161092b90613d07565b6001600160a01b0381166000908152600160208190526040822080820154909291610ae3918991600691610ac39190613d4c565b81548110610ad357610ad3613d5f565b906000526020600020015461299a565b905060008615610b155785610afa6012600a613e5c565b610b049084613e68565b610b0e9190613e95565b9050610b21565b610b1e826129ba565b90505b87836003016000828254610b359190613ea9565b9250508190555081836004016000828254610b509190613ea9565b909155506001905060005b6005850154811015610bb1578b6001600160a01b0316856005018281548110610b8657610b86613d5f565b6000918252602090912001546001600160a01b031603610ba95760009150610bb1565b600101610b5b565b508015610bfd576005840180546001810182556000918252602082200180546001600160a01b0319166001600160a01b038e1617905560068501805491610bf783613ebc565b91905055505b610c07858a611bb5565b610c10856129dd565b508115610d7457600088610cbb576000546040516370a0823160e01b815230600482015284916001600160a01b0316906370a0823190602401602060405180830381865afa158015610c66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8a9190613ed5565b1080159150610caf57600054610caa906001600160a01b03168785612b26565b610d72565b610caa86846000612b78565b8247101590508015610d66576000866001600160a01b03168460405160006040518083038185875af1925050503d8060008114610d14576040519150601f19603f3d011682016040523d82523d6000602084013e610d19565b606091505b5050905080610d605760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b604482015260640161092b565b50610d72565b610d7286846001612b78565b505b8a6001600160a01b0316856001600160a01b03167fc613ace12cc609ce1a4f715d4399ef19da09bed6673f8ad0e130027c98b582b48585604051610dc2929190918252602082015260400190565b60405180910390a35050505050610df860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b610e0982610989565b610e1281612946565b610e1c8383612c79565b50505050565b6001600160a01b0381163314610e4b5760405163334bd91960e11b815260040160405180910390fd5b610e558282612d1e565b505050565b600080516020614091833981519152610e7281612946565b610e7a612d9a565b50565b60006000805160206140f1833981519152610e9781612946565b6001600160a01b038416610edf5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161092b565b6001600160a01b03841660009081526003602052604090205460ff161515600114610f575760405162461bcd60e51b815260206004820152602260248201527f4d7573742062652061206d61726b6574696e672077616c6c6574206164647265604482015261737360f01b606482015260840161092b565b60018310158015610f6a57506004548311155b610fa65760405162461bcd60e51b815260206004820152600d60248201526c125b9d985b1a59081b195d995b609a1b604482015260640161092b565b6001600160a01b03841660008181526001602081815260409283902091820187905591518681529092917f59880f606d722fc5f8c10ced25c9d310ff8900b8307dc5f92217894d74b184cf910160405180910390a250919392505050565b60016020526000908152604090208054819061101f90613cb7565b80601f016020809104026020016040519081016040528092919081815260200182805461104b90613cb7565b80156110985780601f1061106d57610100808354040283529160200191611098565b820191906000526020600020905b81548152906001019060200180831161107b57829003601f168201915b5050505050908060010154908060020154908060030154908060040154908060060154908060070180546110cb90613cb7565b80601f01602080910402602001604051908101604052809291908181526020018280546110f790613cb7565b80156111445780601f1061111957610100808354040283529160200191611144565b820191906000526020600020905b81548152906001019060200180831161112757829003601f168201915b5050505050905087565b611156612dfa565b61115f82612ea1565b6111698282612ecb565b5050565b6000611177612f88565b5060008051602061407183398151915290565b6001600160a01b038116600090815260016020819052604082209081015460045460609392839283928392839283928992919084908210156111eb57600482815481106111d9576111d9613d5f565b906000526020600020015490506111f0565b506000195b8260000183600101548460040154856005018054905086600601548760020154868960070187805461122190613cb7565b80601f016020809104026020016040519081016040528092919081815260200182805461124d90613cb7565b801561129a5780601f1061126f5761010080835404028352916020019161129a565b820191906000526020600020905b81548152906001019060200180831161127d57829003601f168201915b505050505097508080546112ad90613cb7565b80601f01602080910402602001604051908101604052809291908181526020018280546112d990613cb7565b80156113265780601f106112fb57610100808354040283529160200191611326565b820191906000526020600020905b81548152906001019060200180831161130957829003601f168201915b505050505090509a509a509a509a509a509a509a509a50505050919395975091939597565b60008060008060005b6007548110156113ee5760006007828154811061137357611373613d5f565b600091825260209182902060408051606081018252600390930290910180546001600160a01b03168352600180820154948401949094526002015490820181905290925090036113d35760208101516113cc9085613ea9565b93506113e5565b60208101516113e29084613ea9565b92505b50600101611354565b5090939092509050565b6000805160206140f183398151915261141081612946565b61116982612fd1565b6000805160206140f183398151915261143181612946565b61116982613072565b60008051602061409183398151915261145281612946565b610e7a613113565b60009182526000805160206140b1833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600681815481106109bb57600080fd5b6000805160206140f18339815191526114ba81612946565b6111698261315c565b60606000805160206140f18339815191526114dd81612946565b6001600160a01b0385166000908152600160205260409020805461150090613cb7565b1590506115495760405162461bcd60e51b81526020600482015260176024820152765573657220616c726561647920686173206120636f646560481b604482015260640161092b565b600460008154811061155d5761155d613d5f565b90600052602060002001548410156115ae5760405162461bcd60e51b8152602060048201526014602482015273125b9d995cdd1b595b9d081d1bdbc81cdb585b1b60621b604482015260640161092b565b60006115b986613204565b905060006115c686613304565b9050866001600160a01b03166002866040516115e29190613ceb565b908152604051908190036020019020546001600160a01b0316036116185760405162461bcd60e51b815260040161092b90613d07565b604051806101000160405280838152602001828152602001878152602001600081526020016000815260200160006001600160401b0381111561165d5761165d6137d8565b604051908082528060200260200182016040528015611686578160200160208202803683370190505b5081526000602080830182905260409283018990526001600160a01b038b1682526001905220815181906116ba9082613f3c565b50602082810151600183015560408301516002830155606083015160038301556080830151600483015560a083015180516116fb92600585019201906136bf565b5060c0820151600682015560e0820151600782019061171a9082613f3c565b509050508660028360405161172f9190613ceb565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790558451156117e85760006002866040516117779190613ceb565b9081526040805160209281900383019020546001600160a01b03908116600081815260018086529381206005810180549586018155825294812090930180546001600160a01b031916928d169290921790915580825260069092018054929350906117e183613ebc565b9190505550505b866001600160a01b03167f86d606287c9d4f3a350b0e6ea78a04d97425fff091713f4a433942578dc6f161836040516118219190613be9565b60405180910390a2866001600160a01b03167f59880f606d722fc5f8c10ced25c9d310ff8900b8307dc5f92217894d74b184cf8260405161186491815260200190565b60405180910390a25095945050505050565b60006000805160206140f183398151915261189081612946565b600083116118ea5760405162461bcd60e51b815260206004820152602160248201527f4d7573742070726f63657373206174206c65617374206f6e65207061796d656e6044820152601d60fa1b606482015260840161092b565b6000805b600754811080156118fe57508482105b15611bab5760006007828154811061191857611918613d5f565b6000918252602080832060408051606081018252600390940290910180546001600160a01b031684526001808201549385019390935260020154908301819052919350036119cc57816020015147106119c757815160208301516040516000926001600160a01b031691908381818185875af1925050503d80600081146119bb576040519150601f19603f3d011682016040523d82523d6000602084013e6119c0565b606091505b5090925050505b611aba565b60006119db83602001516129ba565b600080548551604080516001600160a01b039283166024820152604480820187905282518083039091018152606490910182526020810180516001600160e01b031663a9059cbb60e01b1790529051949550929384939190921691611a409190613ceb565b6000604051808303816000865af19150503d8060008114611a7d576040519150601f19603f3d011682016040523d82523d6000602084013e611a82565b606091505b5091509150818015611aac575080511580611aac575080806020019051810190611aac9190613ffa565b15611ab657600193505b5050505b8015611b965760078054611ad090600190613d4c565b81548110611ae057611ae0613d5f565b906000526020600020906003020160078481548110611b0157611b01613d5f565b60009182526020909120825460039092020180546001600160a01b0319166001600160a01b03909216919091178155600180830154908201556002918201549101556007805480611b5457611b54614017565b60008281526020812060036000199093019283020180546001600160a01b03191681556001810182905560020155905583611b8e81613ebc565b945050611ba4565b82611ba081613ebc565b9350505b50506118ee565b5091505b50919050565b6000805160206140f1833981519152611bcd81612946565b6001600160a01b038316600090815260016020526040812080549091908290611bf590613cb7565b905011611c355760405162461bcd60e51b815260206004820152600e60248201526d2737ba1030903932b332b93932b960911b604482015260640161092b565b82816002016000828254611c499190613ea9565b909155505050505050565b6000611c5e61335e565b805490915060ff600160401b82041615906001600160401b0316600081158015611c855750825b90506000826001600160401b03166001148015611ca15750303b155b905081158015611caf575080155b15611ccd5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611cf757845460ff60401b1916600160401b1785555b611cff613387565b611d07613387565b611d0f613387565b611d1761338f565b611d22600033612c79565b50611d3b60008051602061409183398151915233612c79565b50611d667f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e333612c79565b50611d7f6000805160206140f183398151915233612c79565b50600080546001600160a01b0319166001600160a01b03881617815560408051600a8082526101608201909252906020820161014080368337019050509050611dca6012600a613e5c565b611dd5906001613e68565b81600081518110611de857611de8613d5f565b6020908102919091010152611dff6012600a613e5c565b611e0b906101f4613e68565b81600181518110611e1e57611e1e613d5f565b6020908102919091010152611e356012600a613e5c565b611e41906103e8613e68565b81600281518110611e5457611e54613d5f565b6020908102919091010152611e6b6012600a613e5c565b611e77906107d0613e68565b81600381518110611e8a57611e8a613d5f565b6020908102919091010152611ea16012600a613e5c565b611ead90610dac613e68565b81600481518110611ec057611ec0613d5f565b6020908102919091010152611ed76012600a613e5c565b611ee390612328613e68565b81600581518110611ef657611ef6613d5f565b6020908102919091010152611f0d6012600a613e5c565b611f1990615dc0613e68565b81600681518110611f2c57611f2c613d5f565b6020908102919091010152611f436012600a613e5c565b611f4f9061c350613e68565b81600781518110611f6257611f62613d5f565b6020908102919091010152611f796012600a613e5c565b611f8690620186a0613e68565b81600881518110611f9957611f99613d5f565b6020908102919091010152611fb06012600a613e5c565b611fbd9062030d40613e68565b81600981518110611fd057611fd0613d5f565b602090810291909101015260408051600a808252610160820190925260009181602001602082028036833701905050905061200d6012600a613e5c565b612018906064613e68565b8160008151811061202b5761202b613d5f565b60209081029190910101526120426012600a613e5c565b61204e906103e8613e68565b8160018151811061206157612061613d5f565b60209081029190910101526120786012600a613e5c565b61208490613a98613e68565b8160028151811061209757612097613d5f565b60209081029190910101526120ae6012600a613e5c565b6120ba906188b8613e68565b816003815181106120cd576120cd613d5f565b60209081029190910101526120e46012600a613e5c565b6120f19062011170613e68565b8160048151811061210457612104613d5f565b602090810291909101015261211b6012600a613e5c565b61212890620249f0613e68565b8160058151811061213b5761213b613d5f565b60209081029190910101526121526012600a613e5c565b61215f90620493e0613e68565b8160068151811061217257612172613d5f565b60209081029190910101526121896012600a613e5c565b61219690620aae60613e68565b816007815181106121a9576121a9613d5f565b60209081029190910101526121c06012600a613e5c565b6121cd90620f4240613e68565b816008815181106121e0576121e0613d5f565b60209081029190910101526121f76012600a613e5c565b61220490622dc6c0613e68565b8160098151811061221757612217613d5f565b602090810291909101015260408051600a808252610160820190925260009181602001602082028036833701905050905060648160008151811061225d5761225d613d5f565b60200260200101818152505060c88160018151811061227e5761227e613d5f565b60200260200101818152505061012c816002815181106122a0576122a0613d5f565b602002602001018181525050610190816003815181106122c2576122c2613d5f565b6020026020010181815250506101f4816004815181106122e4576122e4613d5f565b6020026020010181815250506102588160058151811061230657612306613d5f565b6020026020010181815250506103208160068151811061232857612328613d5f565b6020026020010181815250506103e88160078151811061234a5761234a613d5f565b6020026020010181815250506107d08160088151811061236c5761236c613d5f565b602002602001018181525050610bb88160098151811061238e5761238e613d5f565b6020026020010181815250506123a383612fd1565b6123ac82613072565b6123b58161315c565b5050508315610df857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b61240e82610989565b61241781612946565b610e1c8383612d1e565b60606000805160206140f183398151915261243b81612946565b6001600160a01b0385166000908152600160205260409020805461245e90613cb7565b1590506124a75760405162461bcd60e51b81526020600482015260176024820152765573657220616c726561647920686173206120636f646560481b604482015260640161092b565b60046000815481106124bb576124bb613d5f565b906000526020600020015484101561250c5760405162461bcd60e51b8152602060048201526014602482015273125b9d995cdd1b595b9d081d1bdbc81cdb585b1b60621b604482015260640161092b565b600061251786613204565b9050600160005b60045481101561256b576004818154811061253b5761253b613d5f565b9060005260206000200154871061255e57612557816001613ea9565b9150612563565b61256b565b60010161251e565b5060045481111561257b57506004545b866001600160a01b03166002866040516125959190613ceb565b908152604051908190036020019020546001600160a01b0316036125cb5760405162461bcd60e51b815260040161092b90613d07565b604051806101000160405280838152602001828152602001878152602001600081526020016000815260200160006001600160401b03811115612610576126106137d8565b604051908082528060200260200182016040528015612639578160200160208202803683370190505b5081526000602080830182905260409283018990526001600160a01b038b16825260019052208151819061266d9082613f3c565b50602082810151600183015560408301516002830155606083015160038301556080830151600483015560a083015180516126ae92600585019201906136bf565b5060c0820151600682015560e082015160078201906126cd9082613f3c565b50905050866002836040516126e29190613ceb565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b031990921691909117905584511561279b57600060028660405161272a9190613ceb565b9081526040805160209281900383019020546001600160a01b03908116600081815260018086529381206005810180549586018155825294812090930180546001600160a01b031916928d1692909217909155808252600690920180549293509061279483613ebc565b9190505550505b6001600160a01b03871660008181526003602052604090819020805460ff19166001179055517f86d606287c9d4f3a350b0e6ea78a04d97425fff091713f4a433942578dc6f16190611821908590613be9565b60606000805160206140f183398151915261280881612946565b6007805480602002602001604051908101604052809291908181526020016000905b8282101561287f576000848152602090819020604080516060810182526003860290920180546001600160a01b031683526001808201548486015260029091015491830191909152908352909201910161282a565b5050505091505b5090565b600581815481106109bb57600080fd5b6001600160a01b03811660009081526001602052604090208054606091906128c190613cb7565b80601f01602080910402602001604051908101604052809291908181526020018280546128ed90613cb7565b801561293a5780601f1061290f5761010080835404028352916020019161293a565b820191906000526020600020905b81548152906001019060200180831161291d57829003601f168201915b50505050509050919050565b610e7a813361339f565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080546001190161299457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60006127106129a98385613e68565b6129b39190613e95565b9392505050565b60006129c860066012613d4c565b6129d390600a613e5c565b6108a99083613e95565b6001600160a01b03811660009081526001602081905260408220808201549091835b600454811015612a505760048181548110612a1c57612a1c613d5f565b9060005260206000200154846002015410612a4357612a3c816001613ea9565b9150612a48565b612a50565b6001016129ff565b50600160005b600554811015612aa75760058181548110612a7357612a73613d5f565b9060005260206000200154856003015410612a9a57612a93816001613ea9565b9150612a9f565b612aa7565b600101612a56565b50808211612ab55780612ab7565b815b600454909350831115612aca5760045492505b8360010154831115612b1c57600184018390556040518381526001600160a01b038716907f59880f606d722fc5f8c10ced25c9d310ff8900b8307dc5f92217894d74b184cf9060200160405180910390a25b5090949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e559084906133d8565b600081612b86576000612b89565b60015b604080516060810182526001600160a01b0396871681526020810195865260ff929092169082019081526007805460018101825560009190915291517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600390930292830180546001600160a01b031916919097161790955592517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689840155505090517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a90910155565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60006000805160206140b1833981519152612c94848461145a565b612d14576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055612cca3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506108a9565b60009150506108a9565b60006000805160206140b1833981519152612d39848461145a565b15612d14576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506108a9565b612da2613449565b6000805160206140d1833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612e8157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612e75600080516020614071833981519152546001600160a01b031690565b6001600160a01b031614155b15612e9f5760405163703e46dd60e11b815260040160405180910390fd5b565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e361116981612946565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612f25575060408051601f3d908101601f19168201909252612f2291810190613ed5565b60015b612f4d57604051634c9c8ce360e01b81526001600160a01b038316600482015260240161092b565b6000805160206140718339815191528114612f7e57604051632a87526960e21b81526004810182905260240161092b565b610e558383613479565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612e9f5760405163703e46dd60e11b815260040160405180910390fd5b600081511161301b5760405162461bcd60e51b8152602060048201526016602482015275456d707479207468726573686f6c647320617272617960501b604482015260640161092b565b61302760046000613720565b60005b815181101561116957600482828151811061304757613047613d5f565b602090810291909101810151825460018181018555600094855292909320909201919091550161302a565b60008151116130bc5760405162461bcd60e51b8152602060048201526016602482015275456d707479207468726573686f6c647320617272617960501b604482015260640161092b565b6130c860056000613720565b60005b81518110156111695760058282815181106130e8576130e8613d5f565b60209081029190910181015182546001818101855560009485529290932090920191909155016130cb565b61311b6134cf565b6000805160206140d1833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612ddc565b60008151116131ad5760405162461bcd60e51b815260206004820152601760248201527f456d7074792070657263656e7461676573206172726179000000000000000000604482015260640161092b565b6131b960066000613720565b60005b81518110156111695760068282815181106131d9576131d9613d5f565b60209081029190910181015182546001818101855560009485529290932090920191909155016131bc565b604051606082811b6bffffffffffffffffffffffff19166020830152906000906034016040516020818303038152906040528051906020012090506000604051806060016040528060218152602001614050602191396040805160088082528183019092529192506000919060208201818036833701905050905060005b60088110156132fb5782601a8583602081106132a0576132a0613d5f565b6132ac9291901a61402d565b60ff16815181106132bf576132bf613d5f565b602001015160f81c60f81b8282815181106132dc576132dc613d5f565b60200101906001600160f81b031916908160001a905350600101613282565b50949350505050565b60006001815b600454811015613357576004818154811061332757613327613d5f565b9060005260206000200154841061334a57613343816001613ea9565b915061334f565b613357565b60010161330a565b5092915050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a006108a9565b612e9f613500565b613397613500565b612e9f613525565b6133a9828261145a565b6111695760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161092b565b600080602060008451602086016000885af1806133fb576040513d6000823e3d81fd5b50506000513d91508115613413578060011415613420565b6001600160a01b0384163b155b15610e1c57604051635274afe760e01b81526001600160a01b038516600482015260240161092b565b6000805160206140d18339815191525460ff16612e9f57604051638dfc202b60e01b815260040160405180910390fd5b6134828261352d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156134c757610e558282613592565b611169613608565b6000805160206140d18339815191525460ff1615612e9f5760405163d93c066560e01b815260040160405180910390fd5b613508613627565b612e9f57604051631afcd79f60e31b815260040160405180910390fd5b612c53613500565b806001600160a01b03163b60000361356357604051634c9c8ce360e01b81526001600160a01b038216600482015260240161092b565b60008051602061407183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516135af9190613ceb565b600060405180830381855af49150503d80600081146135ea576040519150601f19603f3d011682016040523d82523d6000602084013e6135ef565b606091505b50915091506135ff858383613641565b95945050505050565b3415612e9f5760405163b398979f60e01b815260040160405180910390fd5b600061363161335e565b54600160401b900460ff16919050565b6060826136565761365182613696565b6129b3565b815115801561366d57506001600160a01b0384163b155b1561335757604051639996b31560e01b81526001600160a01b038516600482015260240161092b565b8051156136a65780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b828054828255906000526020600020908101928215613714579160200282015b8281111561371457825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906136df565b5061288692915061373a565b5080546000825590600052602060002090810190610e7a91905b5b80821115612886576000815560010161373b565b60006020828403121561376157600080fd5b81356001600160e01b0319811681146129b357600080fd5b80356001600160a01b038116811461379057600080fd5b919050565b600080604083850312156137a857600080fd5b6137b183613779565b946020939093013593505050565b6000602082840312156137d157600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613816576138166137d8565b604052919050565b6000806001600160401b03841115613838576138386137d8565b50601f8301601f191660200161384d816137ee565b91505082815283838301111561386257600080fd5b828260208301376000602084830101529392505050565b600082601f83011261388a57600080fd5b6129b38383356020850161381e565b6000602082840312156138ab57600080fd5b81356001600160401b038111156138c157600080fd5b6138cd84828501613879565b949350505050565b8015158114610e7a57600080fd5b600080600080600060a086880312156138fb57600080fd5b61390486613779565b945060208601356001600160401b0381111561391f57600080fd5b61392b88828901613879565b945050604086013592506060860135613943816138d5565b949793965091946080013592915050565b6000806040838503121561396757600080fd5b8235915061397760208401613779565b90509250929050565b60006020828403121561399257600080fd5b6129b382613779565b60005b838110156139b657818101518382015260200161399e565b50506000910152565b600081518084526139d781602086016020860161399b565b601f01601f19169290920160200192915050565b60e0815260006139fe60e083018a6139bf565b8860208401528760408401528660608401528560808401528460a084015282810360c0840152613a2e81856139bf565b9a9950505050505050505050565b60008060408385031215613a4f57600080fd5b613a5883613779565b915060208301356001600160401b03811115613a7357600080fd5b8301601f81018513613a8457600080fd5b613a938582356020840161381e565b9150509250929050565b61010081526000613ab261010083018b6139bf565b8960208401528860408401528760608401528660808401528560a08401528460c084015282810360e0840152613ae881856139bf565b9b9a5050505050505050505050565b606081526000613b0a60608301866139bf565b8281036020840152613b1c81866139bf565b90508281036040840152613b3081856139bf565b9695505050505050565b600060208284031215613b4c57600080fd5b81356001600160401b03811115613b6257600080fd5b8201601f81018413613b7357600080fd5b80356001600160401b03811115613b8c57613b8c6137d8565b8060051b613b9c602082016137ee565b91825260208184018101929081019087841115613bb857600080fd5b6020850194505b83851015613bde57843580835260209586019590935090910190613bbf565b979650505050505050565b6020815260006129b360208301846139bf565b600080600060608486031215613c1157600080fd5b613c1a84613779565b92506020840135915060408401356001600160401b03811115613c3c57600080fd5b613c4886828701613879565b9150509250925092565b602080825282518282018190526000918401906040840190835b81811015613cac57835180516001600160a01b03168452602080820151818601526040918201519185019190915290930192606090920191600101613c6c565b509095945050505050565b600181811c90821680613ccb57607f821691505b602082108103611baf57634e487b7160e01b600052602260045260246000fd5b60008251613cfd81846020870161399b565b9190910192915050565b60208082526015908201527421b0b73737ba103932b332b9103cb7bab939b2b63360591b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156108a9576108a9613d36565b634e487b7160e01b600052603260045260246000fd5b6001815b6001841115613db057808504811115613d9457613d94613d36565b6001841615613da257908102905b60019390931c928002613d79565b935093915050565b600082613dc7575060016108a9565b81613dd4575060006108a9565b8160018114613dea5760028114613df457613e10565b60019150506108a9565b60ff841115613e0557613e05613d36565b50506001821b6108a9565b5060208310610133831016604e8410600b8410161715613e33575081810a6108a9565b613e406000198484613d75565b8060001904821115613e5457613e54613d36565b029392505050565b60006129b38383613db8565b80820281158282048414176108a9576108a9613d36565b634e487b7160e01b600052601260045260246000fd5b600082613ea457613ea4613e7f565b500490565b808201808211156108a9576108a9613d36565b600060018201613ece57613ece613d36565b5060010190565b600060208284031215613ee757600080fd5b5051919050565b601f821115610e5557806000526020600020601f840160051c81016020851015613f155750805b601f840160051c820191505b81811015613f355760008155600101613f21565b5050505050565b81516001600160401b03811115613f5557613f556137d8565b613f6981613f638454613cb7565b84613eee565b6020601f821160018114613f9d5760008315613f855750848201515b600019600385901b1c1916600184901b178455613f35565b600084815260208120601f198516915b82811015613fcd5787850151825560209485019460019092019101613fad565b5084821015613feb5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60006020828403121561400c57600080fd5b81516129b3816138d5565b634e487b7160e01b600052603160045260246000fd5b600060ff83168061404057614040613e7f565b8060ff8416069150509291505056fe31323334353637383941424344454647484a4b4c4d4e505152535455565758595a360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775a2646970667358221220bc4d19efc23c8a3242cb31d736ea948a4f50a72f26ef284799de275b9388785864736f6c634300081c0033