1.7k txs
1.6k calls
constructor
constructor(address triviToken, address backendService_, address stackWallet_)
functions
allTimeHighScore
viewfunction allTimeHighScore() view returns (address player, uint256 score, uint256 timestamp)
availableBalanceOf
viewfunction availableBalanceOf(address player) view returns (uint256)
averageTimes100
viewfunction averageTimes100() view returns (uint256)
backendService
viewfunction backendService() view returns (address)
beat100MultiplierBps
viewfunction beat100MultiplierBps() view returns (uint256)
beat10MultiplierBps
viewfunction beat10MultiplierBps() view returns (uint256)
beat50MultiplierBps
viewfunction beat50MultiplierBps() view returns (uint256)
BPS
viewfunction BPS() view returns (uint256)
calculatePotentialPayouts
viewfunction calculatePotentialPayouts(uint256 entryFee) view returns (uint256 payout10, uint256 payout50, uint256 payout100)
canAfford
viewfunction canAfford(address player, uint256 cost) view returns (bool)
CBBTC_TOKEN
viewfunction CBBTC_TOKEN() view returns (address)
cbbtcTestAmount
viewfunction cbbtcTestAmount() view returns (uint256)
deadlineWindow
viewfunction deadlineWindow() view returns (uint256)
ethTestAmount
viewfunction ethTestAmount() view returns (uint256)
getCurrentAverage
viewfunction getCurrentAverage() view returns (uint256 averageTimes100_)
getDepositQuotes
viewfunction getDepositQuotes(uint256 triviAmount) view returns (uint256 ethRequired, uint256 usdcRequired, uint256 cbbtcRequired)
getHighScoreInfo
viewfunction getHighScoreInfo() view returns (address currentHolder, uint256 currentScore, uint256 currentPrizePool, uint256 timestamp)
getPayoutMultipliers
viewfunction getPayoutMultipliers() view returns (uint256 beat10MultiplierBps_, uint256 beat50MultiplierBps_, uint256 beat100MultiplierBps_)
highScoreFeeBps
viewfunction highScoreFeeBps() view returns (uint256)
highScorePool
viewfunction highScorePool() view returns (uint256)
isSessionActive
viewfunction isSessionActive(address player) view returns (bool)
maxRoundsForStakeUnit
viewfunction maxRoundsForStakeUnit(address player, uint256 stakeUnit) view returns (uint256)
owner
viewfunction owner() view returns (address)
playerDeposits
viewfunction playerDeposits(address) view returns (uint256)
quoteBufferBps
viewfunction quoteBufferBps() view returns (uint256)
stackWallet
viewfunction stackWallet() view returns (address)
TRIVI
viewfunction TRIVI() view returns (address)
UNISWAP_ROUTER
viewfunction UNISWAP_ROUTER() view returns (address)
USDC_TOKEN
viewfunction USDC_TOKEN() view returns (address)
usdcTestAmount
viewfunction usdcTestAmount() view returns (uint256)
usedSessionIds
viewfunction usedSessionIds(bytes32) view returns (bool)
VIRTUAL_HOP
viewfunction VIRTUAL_HOP() view returns (address)
WETH_TOKEN
viewfunction WETH_TOKEN() view returns (address)
backendSettleAndWithdraw
nonpayablefunction backendSettleAndWithdraw(address player, bytes32 sessionId, int256 netTrivi, uint256 amount)
backendSettleAndWithdrawAll
nonpayablefunction backendSettleAndWithdrawAll(address player, bytes32 sessionId, int256 netTrivi)
backendWithdrawFor
nonpayablefunction backendWithdrawFor(address player, uint256 amount)
deposit
nonpayablefunction deposit(uint256 amount)
depositWithCBBTC
nonpayablefunction depositWithCBBTC(uint256 cbbtcAmount, uint256 minTriviOut)
depositWithETH
payablefunction depositWithETH(uint256 minTriviOut) payable
depositWithPermit
nonpayablefunction depositWithPermit(uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
depositWithUSDC
nonpayablefunction depositWithUSDC(uint256 usdcAmount, uint256 minTriviOut)
processGameEntry
nonpayablefunction processGameEntry(address player, uint256 entryFee) returns (uint256 highScoreContribution)
rescueETH
nonpayablefunction rescueETH(uint256 amount)
rescueToken
nonpayablefunction rescueToken(address token, uint256 amount)
seedHighScorePool
nonpayablefunction seedHighScorePool(uint256 amount)
setAverageTimes100
nonpayablefunction setAverageTimes100(uint256 newAvgTimes100)
setBackendService
nonpayablefunction setBackendService(address newService)
setHighScoreFee
nonpayablefunction setHighScoreFee(uint256 newFeeBps)
setPayoutMultipliers
nonpayablefunction setPayoutMultipliers(uint256 newBeat10MultiplierBps, uint256 newBeat50MultiplierBps, uint256 newBeat100MultiplierBps)
setQuoteConfig
nonpayablefunction setQuoteConfig(uint256 newBufferBps, uint256 newEthTestAmount, uint256 newUsdcTestAmount, uint256 newCbbtcTestAmount, uint256 newDeadlineWindow)
setStackWallet
nonpayablefunction setStackWallet(address newWallet)
settleSession
nonpayablefunction settleSession(address player, bytes32 sessionId, int256 netTrivi)
settleSessionWithScore
nonpayablefunction settleSessionWithScore(address player, bytes32 sessionId, int256 netTrivi, uint256 score)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdraw
nonpayablefunction withdraw(uint256 amount)
withdrawAll
nonpayablefunction withdrawAll()
events
AverageUpdated
event AverageUpdated(uint256 newAverageTimes100)
BackendServiceUpdated
event BackendServiceUpdated(address indexed newService)
Deposited
event Deposited(address indexed player, uint256 triviAmount)
DepositedWithCBBTC
event DepositedWithCBBTC(address indexed player, uint256 cbbtcIn, uint256 triviOut)
DepositedWithETH
event DepositedWithETH(address indexed player, uint256 ethIn, uint256 triviOut)
DepositedWithUSDC
event DepositedWithUSDC(address indexed player, uint256 usdcIn, uint256 triviOut)
GamePlayed
event GamePlayed(address indexed player, uint256 entryFee, uint256 score, uint256 highScoreContribution)
HighScoreFeeUpdated
event HighScoreFeeUpdated(uint256 newFeeBps)
NewHighScore
event NewHighScore(address indexed player, uint256 score, uint256 prizeWon)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PayoutMultipliersUpdated
event PayoutMultipliersUpdated(uint256 beat10Bps, uint256 beat50Bps, uint256 beat100Bps)
QuoteConfigUpdated
event QuoteConfigUpdated(uint256 bufferBps, uint256 ethAmt, uint256 usdcAmt, uint256 cbbtcAmt, uint256 deadlineWindow)
SessionSettled
event SessionSettled(bytes32 indexed sessionId, address indexed player, int256 netTrivi)
StackWalletUpdated
event StackWalletUpdated(address indexed newWallet)
Withdrawn
event Withdrawn(address indexed player, uint256 triviAmount)
errors
No errors.
creation bytecode
0x60a06040526001805560c8600a55610348600b55612af8600c55613a98600d55614e20600e5561012c600f5566038d7ea4c68000601055620f4240601155620186a060125561012c6013553480156200005757600080fd5b50604051620040c6380380620040c68339810160408190526200007a9162000338565b6200008533620002cb565b6001600160a01b038316620000cb5760405162461bcd60e51b8152602060048201526007602482015266054524956493d360cc1b60448201526064015b60405180910390fd5b6001600160a01b0382166200010f5760405162461bcd60e51b815260206004820152600960248201526806261636b656e643d360bc1b6044820152606401620000c2565b6001600160a01b038116620001525760405162461bcd60e51b8152602060048201526008602482015267077616c6c65743d360c41b6044820152606401620000c2565b6001600160a01b03838116608052600280546001600160a01b03199081168584161790915560038054909116918316919091179055604080516315ab88c960e31b8152905173420000000000000000000000000000000000000691734752ba5dbc23f44d87826276bf6fd6b1c372ad249163ad5c4648916004808201926020929091908290030181865afa158015620001ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000215919062000382565b6001600160a01b0316146200025a5760405162461bcd60e51b815260206004820152600a6024820152690aee4dedcce40ae8aa8960b31b6044820152606401620000c2565b6040516001600160a01b038316907f9f99ccbf9dfb68ba99dd44d1015d639e6d3fbe55f3faa3fa6f58e3d0bd908bdd90600090a26040516001600160a01b038216907ff5d92ae781b9ed8ca05c74050fecadc8786921971dc1add0f1789126754b505d90600090a2505050620003a7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200033357600080fd5b919050565b6000806000606084860312156200034e57600080fd5b62000359846200031b565b925062000369602085016200031b565b915062000379604085016200031b565b90509250925092565b6000602082840312156200039557600080fd5b620003a0826200031b565b9392505050565b608051613c776200044f600039600081816109c701528181610dce015281816110040152818161108b015281816110dd01528181611460015281816114d1015281816116e3015281816118d701528181611dcf01528181611e62015281816120510152818161213c0152818161244d015281816125520152818161297d01528181612b5a01528181612db101528181612f13015281816130f601526132cf0152613c776000f3fe60806040526004361061036f5760003560e01c8063a6dea779116101c6578063d4863100116100f7578063e32b259211610095578063fd2ae5901161006f578063fd2ae59014610abe578063ff5b401014610ad4578063ffd42e2114610aea578063fff8ce0f14610b0057600080fd5b8063e32b259214610a56578063f2fde38b14610a76578063fa56927414610a9657600080fd5b8063dba59711116100d1578063dba59711146109b5578063dc721790146109e9578063df6ffa8714610a09578063e012116f14610a3657600080fd5b8063d486310014610958578063d722efa01461096d578063d82649201461098d57600080fd5b8063b30d613611610164578063c28399ef1161013e578063c28399ef146108d1578063c3640482146108e7578063cac097f114610907578063d2b11b1f1461091d57600080fd5b8063b30d613614610871578063b6b55f2514610891578063c0b61261146108b157600080fd5b8063ac5d0f3c116101a0578063ac5d0f3c146107e9578063b188372b14610811578063b1eb1e5614610831578063b2aef1ab1461085157600080fd5b8063a6dea77914610788578063a7ccc7631461079b578063aa307ca3146107d357600080fd5b80634a970be7116102a05780637b3c3fb41161023e57806396b0ef871161021857806396b0ef87146106e55780639a8af39c146107055780639caf6f40146107485780639e252f001461076857600080fd5b80637b3c3fb41461068a578063853828b6146106b25780638da5cb5b146106c757600080fd5b8063572ca42e1161027a578063572ca42e1461061e5780635e046919146106345780636666f9711461064a5780636e07af0e1461066a57600080fd5b80634a970be7146105c857806353b1cede146105e857806356463e5e146105fe57600080fd5b806325d998bb1161030d57806333f3d628116102e757806333f3d62814610508578063342cd1b81461052857806337d277d4146105485780633f2c2ec51461057b57600080fd5b806325d998bb146104925780632a78077a146104c85780632e1a7d4d146104e857600080fd5b80631a8fb38e116103495780631a8fb38e146103fa5780631ab493821461041c5780631c8b14a01461043c578063249d39e91461047c57600080fd5b80630fa2e23c1461037b5780631187833a146103bb5780631a72b2fb146103df57600080fd5b3661037657005b600080fd5b34801561038757600080fd5b5061039b610396366004613655565b610b16565b604080519384526020840192909252908201526060015b60405180910390f35b3480156103c757600080fd5b506103d160115481565b6040519081526020016103b2565b3480156103eb57600080fd5b50600c54600d54600e5461039b565b34801561040657600080fd5b5061041a61041536600461366e565b610ba1565b005b34801561042857600080fd5b5061041a6104373660046136c5565b610cd5565b34801561044857600080fd5b5061046c610457366004613655565b60056020526000908152604090205460ff1681565b60405190151581526020016103b2565b34801561048857600080fd5b506103d161271081565b34801561049e57600080fd5b506103d16104ad3660046136fe565b6001600160a01b031660009081526004602052604090205490565b3480156104d457600080fd5b5061041a6104e3366004613719565b610e32565b3480156104f457600080fd5b5061041a610503366004613655565b610f4e565b34801561051457600080fd5b5061041a61052336600461373b565b61105f565b34801561053457600080fd5b5061041a610543366004613765565b6111d4565b34801561055457600080fd5b506105636006602160991b0181565b6040516001600160a01b0390911681526020016103b2565b34801561058757600080fd5b506006546007546008546105a3926001600160a01b0316919083565b604080516001600160a01b0390941684526020840192909252908201526060016103b2565b3480156105d457600080fd5b5061041a6105e3366004613791565b6113dc565b3480156105f457600080fd5b506103d160095481565b34801561060a57600080fd5b506103d161061936600461373b565b61154d565b34801561062a57600080fd5b506103d1600c5481565b34801561064057600080fd5b506103d1600b5481565b34801561065657600080fd5b5061041a610665366004613655565b61158c565b34801561067657600080fd5b5061039b610685366004613655565b611633565b34801561069657600080fd5b5061056373cbb7c0000ab88b473b1f5afd9ef808440eed33bf81565b3480156106be57600080fd5b5061041a61165f565b3480156106d357600080fd5b506000546001600160a01b0316610563565b3480156106f157600080fd5b506103d161070036600461373b565b61173d565b34801561071157600080fd5b50600654600754600954600854604080516001600160a01b03909516855260208501939093529183015260608201526080016103b2565b34801561075457600080fd5b5061041a610763366004613655565b611958565b34801561077457600080fd5b5061041a610783366004613655565b611a07565b61041a610796366004613655565b611ac8565b3480156107a757600080fd5b5061046c6107b63660046136fe565b6001600160a01b0316600090815260046020526040902054151590565b3480156107df57600080fd5b506103d160105481565b3480156107f557600080fd5b50610563730b3e328455c4059eeb9e3f84b5543f74e24e7e1b81565b34801561081d57600080fd5b5061041a61082c366004613719565b611bb5565b34801561083d57600080fd5b5061041a61084c3660046136fe565b611cc3565b34801561085d57600080fd5b50600354610563906001600160a01b031681565b34801561087d57600080fd5b5061041a61088c366004613655565b611d78565b34801561089d57600080fd5b5061041a6108ac366004613655565b611e11565b3480156108bd57600080fd5b5061041a6108cc3660046137e0565b611ece565b3480156108dd57600080fd5b506103d160135481565b3480156108f357600080fd5b5061041a61090236600461373b565b611f35565b34801561091357600080fd5b506103d1600d5481565b34801561092957600080fd5b5061046c61093836600461373b565b6001600160a01b0391909116600090815260046020526040902054101590565b34801561096457600080fd5b50600b546103d1565b34801561097957600080fd5b5061041a6109883660046137e0565b6120a1565b34801561099957600080fd5b50610563734752ba5dbc23f44d87826276bf6fd6b1c372ad2481565b3480156109c157600080fd5b506105637f000000000000000000000000000000000000000000000000000000000000000081565b3480156109f557600080fd5b50600254610563906001600160a01b031681565b348015610a1557600080fd5b506103d1610a243660046136fe565b60046020526000908152604090205481565b348015610a4257600080fd5b5061041a610a513660046136fe565b61219f565b348015610a6257600080fd5b5061041a610a713660046136c5565b612255565b348015610a8257600080fd5b5061041a610a913660046136fe565b6125cf565b348015610aa257600080fd5b5061056373833589fcd6edb6e08f4c7c32d4f71b54bda0291381565b348015610aca57600080fd5b506103d1600f5481565b348015610ae057600080fd5b506103d1600a5481565b348015610af657600080fd5b506103d160125481565b348015610b0c57600080fd5b506103d1600e5481565b600080600080612710600a5486610b2d9190613829565b610b379190613840565b610b419086613862565b9050612710600c5482610b549190613829565b610b5e9190613840565b9350612710600d5482610b719190613829565b610b7b9190613840565b9250612710600e5482610b8e9190613829565b610b989190613840565b93959294505050565b6000546001600160a01b03163314610bd45760405162461bcd60e51b8152600401610bcb90613875565b60405180910390fd5b6107d0851115610c185760405162461bcd60e51b815260206004820152600f60248201526e0c4eacccccae440e8dede40d0d2ced608b1b6044820152606401610bcb565b603c8110158015610c2b5750610e108111155b610c665760405162461bcd60e51b815260206004820152600c60248201526b191958591b1a5b994818985960a21b6044820152606401610bcb565b600f8590556010849055601183905560128290556013819055604080518681526020810186905290810184905260608101839052608081018290527f27db43905cffcc0287a550fb6825869a1fb3aea9b976161c39f72b3f48a244029060a00160405180910390a15050505050565b6002546001600160a01b03163314610cff5760405162461bcd60e51b8152600401610bcb906138aa565b600260015403610d215760405162461bcd60e51b8152600401610bcb906138d0565b6002600155610d31848484611ece565b6001600160a01b038416600090815260046020526040812054906000198314610d5a5782610d5c565b815b905080821015610da15760405162461bcd60e51b815260206004820152601060248201526f77697468647261773e62616c616e636560801b6044820152606401610bcb565b610dab8183613862565b6001600160a01b03808816600090815260046020526040902091909155610df5907f0000000000000000000000000000000000000000000000000000000000000000168783612653565b856001600160a01b0316600080516020613c2283398151915282604051610e1e91815260200190565b60405180910390a250506001805550505050565b600260015403610e545760405162461bcd60e51b8152600401610bcb906138d0565b600260015581610e915760405162461bcd60e51b81526020600482015260086024820152676e6f20636242544360c01b6044820152606401610bcb565b610eb173cbb7c0000ab88b473b1f5afd9ef808440eed33bf333085612751565b6000610ebd8383612858565b33600090815260046020526040812080549293508392909190610ee19084906138f9565b90915550506040518181523390600080516020613c028339815191529060200160405180910390a2604080518481526020810183905233917f26d028361899b05fbede5e60e9b5a3f55e71f6b9e275128232e8eb6fbc86852e91015b60405180910390a250506001805550565b600260015403610f705760405162461bcd60e51b8152600401610bcb906138d0565b600260015580610f925760405162461bcd60e51b8152600401610bcb9061390c565b3360009081526004602052604090205481811015610fe15760405162461bcd60e51b815260206004820152600c60248201526b1a5b9cdd59999a58da595b9d60a21b6044820152606401610bcb565b610feb8282613862565b33600081815260046020526040902091909155611033907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169084612653565b6040518281523390600080516020613c22833981519152906020015b60405180910390a2505060018055565b6000546001600160a01b031633146110895760405162461bcd60e51b8152600401610bcb90613875565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614158061115e57506009546040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561112c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611150919061392e565b61115a9190613862565b8111155b6111aa5760405162461bcd60e51b815260206004820152601d60248201527f43616e6e6f742072657363756520686967682073636f726520706f6f6c0000006044820152606401610bcb565b6111d06111bf6000546001600160a01b031690565b6001600160a01b0384169083612653565b5050565b6000546001600160a01b031633146111fe5760405162461bcd60e51b8152600401610bcb90613875565b612710831015801561121257506175308311155b6112545760405162461bcd60e51b8152602060048201526013602482015272626561743130206f7574206f662072616e676560681b6044820152606401610bcb565b6127108210158015611268575061c3508211155b6112aa5760405162461bcd60e51b8152602060048201526013602482015272626561743530206f7574206f662072616e676560681b6044820152606401610bcb565b61271081101580156112bf5750620186a08111155b6113025760405162461bcd60e51b815260206004820152601460248201527362656174313030206f7574206f662072616e676560601b6044820152606401610bcb565b818311156113445760405162461bcd60e51b815260206004820152600f60248201526e0626561743130203e2062656174353608c1b6044820152606401610bcb565b808211156113875760405162461bcd60e51b815260206004820152601060248201526f0626561743530203e20626561743130360841b6044820152606401610bcb565b600c839055600d829055600e81905560408051848152602081018490529081018290527f92139a4b278278c3254bde0d23c5a49b820a817cccfc14f90610a2374ec99a269060600160405180910390a1505050565b6002600154036113fe5760405162461bcd60e51b8152600401610bcb906138d0565b6002600155846114205760405162461bcd60e51b8152600401610bcb9061390c565b60405163d505accf60e01b8152336004820152306024820152604481018690526064810185905260ff8416608482015260a4810183905260c481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d505accf9060e401600060405180830381600087803b1580156114ac57600080fd5b505af11580156114c0573d6000803e3d6000fd5b506114fb9250506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169050333088612751565b336000908152600460205260408120805487929061151a9084906138f9565b90915550506040518581523390600080516020613c028339815191529060200160405180910390a2505060018055505050565b60008160000361155f57506000611586565b6001600160a01b038316600090815260046020526040902054611583908390613840565b90505b92915050565b6000546001600160a01b031633146115b65760405162461bcd60e51b8152600401610bcb90613875565b6103e88111156115f75760405162461bcd60e51b815260206004820152600c60248201526b0cccaca40e8dede40d0d2ced60a31b6044820152606401610bcb565b600a8190556040518181527fe99addfc987914d66a860dbe9745c371c7e376068551fb70c571c3b77537f47e906020015b60405180910390a150565b600080600061164184612aa0565b925061164c84612cea565b915061165784612e11565b929491935050565b6002600154036116815760405162461bcd60e51b8152600401610bcb906138d0565b600260015533600090815260046020526040902054806116cd5760405162461bcd60e51b81526020600482015260076024820152666e6f7468696e6760c81b6044820152606401610bcb565b33600081815260046020526040812055611712907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169083612653565b6040518181523390600080516020613c22833981519152906020015b60405180910390a25060018055565b6002546000906001600160a01b0316331461176a5760405162461bcd60e51b8152600401610bcb906138aa565b60026001540361178c5760405162461bcd60e51b8152600401610bcb906138d0565b60026001556001600160a01b0383166117b75760405162461bcd60e51b8152600401610bcb90613947565b600082116117f45760405162461bcd60e51b815260206004820152600a6024820152690656e7472794665653d360b41b6044820152606401610bcb565b6001600160a01b038316600090815260046020526040902054828110156118545760405162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b6044820152606401610bcb565b61185e8382613862565b6001600160a01b038516600090815260046020526040902055600a54612710906118889085613829565b6118929190613840565b915081156118b25781600960008282546118ac91906138f9565b90915550505b60006118be8385613862565b9050801561190057600354611900906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911683612653565b60408051858152600060208201529081018490526001600160a01b038616907fa99b776cf5025c68da32d25f20ab3b86fc3e832ba6976f31b879627dcfdd448e9060600160405180910390a250506001805592915050565b6000546001600160a01b031633146119825760405162461bcd60e51b8152600401610bcb90613875565b600081118015611993575061271081105b6119d25760405162461bcd60e51b815260206004820152601060248201526f617667206f7574206f662072616e676560801b6044820152606401610bcb565b600b8190556040518181527f64c3a8413a126da2654f103740ff6ceacdb790ffca76cee741e37be10f5d4f6990602001611628565b6000546001600160a01b03163314611a315760405162461bcd60e51b8152600401610bcb90613875565b600080546040516001600160a01b039091169083908381818185875af1925050503d8060008114611a7e576040519150601f19603f3d011682016040523d82523d6000602084013e611a83565b606091505b50509050806111d05760405162461bcd60e51b81526020600482015260116024820152701c995cd8dd59481155120819985a5b1959607a1b6044820152606401610bcb565b600260015403611aea5760405162461bcd60e51b8152600401610bcb906138d0565b600260015534611b255760405162461bcd60e51b81526020600482015260066024820152650dcde408aa8960d31b6044820152606401610bcb565b6000611b31348361304b565b33600090815260046020526040812080549293508392909190611b559084906138f9565b90915550506040518181523390600080516020613c028339815191529060200160405180910390a2604080513481526020810183905233917fd2cd36ed07b964a71e5efddcc8ad2e90bac9a88531c794d3e13b3663d6197417910161104f565b600260015403611bd75760405162461bcd60e51b8152600401610bcb906138d0565b600260015581611c135760405162461bcd60e51b81526020600482015260076024820152666e6f205553444360c81b6044820152606401610bcb565b611c3373833589fcd6edb6e08f4c7c32d4f71b54bda02913333085612751565b6000611c3f83836131e5565b33600090815260046020526040812080549293508392909190611c639084906138f9565b90915550506040518181523390600080516020613c028339815191529060200160405180910390a2604080518481526020810183905233917fc9d0bc1836f133ad7f933da4f34d85821339243065934b25dd3741c099dffd429101610f3d565b6000546001600160a01b03163314611ced5760405162461bcd60e51b8152600401610bcb90613875565b6001600160a01b038116611d2e5760405162461bcd60e51b8152602060048201526008602482015267077616c6c65743d360c41b6044820152606401610bcb565b600380546001600160a01b0319166001600160a01b0383169081179091556040517ff5d92ae781b9ed8ca05c74050fecadc8786921971dc1add0f1789126754b505d90600090a250565b6000546001600160a01b03163314611da25760405162461bcd60e51b8152600401610bcb90613875565b60008111611dc25760405162461bcd60e51b8152600401610bcb9061390c565b611df76001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084612751565b8060096000828254611e0991906138f9565b909155505050565b600260015403611e335760405162461bcd60e51b8152600401610bcb906138d0565b600260015580611e555760405162461bcd60e51b8152600401610bcb9061390c565b611e8a6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084612751565b3360009081526004602052604081208054839290611ea99084906138f9565b90915550506040518181523390600080516020613c028339815191529060200161172e565b6002546001600160a01b03163314611ef85760405162461bcd60e51b8152600401610bcb906138aa565b600260015403611f1a5760405162461bcd60e51b8152600401610bcb906138d0565b6002600155611f2c8383836000612255565b50506001805550565b6002546001600160a01b03163314611f5f5760405162461bcd60e51b8152600401610bcb906138aa565b600260015403611f815760405162461bcd60e51b8152600401610bcb906138d0565b60026001556001600160a01b038216611fac5760405162461bcd60e51b8152600401610bcb90613947565b60008111611fcc5760405162461bcd60e51b8152600401610bcb9061390c565b6001600160a01b038216600090815260046020526040902054818110156120245760405162461bcd60e51b815260206004820152600c60248201526b1a5b9cdd59999a58da595b9d60a21b6044820152606401610bcb565b61202e8282613862565b6001600160a01b03808516600090815260046020526040902091909155612078907f0000000000000000000000000000000000000000000000000000000000000000168484612653565b826001600160a01b0316600080516020613c2283398151915283604051610f3d91815260200190565b6002546001600160a01b031633146120cb5760405162461bcd60e51b8152600401610bcb906138aa565b6002600154036120ed5760405162461bcd60e51b8152600401610bcb906138d0565b60026001556120fd838383611ece565b6001600160a01b0383166000908152600460205260409020548015612195576001600160a01b03808516600090815260046020526040812055612163907f0000000000000000000000000000000000000000000000000000000000000000168583612653565b836001600160a01b0316600080516020613c228339815191528260405161218c91815260200190565b60405180910390a25b5050600180555050565b6000546001600160a01b031633146121c95760405162461bcd60e51b8152600401610bcb90613875565b6001600160a01b03811661220b5760405162461bcd60e51b815260206004820152600960248201526806261636b656e643d360bc1b6044820152606401610bcb565b600280546001600160a01b0319166001600160a01b0383169081179091556040517f9f99ccbf9dfb68ba99dd44d1015d639e6d3fbe55f3faa3fa6f58e3d0bd908bdd90600090a250565b6002546001600160a01b0316331461227f5760405162461bcd60e51b8152600401610bcb906138aa565b6002600154036122a15760405162461bcd60e51b8152600401610bcb906138d0565b60026001556001600160a01b0384166122cc5760405162461bcd60e51b8152600401610bcb90613947565b60008381526005602052604090205460ff161561231a5760405162461bcd60e51b815260206004820152600c60248201526b1cd95cdcda5bdb881d5cd95960a21b6044820152606401610bcb565b6000838152600560205260408120805460ff1916600117905560075481908311156123c857505060098054604080516060810182526001600160a01b038816808252602080830187905242928401839052600680546001600160a01b03191683179055600787905560089290925560009094558151858152908101839052600193917fec51f1f19b3cb8ab4176d8a463cb3b7a4bb866380c5ee1c51da9577ad94db00a910160405180910390a25b8381156123dc576123d98286613969565b90505b8060000361243157866001600160a01b0316867f6df9624290ab9706cd3deef702fe4bf0afd5d4dcb46a9a4f5536550094a87996600060405161242191815260200190565b60405180910390a3505050612195565b60008113156124ab576003548190612477906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691163084612751565b6001600160a01b0388166000908152600460205260408120805483929061249f9084906138f9565b9091555061257e915050565b60006124b682613991565b6001600160a01b038916600090815260046020526040902054909150818110156125225760405162461bcd60e51b815260206004820152601b60248201527f696e73756666696369656e7420706c617965722062616c616e636500000000006044820152606401610bcb565b61252c8282613862565b6001600160a01b03808b1660009081526004602052604090209190915560035461257b917f00000000000000000000000000000000000000000000000000000000000000008116911684612653565b50505b866001600160a01b0316867f6df9624290ab9706cd3deef702fe4bf0afd5d4dcb46a9a4f5536550094a87996836040516125ba91815260200190565b60405180910390a35050505050600180555050565b6000546001600160a01b031633146125f95760405162461bcd60e51b8152600401610bcb90613875565b6001600160a01b0381166126475760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606401610bcb565b61265081613301565b50565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b1790528351808501909452601a84527f5361666545524332303a207472616e73666572206661696c65640000000000009084015290916000916126e091908716908490613351565b80519091501561274a57808060200190518101906126fe91906139ad565b61274a5760405162461bcd60e51b815260206004820152601a60248201527f5361666545524332303a207472616e73666572206661696c65640000000000006044820152606401610bcb565b5050505050565b604080516001600160a01b038581166024830152848116604483015260648083018590528351808403909101815260849092018352602080830180516001600160e01b03166323b872dd60e01b1790528351808501909452601e84527f5361666545524332303a207472616e7366657246726f6d206661696c656400009084015290916000916127e691908816908490613351565b805190915015612850578080602001905181019061280491906139ad565b6128505760405162461bcd60e51b815260206004820152601e60248201527f5361666545524332303a207472616e7366657246726f6d206661696c656400006044820152606401610bcb565b505050505050565b600061288d73cbb7c0000ab88b473b1f5afd9ef808440eed33bf734752ba5dbc23f44d87826276bf6fd6b1c372ad24856133cb565b60408051600480825260a082019092526000916020820160808036833701905050905073cbb7c0000ab88b473b1f5afd9ef808440eed33bf816000815181106128d8576128d86139ec565b60200260200101906001600160a01b031690816001600160a01b0316815250506006602160991b0181600181518110612913576129136139ec565b60200260200101906001600160a01b031690816001600160a01b031681525050730b3e328455c4059eeb9e3f84b5543f74e24e7e1b8160028151811061295b5761295b6139ec565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816003815181106129af576129af6139ec565b60200260200101906001600160a01b031690816001600160a01b0316815250506000734752ba5dbc23f44d87826276bf6fd6b1c372ad246001600160a01b03166338ed17398686853060135442612a0691906138f9565b6040518663ffffffff1660e01b8152600401612a26959493929190613a46565b6000604051808303816000875af1158015612a45573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612a6d9190810190613a82565b90508060018251612a7e9190613862565b81518110612a8e57612a8e6139ec565b60200260200101519250505092915050565b600081600003612ab257506000919050565b60408051600380825260808201909252600091602082016060803683370190505090506006602160991b0181600081518110612af057612af06139ec565b60200260200101906001600160a01b031690816001600160a01b031681525050730b3e328455c4059eeb9e3f84b5543f74e24e7e1b81600181518110612b3857612b386139ec565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600281518110612b8c57612b8c6139ec565b6001600160a01b03909216602092830291909101909101526010546000819003612bba575060009392505050565b60405163d06ca61f60e01b8152600090734752ba5dbc23f44d87826276bf6fd6b1c372ad249063d06ca61f90612bf69085908790600401613b40565b600060405180830381865afa925050508015612c3457506040513d6000823e601f3d908101601f19168201604052612c319190810190613a82565b60015b612c4357506000949350505050565b80516003141580612c6e575080600281518110612c6257612c626139ec565b60200260200101516000145b15612c7f5750600095945050505050565b80600281518110612c9257612c926139ec565b6020026020010151915050600081612caa8488613829565b612cb49190613840565b90506000612710600f54612710612ccb91906138f9565b612cd59084613829565b612cdf9190613840565b979650505050505050565b600081600003612cfc57506000919050565b604080516003808252608082019092526000916020820160608036833701905050905073833589fcd6edb6e08f4c7c32d4f71b54bda0291381600081518110612d4757612d476139ec565b60200260200101906001600160a01b031690816001600160a01b031681525050730b3e328455c4059eeb9e3f84b5543f74e24e7e1b81600181518110612d8f57612d8f6139ec565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600281518110612de357612de36139ec565b6001600160a01b03909216602092830291909101909101526011546000819003612bba575060009392505050565b600081600003612e2357506000919050565b60408051600480825260a082019092526000916020820160808036833701905050905073cbb7c0000ab88b473b1f5afd9ef808440eed33bf81600081518110612e6e57612e6e6139ec565b60200260200101906001600160a01b031690816001600160a01b0316815250506006602160991b0181600181518110612ea957612ea96139ec565b60200260200101906001600160a01b031690816001600160a01b031681525050730b3e328455c4059eeb9e3f84b5543f74e24e7e1b81600281518110612ef157612ef16139ec565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600381518110612f4557612f456139ec565b6001600160a01b03909216602092830291909101909101526012546000819003612f73575060009392505050565b60405163d06ca61f60e01b8152600090734752ba5dbc23f44d87826276bf6fd6b1c372ad249063d06ca61f90612faf9085908790600401613b40565b600060405180830381865afa925050508015612fed57506040513d6000823e601f3d908101601f19168201604052612fea9190810190613a82565b60015b612ffc57506000949350505050565b8051600414158061302757508060038151811061301b5761301b6139ec565b60200260200101516000145b156130385750600095945050505050565b80600381518110612c9257612c926139ec565b60408051600380825260808201909252600091829190602082016060803683370190505090506006602160991b018160008151811061308c5761308c6139ec565b60200260200101906001600160a01b031690816001600160a01b031681525050730b3e328455c4059eeb9e3f84b5543f74e24e7e1b816001815181106130d4576130d46139ec565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600281518110613128576131286139ec565b60200260200101906001600160a01b031690816001600160a01b0316815250506000734752ba5dbc23f44d87826276bf6fd6b1c372ad246001600160a01b0316637ff36ab5868685306013544261317f91906138f9565b6040518663ffffffff1660e01b815260040161319e9493929190613b59565b60006040518083038185885af11580156131bc573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052612a6d9190810190613a82565b600061321a73833589fcd6edb6e08f4c7c32d4f71b54bda02913734752ba5dbc23f44d87826276bf6fd6b1c372ad24856133cb565b604080516003808252608082019092526000916020820160608036833701905050905073833589fcd6edb6e08f4c7c32d4f71b54bda0291381600081518110613265576132656139ec565b60200260200101906001600160a01b031690816001600160a01b031681525050730b3e328455c4059eeb9e3f84b5543f74e24e7e1b816001815181106132ad576132ad6139ec565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816002815181106129af576129af6139ec565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6060600080856001600160a01b03168560405161336e9190613bb2565b6000604051808303816000865af19150503d80600081146133ab576040519150601f19603f3d011682016040523d82523d6000602084013e6133b0565b606091505b50915091506133c1868383876135b4565b9695505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b179052915190916000918291871690613429908590613bb2565b6000604051808303816000865af19150503d8060008114613466576040519150601f19603f3d011682016040523d82523d6000602084013e61346b565b606091505b509150915081801561349557508051158061349557508080602001905181019061349591906139ad565b61285057604080516001600160a01b03878116602483015260006044808401919091528351808403909101815260649092018352602080830180516001600160e01b031663095ea7b360e01b1790528351808501909452601f84527f5361666545524332303a20726573657420617070726f7665206661696c65640090840152613523929089169190613351565b50604080516001600160a01b03878116602483015260448083018890528351808403909101815260649092018352602080830180516001600160e01b031663095ea7b360e01b1790528351808501909452601c84527f5361666545524332303a2072652d617070726f7665206661696c656400000000908401526135ab929089169190613351565b50505050505050565b6060831561362357825160000361361c576001600160a01b0385163b61361c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bcb565b508161364d565b8251156136335782518084602001fd5b8160405162461bcd60e51b8152600401610bcb9190613bce565b949350505050565b60006020828403121561366757600080fd5b5035919050565b600080600080600060a0868803121561368657600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b80356001600160a01b03811681146136c057600080fd5b919050565b600080600080608085870312156136db57600080fd5b6136e4856136a9565b966020860135965060408601359560600135945092505050565b60006020828403121561371057600080fd5b611583826136a9565b6000806040838503121561372c57600080fd5b50508035926020909101359150565b6000806040838503121561374e57600080fd5b613757836136a9565b946020939093013593505050565b60008060006060848603121561377a57600080fd5b505081359360208301359350604090920135919050565b600080600080600060a086880312156137a957600080fd5b8535945060208601359350604086013560ff811681146137c857600080fd5b94979396509394606081013594506080013592915050565b6000806000606084860312156137f557600080fd5b6137fe846136a9565b95602085013595506040909401359392505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761158657611586613813565b60008261385d57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561158657611586613813565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600c908201526b13db9b1e48189858dad95b9960a21b604082015260600190565b6020808252600f908201526e1499595b9d1c985b98de51dd585c99608a1b604082015260600190565b8082018082111561158657611586613813565b6020808252600890820152670616d6f756e743d360c41b604082015260600190565b60006020828403121561394057600080fd5b5051919050565b6020808252600890820152670706c617965723d360c41b604082015260600190565b808201828112600083128015821682158216171561398957613989613813565b505092915050565b6000600160ff1b82016139a6576139a6613813565b5060000390565b6000602082840312156139bf57600080fd5b815180151581146139cf57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015613a3b5781516001600160a01b031687529582019590820190600101613a16565b509495945050505050565b85815284602082015260a060408201526000613a6560a0830186613a02565b6001600160a01b0394909416606083015250608001529392505050565b60006020808385031215613a9557600080fd5b825167ffffffffffffffff80821115613aad57600080fd5b818501915085601f830112613ac157600080fd5b815181811115613ad357613ad36139d6565b8060051b604051601f19603f83011681018181108582111715613af857613af86139d6565b604052918252848201925083810185019188831115613b1657600080fd5b938501935b82851015613b3457845184529385019392850192613b1b565b98975050505050505050565b82815260406020820152600061364d6040830184613a02565b848152608060208201526000613b726080830186613a02565b6001600160a01b03949094166040830152506060015292915050565b60005b83811015613ba9578181015183820152602001613b91565b50506000910152565b60008251613bc4818460208701613b8e565b9190910192915050565b6020815260008251806020840152613bed816040850160208701613b8e565b601f01601f1916919091016040019291505056fe2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c47084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5a26469706673582212209756459354c6c191985c337c80443236a2247583c6b34e854acd2d11caf0d9d364736f6c634300081300330000000000000000000000000e6214f42992683a9177ce65d022f163d7bbd1d200000000000000000000000078e1f895d3bb63f497526cb0e769f0a12c400bba000000000000000000000000ca24270522bb019f18c8fabda814888ed01edee0