41 txs
42 calls
constructor
constructor()
functions
allowedTokens
viewfunction allowedTokens(address tokenAddress) view returns (bool isTokenAllowed)
allowedTokensList
viewfunction allowedTokensList(uint256) view returns (address)
divider
viewfunction divider() view returns (uint256)
getAllCampaigns
viewfunction getAllCampaigns() view returns (bytes4[])
getAllOpenCampaigns
viewfunction getAllOpenCampaigns() view returns (bytes4[])
getAllowedTokens
viewfunction getAllowedTokens() view returns (address[])
getCampaignInfo
viewfunction getCampaignInfo(bytes4 campaignId) view returns (tuple)
getOpenCampaignInfo
viewfunction getOpenCampaignInfo(bytes4 campaignId) view returns (tuple)
getUserCampaigns
viewfunction getUserCampaigns(address userAddress) view returns (bytes4[])
getUserOpenCampaigns
viewfunction getUserOpenCampaigns(address userAddress) view returns (bytes4[])
owner
viewfunction owner() view returns (address)
platformFeesPercentage
viewfunction platformFeesPercentage() view returns (uint256)
tokenDecimals
viewfunction tokenDecimals(address tokenAddress) view returns (uint256 tokenDecimals)
acceptProjectCampaign
nonpayablefunction acceptProjectCampaign(bytes4 campaignId)
addAllowedToken
nonpayablefunction addAllowedToken(address tokenAddress, uint256 decimals)
completeOpenCampaign
nonpayablefunction completeOpenCampaign(bytes4 campaignId, bool isFulfilled)
createNewCampaign
nonpayablefunction createNewCampaign(address selectedKol, uint256 offeringAmount, uint256 promotionEndsIn, uint256 offerEndsIn, address tokenAddress)
createOpenCampaign
nonpayablefunction createOpenCampaign(uint256 promotionEndsIn, uint256 poolAmount, address tokenAddress)
discardCampaign
nonpayablefunction discardCampaign(bytes4 campaignId)
fulfilProjectCampaign
nonpayablefunction fulfilProjectCampaign(bytes4 campaignId)
removeAllowedToken
nonpayablefunction removeAllowedToken(address tokenAddress)
renounceOwnership
nonpayablefunction renounceOwnership()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateCampaign
nonpayablefunction updateCampaign(bytes4 campaignId, address selectedKol, uint256 promotionEndsIn, uint256 offerEndsIn, uint256 newAmountOffered)
updateOpenCampaign
nonpayablefunction updateOpenCampaign(bytes4 campaignId, uint256 promotionEndsIn, uint256 poolAmount, uint8 newStatus)
updatePlatformFees
nonpayablefunction updatePlatformFees(uint256 newFees)
withdrawEth
nonpayablefunction withdrawEth()
withdrawToken
nonpayablefunction withdrawToken(address tokenAddress)
events
AcceptanceDeadlineReached
event AcceptanceDeadlineReached(bytes4 campaignId)
CampaignAccepted
event CampaignAccepted(bytes4 indexed campaignId, address acceptedBy)
CampaignCreated
event CampaignCreated(bytes4 indexed campaignId, address user)
CampaignFulfilled
event CampaignFulfilled(bytes4 campaignId)
CampaignUpdated
event CampaignUpdated(bytes4 indexed campaignId, address updatedBy)
FundWithdrawalSuccessful
event FundWithdrawalSuccessful()
OpenCampaignCompleted
event OpenCampaignCompleted(bytes4 indexed campaignId, address completedBy, bool isFulfilled)
OpenCampaignCreated
event OpenCampaignCreated(bytes4 indexed campaignId, address user, uint256 poolAmount)
OpenCampaignUpdated
event OpenCampaignUpdated(bytes4 indexed campaignId, address updatedBy)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PlatformFeesUpdated
event PlatformFeesUpdated(uint256 previousFees, uint256 updatedFees)
ProjectPaymentReturned
event ProjectPaymentReturned(bytes4 campaignId)
UserCreated
event UserCreated(address indexed userAddress)
errors
ContractBalanceInsufficient
error ContractBalanceInsufficient(uint256 required, uint256 available)
FundTransferError
error FundTransferError()
InvalidCampaignStatus
error InvalidCampaignStatus(uint8 expected, uint8 actual)
InvalidOpenCampaignStatus
error InvalidOpenCampaignStatus(uint8 expected, uint8 actual)
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
Unauthorized
error Unauthorized()
creation bytecode
0x608060405234801561001057600080fd5b5033600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100845760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161007b91906102ea565b60405180910390fd5b610093816101e560201b60201c565b506001808190555061271060028190555060016003600073833589fcd6edb6e08f4c7c32d4f71b54bda0291373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060126004600073833589fcd6edb6e08f4c7c32d4f71b54bda0291373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600573833589fcd6edb6e08f4c7c32d4f71b54bda029139080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610305565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006102d4826102a9565b9050919050565b6102e4816102c9565b82525050565b60006020820190506102ff60008301846102db565b92915050565b614347806103146000396000f3fe6080604052600436106101bb5760003560e01c806386cdf604116100ec578063b0308fad1161008a578063c36dd73911610064578063c36dd739146105eb578063e744092e14610628578063e8136a5114610665578063f2fde38b1461068e576101c2565b8063b0308fad1461056c578063b37df59414610597578063b41f48b0146105c2576101c2565b80638ee573ac116100c65780638ee573ac146104b257806390469a9d146104ef578063a0ef91df14610518578063a1e5084c1461052f576101c2565b806386cdf60414610433578063894760691461045e5780638da5cb5b14610487576101c2565b8063378efa3711610159578063715018a611610133578063715018a61461037957806379d3135e146103905780637d266e5b146103cd57806385dd92ac1461040a576101c2565b8063378efa37146102fc578063382c2f13146103275780635674030114610350576101c2565b806327200be01161019557806327200be0146102445780632f2cc96f1461026d57806331c7338b14610296578063320a4639146102bf576101c2565b8063019c84a9146101c7578063024ece89146101f0578063110011bc1461021b576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101ee60048036038101906101e9919061358b565b6106b7565b005b3480156101fc57600080fd5b50610205610b08565b60405161021291906136c4565b60405180910390f35b34801561022757600080fd5b50610242600480360381019061023d919061373e565b610b96565b005b34801561025057600080fd5b5061026b6004803603810190610266919061376b565b610d9a565b005b34801561027957600080fd5b50610294600480360381019061028f91906137ab565b610ea5565b005b3480156102a257600080fd5b506102bd60048036038101906102b8919061373e565b611273565b005b3480156102cb57600080fd5b506102e660048036038101906102e1919061373e565b6115b7565b6040516102f39190613972565b60405180910390f35b34801561030857600080fd5b506103116117e3565b60405161031e919061399d565b60405180910390f35b34801561033357600080fd5b5061034e6004803603810190610349919061373e565b6117ea565b005b34801561035c57600080fd5b50610377600480360381019061037291906139dd565b611c83565b005b34801561038557600080fd5b5061038e61217c565b005b34801561039c57600080fd5b506103b760048036038101906103b2919061373e565b612190565b6040516103c49190613b07565b60405180910390f35b3480156103d957600080fd5b506103f460048036038101906103ef9190613b22565b612351565b6040516104019190613bfe565b60405180910390f35b34801561041657600080fd5b50610431600480360381019061042c9190613c58565b61242a565b005b34801561043f57600080fd5b506104486126ac565b6040516104559190613bfe565b60405180910390f35b34801561046a57600080fd5b5061048560048036038101906104809190613b22565b612746565b005b34801561049357600080fd5b5061049c612891565b6040516104a99190613ca7565b60405180910390f35b3480156104be57600080fd5b506104d960048036038101906104d49190613b22565b6128ba565b6040516104e6919061399d565b60405180910390f35b3480156104fb57600080fd5b5061051660048036038101906105119190613b22565b6128d2565b005b34801561052457600080fd5b5061052d612abc565b005b34801561053b57600080fd5b5061055660048036038101906105519190613b22565b612b77565b6040516105639190613bfe565b60405180910390f35b34801561057857600080fd5b50610581612c50565b60405161058e9190613bfe565b60405180910390f35b3480156105a357600080fd5b506105ac612cea565b6040516105b9919061399d565b60405180910390f35b3480156105ce57600080fd5b506105e960048036038101906105e49190613cc2565b612cf0565b005b3480156105f757600080fd5b50610612600480360381019061060d9190613d15565b6130c6565b60405161061f9190613ca7565b60405180910390f35b34801561063457600080fd5b5061064f600480360381019061064a9190613b22565b613105565b60405161065c9190613d51565b60405180910390f35b34801561067157600080fd5b5061068c60048036038101906106879190613d15565b613125565b005b34801561069a57600080fd5b506106b560048036038101906106b09190613b22565b613178565b005b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073a90613dc9565b60405180910390fd5b60003342604051602001610758929190613ea9565b60405160208183030381529060405280519060200120905060004290506000604051806101200160405280847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020018381526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018781526020018881526020018573ffffffffffffffffffffffffffffffffffffffff1681526020016000600481111561082857610827613844565b5b81525090508060096000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908360e01c02179055506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816004015560a0820151816005015560c0820151816006015560e08201518160070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101008201518160070160146101000a81548160ff021916908360048111156109cc576109cb613844565b5b021790555090505060078390806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c0217905550600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208390806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c0217905550827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167fe41d37ea58ed0203f8476bf3621dbbab9e570a47e5d70e070d77fff130bad3d733604051610af69190613ca7565b60405180910390a25050505050505050565b60606005805480602002602001604051908101604052809291908181526020018280548015610b8c57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610b42575b5050505050905090565b610b9e6131fe565b600060096000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c7c576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006004811115610c9057610c8f613844565b5b8160070160149054906101000a900460ff166004811115610cb457610cb3613844565b5b14610d0a5760008160070160149054906101000a900460ff166040517f1e8a8fcc000000000000000000000000000000000000000000000000000000008152600401610d01929190613eef565b60405180910390fd5b60018160070160146101000a81548160ff02191690836004811115610d3257610d31613844565b5b0217905550817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167fe5cf44d72a8814a2030733c88ec446bde46fb067f7719357623edbcd901a28f433604051610d869190613ca7565b60405180910390a250610d97613244565b50565b610da261324d565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506005829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b610ead6131fe565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1390613f64565b60405180910390fd5b600060096000877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020905060006004811115610f8557610f84613844565b5b8160070160149054906101000a900460ff166004811115610fa957610fa8613844565b5b14610fff5760008160070160149054906101000a900460ff166040517f1e8a8fcc000000000000000000000000000000000000000000000000000000008152600401610ff6929190613eef565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611088576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081600601549050858260030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084826005018190555083826004018190555082826006018190555060008260070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508382111561120a5760008173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8560020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16878661116f9190613fb3565b6040518363ffffffff1660e01b815260040161118c929190613fe7565b6020604051808303816000875af11580156111ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cf9190614025565b905080611208576040517f0f9310f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3143324469716ea7cb6b9bc9bbe9af85e40758d7148f12663616614052a9f7b9336040516112599190613ca7565b60405180910390a250505061126c613244565b5050505050565b61127b61324d565b6112836131fe565b600060096000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020905060008160060154905060008260070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113449190613ca7565b602060405180830381865afa158015611361573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113859190614067565b101561144357818173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113c59190613ca7565b602060405180830381865afa1580156113e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114069190614067565b6040517faa1f42bd00000000000000000000000000000000000000000000000000000000815260040161143a929190614094565b60405180910390fd5b60048360070160146101000a81548160ff0219169083600481111561146b5761146a613844565b5b021790555060008173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8560020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686600601546040518363ffffffff1660e01b81526004016114d5929190613fe7565b6020604051808303816000875af11580156114f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115189190614025565b905080611551576040517f0f9310f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3143324469716ea7cb6b9bc9bbe9af85e40758d7148f12663616614052a9f7b9336040516115a09190613ca7565b60405180910390a2505050506115b4613244565b50565b6115bf6133a0565b600060096000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020604051806101200160405290816000820160009054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016007820160149054906101000a900460ff1660048111156117c2576117c1613844565b5b60048111156117d4576117d3613844565b5b81525050905080915050919050565b620186a081565b6117f26131fe565b600060096000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002090506001600481111561185b5761185a613844565b5b8160070160149054906101000a900460ff16600481111561187f5761187e613844565b5b146118d55760018160070160149054906101000a900460ff166040517f1e8a8fcc0000000000000000000000000000000000000000000000000000000081526004016118cc929190613eef565b60405180910390fd5b6000816006015490506000620186a0600254836118f291906140bd565b6118fc919061412e565b90506000818361190c9190613fb3565b905060008460070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016119719190613ca7565b602060405180830381865afa15801561198e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b29190614067565b1015611a7057818173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016119f29190613ca7565b602060405180830381865afa158015611a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a339190614067565b6040517faa1f42bd000000000000000000000000000000000000000000000000000000008152600401611a67929190614094565b60405180910390fd5b60028560070160146101000a81548160ff02191690836004811115611a9857611a97613844565b5b021790555060008173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b8152600401611afe929190613fe7565b6020604051808303816000875af1158015611b1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b419190614025565b905080611b7a576040517f0f9310f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611ba0612891565b876040518363ffffffff1660e01b8152600401611bbe929190613fe7565b6020604051808303816000875af1158015611bdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c019190614025565b905080611c3a576040517f0f9310f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd7d080f34f62be028407df1c24ad247902199ace5d02d8faa13f5636809d0c7c88604051611c69919061416e565b60405180910390a150505050505050611c80613244565b50565b611c8b6131fe565b6000600c6000867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020905060006002811115611cf457611cf3613844565b5b8160030160009054906101000a900460ff166002811115611d1857611d17613844565b5b14611d6e5760008160030160009054906101000a900460ff166040517f8ec0724d000000000000000000000000000000000000000000000000000000008152600401611d65929190614198565b60405180910390fd5b60016002811115611d8257611d81613844565b5b826002811115611d9557611d94613844565b5b14158015611dc75750600280811115611db157611db0613844565b5b826002811115611dc457611dc3613844565b5b14155b15611e0c576001826040517f8ec0724d000000000000000000000000000000000000000000000000000000008152600401611e03929190614198565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168160000160049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e95576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081600201549050848260010181905550838260020181905550828260030160006101000a81548160ff02191690836002811115611ed757611ed6613844565b5b021790555060008260030160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905084821115611ff75760008173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8560000160049054906101000a900473ffffffffffffffffffffffffffffffffffffffff168886611f5c9190613fb3565b6040518363ffffffff1660e01b8152600401611f79929190613fe7565b6020604051808303816000875af1158015611f98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fbc9190614025565b905080611ff5576040517f0f9310f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b6001600281111561200b5761200a613844565b5b84600281111561201e5761201d613844565b5b148061204d575060028081111561203857612037613844565b5b84600281111561204b5761204a613844565b5b145b156121145760008173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612078612891565b886040518363ffffffff1660e01b8152600401612096929190613fe7565b6020604051808303816000875af11580156120b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d99190614025565b905080612112576040517f0f9310f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f6afe0fd04f185e7f09df6e88a6f3103039737a771bf3a18894adf003ddf023b8336040516121639190613ca7565b60405180910390a2505050612176613244565b50505050565b61218461324d565b61218e60006132d4565b565b61219861345f565b6000600c6000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000206040518060c00160405290816000820160009054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020016000820160049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1660028111156122da576122d9613844565b5b60028111156122ec576122eb613844565b5b81526020016003820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905080915050919050565b6060600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561241e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116123cb5790505b50505050509050919050565b61243261324d565b61243a6131fe565b6000600c6000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000209050600060028111156124a3576124a2613844565b5b8160030160009054906101000a900460ff1660028111156124c7576124c6613844565b5b1461251d5760008160030160009054906101000a900460ff166040517f8ec0724d000000000000000000000000000000000000000000000000000000008152600401612514929190614198565b60405180910390fd5b8161252957600261252c565b60015b8160030160006101000a81548160ff0219169083600281111561255257612551613844565b5b021790555060008160030160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6125a6612891565b85600201546040518363ffffffff1660e01b81526004016125c8929190613fe7565b6020604051808303816000875af11580156125e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260b9190614025565b905080612644576040517f0f9310f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f4782026ec4d9bd3ad4cc05008835c34c247c4725295e3e8057e80f5f8cc8d89733866040516126959291906141c1565b60405180910390a25050506126a8613244565b5050565b6060600780548060200260200160405190810160405280929190818152602001828054801561273c57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116126e95790505b5050505050905090565b61274e61324d565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016127899190613ca7565b602060405180830381865afa1580156127a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ca9190614067565b905060008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6127f2612891565b846040518363ffffffff1660e01b8152600401612810929190613fe7565b6020604051808303816000875af115801561282f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128539190614025565b90508061288c576040517f0f9310f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60046020528060005260406000206000915090505481565b6128da61324d565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060005b600580549050811015612ab8578173ffffffffffffffffffffffffffffffffffffffff166005828154811061296d5761296c6141ea565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612aab57600560016005805490506129c79190613fb3565b815481106129d8576129d76141ea565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660058281548110612a1757612a166141ea565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005805480612a7157612a70614219565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055612ab8565b8080600101915050612935565b5050565b612ac461324d565b60004790506000612ad3612891565b73ffffffffffffffffffffffffffffffffffffffff1682604051612af690614279565b60006040518083038185875af1925050503d8060008114612b33576040519150601f19603f3d011682016040523d82523d6000602084013e612b38565b606091505b5050905080612b73576040517f0f9310f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6060600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015612c4457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612bf15790505b50505050509050919050565b6060600a805480602002602001604051908101604052809291908181526020018280548015612ce057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612c8d5790505b5050505050905090565b60025481565b612cf86131fe565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7b90613dc9565b60405180910390fd5b60003342604051602001612d999291906142da565b60405160208183030381529060405280519060200120905060006040518060c00160405280837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200186815260200185815260200160006002811115612e1f57612e1e613844565b5b81526020018473ffffffffffffffffffffffffffffffffffffffff16815250905080600c6000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908360e01c021790555060208201518160000160046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600101556060820151816002015560808201518160030160006101000a81548160ff02191690836002811115612f3c57612f3b613844565b5b021790555060a08201518160030160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050600a8290806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c0217905550600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208290806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c0217905550817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167fc04dc2cffed0e5a9833410e08d9cffa80dfb6598827d4ee752c73bd74c4052e733866040516130af929190613fe7565b60405180910390a250506130c1613244565b505050565b600581815481106130d657600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b61312d61324d565b60006002549050816002819055507fd8e832f816c1cbad9f319fc8017ca9d81476c84945de3610a3cf813538f73751818360405161316c929190614094565b60405180910390a15050565b61318061324d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036131f25760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016131e99190613ca7565b60405180910390fd5b6131fb816132d4565b50565b60026001540361323a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b60018081905550565b613255613398565b73ffffffffffffffffffffffffffffffffffffffff16613273612891565b73ffffffffffffffffffffffffffffffffffffffff16146132d257613296613398565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016132c99190613ca7565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b60405180610120016040528060007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000600481111561345957613458613844565b5b81525090565b6040518060c0016040528060007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600060028111156134cf576134ce613844565b5b8152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613522826134f7565b9050919050565b61353281613517565b811461353d57600080fd5b50565b60008135905061354f81613529565b92915050565b6000819050919050565b61356881613555565b811461357357600080fd5b50565b6000813590506135858161355f565b92915050565b600080600080600060a086880312156135a7576135a66134f2565b5b60006135b588828901613540565b95505060206135c688828901613576565b94505060406135d788828901613576565b93505060606135e888828901613576565b92505060806135f988828901613540565b9150509295509295909350565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61363b81613517565b82525050565b600061364d8383613632565b60208301905092915050565b6000602082019050919050565b600061367182613606565b61367b8185613611565b935061368683613622565b8060005b838110156136b757815161369e8882613641565b97506136a983613659565b92505060018101905061368a565b5085935050505092915050565b600060208201905081810360008301526136de8184613666565b905092915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61371b816136e6565b811461372657600080fd5b50565b60008135905061373881613712565b92915050565b600060208284031215613754576137536134f2565b5b600061376284828501613729565b91505092915050565b60008060408385031215613782576137816134f2565b5b600061379085828601613540565b92505060206137a185828601613576565b9150509250929050565b600080600080600060a086880312156137c7576137c66134f2565b5b60006137d588828901613729565b95505060206137e688828901613540565b94505060406137f788828901613576565b935050606061380888828901613576565b925050608061381988828901613576565b9150509295509295909350565b61382f816136e6565b82525050565b61383e81613555565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6005811061388457613883613844565b5b50565b600081905061389582613873565b919050565b60006138a582613887565b9050919050565b6138b58161389a565b82525050565b610120820160008201516138d26000850182613826565b5060208201516138e56020850182613835565b5060408201516138f86040850182613632565b50606082015161390b6060850182613632565b50608082015161391e6080850182613835565b5060a082015161393160a0850182613835565b5060c082015161394460c0850182613835565b5060e082015161395760e0850182613632565b5061010082015161396c6101008501826138ac565b50505050565b60006101208201905061398860008301846138bb565b92915050565b61399781613555565b82525050565b60006020820190506139b2600083018461398e565b92915050565b600381106139c557600080fd5b50565b6000813590506139d7816139b8565b92915050565b600080600080608085870312156139f7576139f66134f2565b5b6000613a0587828801613729565b9450506020613a1687828801613576565b9350506040613a2787828801613576565b9250506060613a38878288016139c8565b91505092959194509250565b60038110613a5557613a54613844565b5b50565b6000819050613a6682613a44565b919050565b6000613a7682613a58565b9050919050565b613a8681613a6b565b82525050565b60c082016000820151613aa26000850182613826565b506020820151613ab56020850182613632565b506040820151613ac86040850182613835565b506060820151613adb6060850182613835565b506080820151613aee6080850182613a7d565b5060a0820151613b0160a0850182613632565b50505050565b600060c082019050613b1c6000830184613a8c565b92915050565b600060208284031215613b3857613b376134f2565b5b6000613b4684828501613540565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000613b878383613826565b60208301905092915050565b6000602082019050919050565b6000613bab82613b4f565b613bb58185613b5a565b9350613bc083613b6b565b8060005b83811015613bf1578151613bd88882613b7b565b9750613be383613b93565b925050600181019050613bc4565b5085935050505092915050565b60006020820190508181036000830152613c188184613ba0565b905092915050565b60008115159050919050565b613c3581613c20565b8114613c4057600080fd5b50565b600081359050613c5281613c2c565b92915050565b60008060408385031215613c6f57613c6e6134f2565b5b6000613c7d85828601613729565b9250506020613c8e85828601613c43565b9150509250929050565b613ca181613517565b82525050565b6000602082019050613cbc6000830184613c98565b92915050565b600080600060608486031215613cdb57613cda6134f2565b5b6000613ce986828701613576565b9350506020613cfa86828701613576565b9250506040613d0b86828701613540565b9150509250925092565b600060208284031215613d2b57613d2a6134f2565b5b6000613d3984828501613576565b91505092915050565b613d4b81613c20565b82525050565b6000602082019050613d666000830184613d42565b92915050565b600082825260208201905092915050565b7f546f6b656e206e6f7420616c6c6f776564000000000000000000000000000000600082015250565b6000613db3601183613d6c565b9150613dbe82613d7d565b602082019050919050565b60006020820190508181036000830152613de281613da6565b9050919050565b60008160601b9050919050565b6000613e0182613de9565b9050919050565b6000613e1382613df6565b9050919050565b613e2b613e2682613517565b613e08565b82525050565b600081905092915050565b7f4352454154455f43414d504149474e0000000000000000000000000000000000600082015250565b6000613e72600f83613e31565b9150613e7d82613e3c565b600f82019050919050565b6000819050919050565b613ea3613e9e82613555565b613e88565b82525050565b6000613eb58285613e1a565b601482019150613ec482613e65565b9150613ed08284613e92565b6020820191508190509392505050565b613ee98161389a565b82525050565b6000604082019050613f046000830185613ee0565b613f116020830184613ee0565b9392505050565b7f496e76616c6964204b4f4c206164647265737300000000000000000000000000600082015250565b6000613f4e601383613d6c565b9150613f5982613f18565b602082019050919050565b60006020820190508181036000830152613f7d81613f41565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613fbe82613555565b9150613fc983613555565b9250828203905081811115613fe157613fe0613f84565b5b92915050565b6000604082019050613ffc6000830185613c98565b614009602083018461398e565b9392505050565b60008151905061401f81613c2c565b92915050565b60006020828403121561403b5761403a6134f2565b5b600061404984828501614010565b91505092915050565b6000815190506140618161355f565b92915050565b60006020828403121561407d5761407c6134f2565b5b600061408b84828501614052565b91505092915050565b60006040820190506140a9600083018561398e565b6140b6602083018461398e565b9392505050565b60006140c882613555565b91506140d383613555565b92508282026140e181613555565b915082820484148315176140f8576140f7613f84565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061413982613555565b915061414483613555565b925082614154576141536140ff565b5b828204905092915050565b614168816136e6565b82525050565b6000602082019050614183600083018461415f565b92915050565b61419281613a6b565b82525050565b60006040820190506141ad6000830185614189565b6141ba6020830184614189565b9392505050565b60006040820190506141d66000830185613c98565b6141e36020830184613d42565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081905092915050565b50565b6000614263600083614248565b915061426e82614253565b600082019050919050565b600061428482614256565b9150819050919050565b7f4352454154455f4f50454e5f43414d504149474e000000000000000000000000600082015250565b60006142c4601483613e31565b91506142cf8261428e565b601482019050919050565b60006142e68285613e1a565b6014820191506142f5826142b7565b91506143018284613e92565b602082019150819050939250505056fea2646970667358221220dd4beb77268377310a88dcc9546d7a5cea426b0ac261f406dd24c9f8bc2ee65e64736f6c634300081a0033