0 txs
7 calls
constructor
constructor()
functions
claimPaused
viewfunction claimPaused() view returns (bool)
depositPaused
viewfunction depositPaused() view returns (bool)
endpoint
viewfunction endpoint() view returns (address)
getBalancedAmount
viewfunction getBalancedAmount(address token0, address token1, uint256 amount0) view returns (uint256)
getPoolToken
viewfunction getPoolToken(uint256 id, address token) view returns (address, uint256, uint256, bool)
getPrice
viewfunction getPrice(uint32 id) view returns (uint256 price)
getTransactionFee
viewfunction getTransactionFee(address token) view returns (uint256)
getUserActiveAmount
viewfunction getUserActiveAmount(uint256 id, address token, address user) view returns (uint256)
getUserFee
viewfunction getUserFee(uint256 id, address token, address user) view returns (uint256)
getUserPendingAmount
viewfunction getUserPendingAmount(uint256 id, address token, address user) view returns (uint256)
getWithdrawAmount
purefunction getWithdrawAmount(uint256 balance, uint256 amount, uint256 activeAmount) pure returns (uint256)
nextSpot
viewfunction nextSpot() view returns (tuple)
owner
viewfunction owner() view returns (address)
pools
viewfunction pools(uint256 id) view returns (address router, uint8 poolType)
productToToken
viewfunction productToToken(uint32 id) view returns (address token)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
queue
viewfunction queue(uint128) view returns (address sender, address router, uint8 spotType, bytes transaction)
queueCount
viewfunction queueCount() view returns (uint128)
queueUpTo
viewfunction queueUpTo() view returns (uint128)
quoteToken
viewfunction quoteToken() view returns (address)
routerSigner
viewfunction routerSigner(address router) view returns (address signer)
slowModeFee
viewfunction slowModeFee() view returns (uint256)
tokenToProduct
viewfunction tokenToProduct(address token) view returns (uint32 id)
withdrawPaused
viewfunction withdrawPaused() view returns (bool)
addPool
nonpayablefunction addPool(uint256 id, address[] tokens, uint256[] hardcaps, uint8 poolType, address externalAccount)
addPoolTokens
nonpayablefunction addPoolTokens(uint256 id, address[] tokens, uint256[] hardcaps)
claim
nonpayablefunction claim(address user, address token, uint256 id)
depositPerp
payablefunction depositPerp(uint256 id, address token, uint256 amount, address receiver) payable
depositSpot
payablefunction depositSpot(uint256 id, address token0, address token1, uint256 amount0, uint256 amount1Low, uint256 amount1High, address receiver) payable
initialize
nonpayablefunction initialize(address _endpoint, address _processor, uint256 _slowModeFee)
pause
nonpayablefunction pause(bool _depositPaused, bool _withdrawPaused, bool _claimPaused)
renounceOwnership
nonpayablefunction renounceOwnership()
tempUnqueue
nonpayablefunction tempUnqueue(address[] routers, uint128[] amounts, address[] tokens)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unqueue
nonpayablefunction unqueue(uint128 spotId, bytes response)
updateLinkedSigners
nonpayablefunction updateLinkedSigners(uint256[] ids, address[] signers)
updatePoolHardcaps
nonpayablefunction updatePoolHardcaps(uint256 id, address[] tokens, uint256[] hardcaps)
updateToken
nonpayablefunction updateToken(address token, uint32 productId)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdrawPerp
payablefunction withdrawPerp(uint256 id, address token, uint256 amount) payable
withdrawSpot
payablefunction withdrawSpot(uint256 id, address token0, address token1, uint256 amount0) payable
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
Claim
event Claim(address indexed user, address indexed token, uint256 indexed amount)
Initialized
event Initialized(uint8 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PauseUpdated
event PauseUpdated(bool indexed depositPaused, bool indexed withdrawPaused, bool indexed claimPaused)
PoolAdded
event PoolAdded(uint256 indexed id, uint8 poolType, address indexed router, address[] tokens, uint256[] hardcaps)
PoolHardcapsUpdated
event PoolHardcapsUpdated(uint256 indexed id, uint256[] hardcaps)
PoolTokensAdded
event PoolTokensAdded(uint256 indexed id, address[] tokens, uint256[] hardcaps)
Queued
event Queued((address sender, address router, uint8 spotType, bytes transaction) spot, uint128 queueCount, uint128 queueUpTo)
QueueUpdated
event QueueUpdated(uint128 queueCount, uint128 queueUpTo, (address sender, address router, uint8 spotType, bytes transaction) nextSpot, uint8 eventType)
TokenUpdated
event TokenUpdated(address indexed token, uint256 indexed productId)
Upgraded
event Upgraded(address indexed implementation)
errors
AmountTooLow
error AmountTooLow(uint256 amount, uint256 fee)
ClaimsPaused
error ClaimsPaused()
DepositsPaused
error DepositsPaused()
DuplicatedToken
error DuplicatedToken(address token)
FeeTooLow
error FeeTooLow(uint256 value, uint256 fee)
FeeTransferFailed
error FeeTransferFailed()
InvalidPool
error InvalidPool(uint256 id)
InvalidSpot
error InvalidSpot(uint128 spotId, uint128 queueUpTo)
InvalidToken
error InvalidToken(address token)
MismatchInputs
error MismatchInputs(uint256[] array1, address[] array2)
NotExternalAccount
error NotExternalAccount(address router, address externalAccount, address caller)
WithdrawalsPaused
error WithdrawalsPaused()
ZeroAddress
error ZeroAddress()
ZeroPrice
error ZeroPrice()
creation bytecode
0x60a060405230608052620f424060cf553480156200001c57600080fd5b50600160c9556200002c62000032565b620000f3565b600054610100900460ff16156200009f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000f1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051615ff06200012b60003960008181611571015281816115b40152818161165c0152818161169f01526118830152615ff06000f3fe608060405260043610620002835760003560e01c80638da5cb5b1162000153578063c9a00f7c11620000c5578063d1596b6b1162000084578063d1596b6b1462000833578063d6251d8e1462000858578063d9ef9b7d14620008a5578063da26663a14620008ca578063ee4aff6a14620008ef578063f2fde38b146200091457600080fd5b8063c9a00f7c1462000774578063cd67eee0146200078b578063ced17c1314620007b0578063cf49ce2314620007d7578063cf82a28d14620007fc57600080fd5b8063ab5e124a1162000112578063ab5e124a146200065f578063ac4afa381462000682578063b7acf26a14620006d8578063c02397cb14620006fd578063c8118874146200072257600080fd5b80638da5cb5b1462000599578063996cba6814620005b95780639c19e6a614620005de5780639ef36bd11462000618578063a2ad90ff146200063a57600080fd5b80632f3ffb9f11620001f957806352d1902d11620001b857806352d1902d14620004d85780635e280f1114620004f0578063715018a614620005125780637562cac6146200052a57806383732757146200054f5780638d009b37146200057457600080fd5b80632f3ffb9f14620004125780633659cfe61462000435578063478e6253146200045a5780634f1ef286146200049c5780635025afb114620004b357600080fd5b80631794bb3c11620002465780631794bb3c146200034957806317bd6f5a146200036e578063217a4b701462000386578063245f457514620003c1578063269c7a2a14620003d857600080fd5b806302befd2414620002885780630428d08414620002c057806304568df314620002d9578063119e260514620002f05780631295cf731462000315575b600080fd5b3480156200029557600080fd5b5060d154620002ab90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b620002d7620002d1366004620041b8565b62000939565b005b620002d7620002ea366004620041f3565b62000c43565b348015620002fd57600080fd5b50620002d76200030f36600462004257565b62000f66565b3480156200032257600080fd5b506200033a6200033436600462004291565b62000fe7565b604051908152602001620002b7565b3480156200035657600080fd5b50620002d762000368366004620042be565b62001001565b3480156200037b57600080fd5b506200033a60cf5481565b3480156200039357600080fd5b5060d154620003a8906001600160a01b031681565b6040516001600160a01b039091168152602001620002b7565b620002d7620003d2366004620042f3565b62001241565b348015620003e557600080fd5b50620003a8620003f736600462004340565b60cc602052600090815260409020546001600160a01b031681565b3480156200041f57600080fd5b5060d154620002ab90600160a81b900460ff1681565b3480156200044257600080fd5b50620002d7620004543660046200435e565b62001567565b3480156200046757600080fd5b5060ce546200048390600160801b90046001600160801b031681565b6040516001600160801b039091168152602001620002b7565b620002d7620004ad3660046200443d565b62001652565b348015620004c057600080fd5b506200033a620004d23660046200435e565b6200172e565b348015620004e557600080fd5b506200033a62001876565b348015620004fd57600080fd5b5060d054620003a8906001600160a01b031681565b3480156200051f57600080fd5b50620002d76200192c565b3480156200053757600080fd5b50620002d762000549366004620044a1565b62001944565b3480156200055c57600080fd5b50620002d76200056e3660046200450b565b620019dd565b3480156200058157600080fd5b506200033a620005933660046200452a565b62001d2e565b348015620005a657600080fd5b506097546001600160a01b0316620003a8565b348015620005c657600080fd5b50620002d7620005d8366004620042be565b62001da8565b348015620005eb57600080fd5b50620003a8620005fd3660046200435e565b60d4602052600090815260409020546001600160a01b031681565b3480156200062557600080fd5b5060ce5462000483906001600160801b031681565b3480156200064757600080fd5b50620002d762000659366004620045b4565b620020e3565b3480156200066c57600080fd5b5060d154620002ab90600160b01b900460ff1681565b3480156200068f57600080fd5b50620006c8620006a136600462004661565b60ca602052600090815260409020546001600160a01b03811690600160a01b900460ff1682565b604051620002b7929190620046a4565b348015620006e557600080fd5b506200033a620006f7366004620042be565b6200248b565b3480156200070a57600080fd5b50620002d76200071c366004620046cc565b620025ff565b3480156200072f57600080fd5b5062000747620007413660046200474c565b6200287d565b604080516001600160a01b03909516855260208501939093529183015215156060820152608001620002b7565b620002d7620007853660046200477f565b62002930565b3480156200079857600080fd5b50620002d7620007aa3660046200488c565b62002cd0565b348015620007bd57600080fd5b50620007c862002f0c565b604051620002b7919062004a36565b348015620007e457600080fd5b506200033a620007f63660046200452a565b6200304f565b3480156200080957600080fd5b50620008216200081b36600462004a4b565b620030c3565b604051620002b7949392919062004a69565b3480156200084057600080fd5b50620002d762000852366004620046cc565b62003190565b3480156200086557600080fd5b506200088f620008773660046200435e565b60cb6020526000908152604090205463ffffffff1681565b60405163ffffffff9091168152602001620002b7565b348015620008b257600080fd5b506200033a620008c43660046200452a565b620032e5565b348015620008d757600080fd5b506200033a620008e936600462004340565b62003361565b348015620008fc57600080fd5b50620002d76200090e36600462004aa4565b6200341e565b3480156200092157600080fd5b50620002d7620009333660046200435e565b620036c9565b60d154600160a81b900460ff16156200096557604051636022a9e760e01b815260040160405180910390fd5b6200096f62003745565b600083815260ca6020526040902060028154600160a01b900460ff1660028111156200099f576200099f6200467b565b14620009c6576040516321b4f3f960e21b8152600481018590526024015b60405180910390fd5b6000620009d3846200172e565b90508083101562000a0257604051631cc6243f60e01b81526004810184905260248101829052604401620009bd565b815462000a18906001600160a01b0316620037a0565b6040805160808101825233815283546001600160a01b031660208201529081016002815260408051606080820183528982526001600160a01b03808a1660208481019182529385018a815285518086018e905291519092169481019490945251908301529091019060800160408051601f19818403018152919052905260ce805460cd916000916001600160801b0316908262000ab58362004b2c565b82546101009290920a6001600160801b038181021990931691831602179091551681526020808201929092526040908101600020835181546001600160a01b03199081166001600160a01b0392831617835593850151600183018054958616919092169081178255928501519193919290916001600160a81b03191617600160a01b83600481111562000b4c5762000b4c6200467b565b02179055506060820151600282019062000b67908262004be3565b505060ce5460008051602062005f7b833981519152915060cd9060009062000b9b906001906001600160801b031662004caf565b6001600160801b0390811682526020820192909252604090810160002060ce54915162000bd893919280831692600160801b909104169062004da6565b60405180910390a160ce546001600160801b03600160801b82048116600081815260cd602052604090819020905160008051602062005f9b8339815191529462000c29941692919060019062004ddb565b60405180910390a1505062000c3e600160c955565b505050565b60d154600160a01b900460ff161562000c6f5760405163deeb694360e01b815260040160405180910390fd5b62000c7962003745565b600084815260ca6020526040902060028154600160a01b900460ff16600281111562000ca95762000ca96200467b565b1462000ccc576040516321b4f3f960e21b815260048101869052602401620009bd565b6001600160a01b03821662000cf45760405163d92e233d60e01b815260040160405180910390fd5b805462000d0a906001600160a01b0316620037a0565b6040805160808101825233815282546001600160a01b03166020820152908101600481526020016040518060800160405280888152602001876001600160a01b03168152602001868152602001856001600160a01b031681525060405160200162000daa9190815181526020808301516001600160a01b039081169183019190915260408084015190830152606092830151169181019190915260800190565b60408051601f19818403018152919052905260ce805460cd916000916001600160801b0316908262000ddc8362004b2c565b82546101009290920a6001600160801b038181021990931691831602179091551681526020808201929092526040908101600020835181546001600160a01b03199081166001600160a01b0392831617835593850151600183018054958616919092169081178255928501519193919290916001600160a81b03191617600160a01b83600481111562000e735762000e736200467b565b02179055506060820151600282019062000e8e908262004be3565b505060ce5460008051602062005f7b833981519152915060cd9060009062000ec2906001906001600160801b031662004caf565b6001600160801b0390811682526020820192909252604090810160002060ce54915162000eff93919280831692600160801b909104169062004da6565b60405180910390a160ce546001600160801b03600160801b82048116600081815260cd6020526040808220905160008051602062005f9b8339815191529562000f4c951693929062004ddb565b60405180910390a15062000f60600160c955565b50505050565b62000f7062003895565b6001600160a01b038216600081815260cb60209081526040808320805463ffffffff191663ffffffff871690811790915580845260cc90925280832080546001600160a01b03191685179055519092917fc2d539e6a806d81b0892f23b002d25b825425d13a98bb6f486438b6b7bc0ce3a91a35050565b600062000ff783858484620038f1565b90505b9392505050565b600054610100900460ff1615808015620010225750600054600160ff909116105b806200103e5750303b1580156200103e575060005460ff166001145b620010a35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620009bd565b6000805460ff191660011790558015620010c7576000805461ff0019166101001790555b620010d16200395c565b620010db62003986565b60d080546001600160a01b038087166001600160a01b0319928316811790935560d380549187169190921617905560cf83905560408051635d4f5f9760e01b81529051635d4f5f97916004818101926020929091908290030181865afa1580156200114a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001170919062004e25565b6001600160a01b031663171755b16040518163ffffffff1660e01b8152600401602060405180830381865afa158015620011ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011d4919062004e25565b60d180546001600160a01b0319166001600160a01b0392909216919091179055801562000f60576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a150505050565b60d154600160a81b900460ff16156200126d57604051636022a9e760e01b815260040160405180910390fd5b6200127762003745565b600084815260ca6020526040902060018154600160a01b900460ff166002811115620012a757620012a76200467b565b14620012ca576040516321b4f3f960e21b815260048101869052602401620009bd565b826001600160a01b0316846001600160a01b0316036200130957604051631096448f60e21b81526001600160a01b0385166004820152602401620009bd565b80546200131f906001600160a01b0316620037a0565b6040805160808101825233815282546001600160a01b03166020820152908101600381526020016040518060800160405280888152602001876001600160a01b03168152602001866001600160a01b0316815260200185815250604051602001620013c19190815181526020808301516001600160a01b0390811691830191909152604080840151909116908201526060918201519181019190915260800190565b60408051601f19818403018152919052905260ce805460cd916000916001600160801b03169082620013f38362004b2c565b82546101009290920a6001600160801b038181021990931691831602179091551681526020808201929092526040908101600020835181546001600160a01b03199081166001600160a01b0392831617835593850151600183018054958616919092169081178255928501519193919290916001600160a81b03191617600160a01b8360048111156200148a576200148a6200467b565b021790555060608201516002820190620014a5908262004be3565b505060ce5460008051602062005f7b833981519152915060cd90600090620014d9906001906001600160801b031662004caf565b6001600160801b0390811682526020820192909252604090810160002060ce5491516200151693919280831692600160801b909104169062004da6565b60405180910390a160ce546001600160801b03600160801b82048116600081815260cd602052604090819020905160008051602062005f9b8339815191529462000f4c941692919060019062004ddb565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003620015b25760405162461bcd60e51b8152600401620009bd9062004e45565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316620015fd60008051602062005f34833981519152546001600160a01b031690565b6001600160a01b031614620016265760405162461bcd60e51b8152600401620009bd9062004e91565b6200163181620039ba565b604080516000808252602082019092526200164f91839190620039c4565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036200169d5760405162461bcd60e51b8152600401620009bd9062004e45565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316620016e860008051602062005f34833981519152546001600160a01b031690565b6001600160a01b031614620017115760405162461bcd60e51b8152600401620009bd9062004e91565b6200171c82620039ba565b6200172a82826001620039c4565b5050565b60006200187060d160009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001788573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017ae919062004edd565b836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620017ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001813919062004edd565b6200182090601262004f02565b6200182c919062004f1e565b6200183990600a62005037565b6001600160a01b038416600090815260cb6020526040902054620018639063ffffffff1662003361565b60cf5491906001620038f1565b92915050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614620019185760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401620009bd565b5060008051602062005f3483398151915290565b6200193662003895565b62001942600062003b3c565b565b6200194e62003895565b60d1805461ffff60a01b1916600160a01b851515810260ff60a81b191691909117600160a81b85151581029190911760ff60b01b1916600160b01b8515158102919091179384905560405160ff91850482161515949283048216151593909204161515907fa0270f662d0cf1144ae98e452fc1f163575aff9c4d132722dcd892a94d17c0cb90600090a4505050565b60ce54600160801b90046001600160801b0316600090815260cd60209081526040808320815160808101835281546001600160a01b039081168252600183015490811694820194909452929091830190600160a01b900460ff16600481111562001a4b5762001a4b6200467b565b600481111562001a5f5762001a5f6200467b565b815260200160028201805462001a759062004b55565b80601f016020809104026020016040519081016040528092919081815260200182805462001aa39062004b55565b801562001af45780601f1062001ac85761010080835404028352916020019162001af4565b820191906000526020600020905b81548152906001019060200180831162001ad657829003601f168201915b5050505050815250509050600062001b2882602001516001600160a01b03908116600090815260d460205260409020541690565b9050336001600160a01b0382161462001b74576020820151604051631d25102d60e11b81526001600160a01b0391821660048201529082166024820152336044820152606401620009bd565b82511562001ca95760ce5462001b9c90600160801b90046001600160801b0316600162005048565b6001600160801b0316846001600160801b03161462001bee5760ce546040516372fe19eb60e11b81526001600160801b038681166004830152600160801b9092049091166024820152604401620009bd565b60006325a3b2a660e01b83853060405160240162001c0f939291906200506b565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925260d35491519092506001600160a01b039091169062001c62908390620050ad565b600060405180830381855af49150503d806000811462001c9f576040519150601f19603f3d011682016040523d82523d6000602084013e62001ca4565b606091505b505050505b60ce8054600160801b90046001600160801b031690601062001ccb8362004b2c565b82546101009290920a6001600160801b0381810219909316918316021790915560ce54600160801b81048216600081815260cd602052604090819020905160008051602062005f9b83398151915295506200123394939093169260029062004ddb565b60d2546000906001600160a01b03161580159062001d59575060d1546001600160a01b038481169116145b1562001d6e5760d2546001600160a01b031692505b50600092835260ca602090815260408085206001600160a01b03948516865260010182528085209290931684526002909101905290205490565b60d154600160b01b900460ff161562001dd457604051637cdf17ad60e01b815260040160405180910390fd5b62001dde62003745565b600081815260ca6020526040902080546001600160a01b031662001e19576040516321b4f3f960e21b815260048101839052602401620009bd565b6001600160a01b03841662001e415760405163d92e233d60e01b815260040160405180910390fd5b805460d2546001600160a01b0391821691600091161580159062001e72575060d1546001600160a01b038681169116145b1562001e9b575060d2546001600160a01b03166000908152600183016020526040902062001eb7565b506001600160a01b038416600090815260018301602052604090205b6001600160a01b03861660009081526002820160209081526040808320546001850190925282205490919062001f679062001ef4908490620050cb565b6040516370a0823160e01b81526001600160a01b0387811660048301528a16906370a0823190602401602060405180830381865afa15801562001f3b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f619190620050e1565b62003b8e565b905062001f758282620050fb565b6001600160a01b03891660009081526001850160205260408120805490919062001fa1908490620050fb565b90915550506001600160a01b03881660009081526002840160205260408120805484929062001fd2908490620050fb565b9091555050604051631698755f60e01b81526001600160a01b03888116600483015260248201839052851690631698755f90604401600060405180830381600087803b1580156200202257600080fd5b505af115801562002037573d6000803e3d6000fd5b5050505062002064620020526097546001600160a01b031690565b6001600160a01b038916908462003ba6565b6200208788620020758484620050fb565b6001600160a01b038a16919062003ba6565b620020938282620050fb565b876001600160a01b0316896001600160a01b03167f70eb43c4a8ae8c40502dcf22436c509c28d6ff421cf07c491be56984bd98706860405160405180910390a4505050505062000c3e600160c955565b620020ed62003895565b600087815260ca60205260409020546001600160a01b03161562002128576040516321b4f3f960e21b815260048101889052602401620009bd565b60d0546040516000916001600160a01b0316908390620021489062004194565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156200217c573d6000803e3d6000fd5b5060d1546040516349c8c13d60e11b81526001600160a01b039182166004820152919250821690639391827a90602401600060405180830381600087803b158015620021c757600080fd5b505af1158015620021dc573d6000803e3d6000fd5b5050505060006040518060600160405280836001600160a01b03166303a3f6786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200222c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022529190620050e1565b8152602001836001600160a01b03166370bdec436040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002296573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022bc9190620050e1565b815260006020909101529050620022f8620022df6097546001600160a01b031690565b60cf5460d1546001600160a01b03169190859062003c0b565b6001600160a01b03821663e604ed9e601360408051855160208083019190915286015181830152908501516001600160401b0316606082015260800160408051601f198184030181529082905262002354929160200162005111565b6040516020818303038152906040526040518263ffffffff1660e01b815260040162002381919062005142565b600060405180830381600087803b1580156200239c57600080fd5b505af1158015620023b1573d6000803e3d6000fd5b5050506001600160a01b03808416600081815260d4602090815260408083208054958a166001600160a01b03199687161790558e835260ca9091529020805492831682178155879350916001600160a81b03191617600160a01b8360028111156200242057620024206200467b565b0217905550620024348989898989620025ff565b816001600160a01b0316897f50359a729c3a8ab8c69964bf137015ff9ec2354dc5aaa708e7f9dbdafcfd87bf868b8b8b8b60405162002478959493929190620051d7565b60405180910390a3505050505050505050565b6001600160a01b038216600090815260cb602052604081205462000ff790620024ba9063ffffffff1662003361565b6001600160a01b038616600090815260cb6020526040902054620024e49063ffffffff1662003361565b620024f890670de0b6b3a76400006200521f565b6200250491906200524f565b846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002543573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002569919062004edd565b866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620025a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025ce919062004edd565b620025db90601262004f02565b620025e7919062004f1e565b620025f490600a62005037565b8491906000620038f1565b6200260962003895565b600085815260ca60205260408120546001600160a01b0316905b848110156200283457600086868381811062002643576200264362005272565b90506020020160208101906200265a91906200435e565b90506012816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200269d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026c3919062004edd565b60ff161115620026f25760405163961c9a4f60e01b81526001600160a01b0382166004820152602401620009bd565b60d2546000906001600160a01b0316158015906200271d575060d1546001600160a01b038381169116145b15620027515750600088815260ca6020908152604080832060d2546001600160a01b03168452600101909152902062002778565b50600088815260ca602090815260408083206001600160a01b038516845260010190915290205b600581015460ff16620027955760058101805460ff191660011790555b858584818110620027aa57620027aa62005272565b60200291909101356004808401919091556040516349c8c13d60e11b81526001600160a01b03858116928201929092529086169150639391827a90602401600060405180830381600087803b1580156200280357600080fd5b505af115801562002818573d6000803e3d6000fd5b50505050505080806200282b9062005288565b91505062002623565b50857feae88460ad7b00df4bc4f360a6a1dc87da6a2d38c7afe9928a9b932c8249b843868686866040516200286d9493929190620052a4565b60405180910390a2505050505050565b600082815260ca6020526040812060d2548291829182919082906001600160a01b031615801590620028bc575060d1546001600160a01b038881169116145b15620028e5575060d2546001600160a01b03166000908152600182016020526040902062002901565b506001600160a01b038616600090815260018201602052604090205b9054600382015460048301546005909301546001600160a01b039092169990985091965060ff16945092505050565b60d154600160a01b900460ff16156200295c5760405163deeb694360e01b815260040160405180910390fd5b6200296662003745565b600087815260ca6020526040902060018154600160a01b900460ff1660028111156200299657620029966200467b565b14620029b9576040516321b4f3f960e21b815260048101899052602401620009bd565b856001600160a01b0316876001600160a01b031603620029f857604051631096448f60e21b81526001600160a01b0388166004820152602401620009bd565b6001600160a01b03821662002a205760405163d92e233d60e01b815260040160405180910390fd5b805462002a36906001600160a01b0316620037a0565b6040805160808101825233815282546001600160a01b03166020820152908101600181526020016040518060e001604052808b81526020018a6001600160a01b03168152602001896001600160a01b03168152602001888152602001878152602001868152602001856001600160a01b031681525060405160200162002b119190815181526020808301516001600160a01b0390811691830191909152604080840151821690830152606080840151908301526080808401519083015260a0808401519083015260c092830151169181019190915260e00190565b60408051601f19818403018152919052905260ce805460cd916000916001600160801b0316908262002b438362004b2c565b82546101009290920a6001600160801b038181021990931691831602179091551681526020808201929092526040908101600020835181546001600160a01b03199081166001600160a01b0392831617835593850151600183018054958616919092169081178255928501519193919290916001600160a81b03191617600160a01b83600481111562002bda5762002bda6200467b565b02179055506060820151600282019062002bf5908262004be3565b505060ce5460008051602062005f7b833981519152915060cd9060009062002c29906001906001600160801b031662004caf565b6001600160801b0390811682526020820192909252604090810160002060ce54915162002c6693919280831692600160801b909104169062004da6565b60405180910390a160ce546001600160801b03600160801b82048116600081815260cd6020526040808220905160008051602062005f9b8339815191529562002cb3951693929062004ddb565b60405180910390a15062002cc7600160c955565b50505050505050565b62002cda62003895565b60005b835181101562000f6057600084828151811062002cfe5762002cfe62005272565b6020026020010151905060006040518060800160405280836001600160a01b03166303a3f6786040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002d54573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d7a9190620050e1565b815260200160cb600087878151811062002d985762002d9862005272565b6020908102919091018101516001600160a01b03168252818101929092526040016000205463ffffffff168252875191019087908690811062002ddf5762002ddf62005272565b60200260200101516001600160801b0316815260200160006001600160401b0316815250905062002e1c620022df6097546001600160a01b031690565b6001600160a01b03821663e604ed9e600260408051855160208083019190915286015163ffffffff1681830152908501516001600160801b03166060808301919091528501516001600160401b0316608082015260a00160408051601f198184030181529082905262002e93929160200162005111565b6040516020818303038152906040526040518263ffffffff1660e01b815260040162002ec0919062005142565b600060405180830381600087803b15801562002edb57600080fd5b505af115801562002ef0573d6000803e3d6000fd5b505050505050808062002f039062005288565b91505062002cdd565b60408051608080820183526000808352602080840182905283850182905260608085015260ce54600160801b90046001600160801b0316825260cd8152908490208451928301855280546001600160a01b0390811684526001820154908116928401929092529293919291830190600160a01b900460ff16600481111562002f985762002f986200467b565b600481111562002fac5762002fac6200467b565b815260200160028201805462002fc29062004b55565b80601f016020809104026020016040519081016040528092919081815260200182805462002ff09062004b55565b8015620030415780601f10620030155761010080835404028352916020019162003041565b820191906000526020600020905b8154815290600101906020018083116200302357829003601f168201915b505050505081525050905090565b60d2546000906001600160a01b0316158015906200307a575060d1546001600160a01b038481169116145b156200308f5760d2546001600160a01b031692505b50600092835260ca602090815260408085206001600160a01b03948516865260010182528085209290931684525290205490565b60cd602052600090815260409020805460018201546002830180546001600160a01b039384169493831693600160a01b90930460ff16929190620031079062004b55565b80601f0160208091040260200160405190810160405280929190818152602001828054620031359062004b55565b8015620031865780601f106200315a5761010080835404028352916020019162003186565b820191906000526020600020905b8154815290600101906020018083116200316857829003601f168201915b5050505050905084565b6200319a62003895565b808314620031c55781818585604051634b772e1f60e11b8152600401620009bd9493929190620052cf565b60005b81811015620032a1576000858583818110620031e857620031e862005272565b9050602002016020810190620031ff91906200435e565b60d2549091506001600160a01b0316158015906200322a575060d1546001600160a01b038281169116145b156200323e575060d2546001600160a01b03165b83838381811062003253576200325362005272565b60008a815260ca602090815260408083206001600160a01b03909716835260019096018152949020930291909101356004909201919091555080620032988162005288565b915050620031c8565b50847f2600f56e20be406a685bbad30b9c0e5f0bd0abae144a50a90fea3693dd185bae8383604051620032d6929190620052fa565b60405180910390a25050505050565b60d2546000906001600160a01b03161580159062003310575060d1546001600160a01b038481169116145b15620033255760d2546001600160a01b031692505b50600083815260ca602090815260408083206001600160a01b038087168552600191820184528285209086168552019091529020549392505050565b600063ffffffff821615620033eb5760d054604051631b47234360e11b815263ffffffff841660048201526001600160a01b039091169063368e468690602401602060405180830381865afa158015620033bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033e59190620050e1565b620033f5565b670de0b6b3a76400005b9050806000036200341957604051634dfba02360e01b815260040160405180910390fd5b919050565b6200342862003895565b828114620034535783838383604051634b772e1f60e11b8152600401620009bd9493929190620052cf565b60005b83811015620036c257600060ca60008787858181106200347a576200347a62005272565b602090810292909201358352508101919091526040016000908120546001600160a01b031691506060858585818110620034b857620034b862005272565b9050602002016020810190620034cf91906200435e565b6001600160a01b0316901b60001b905060006040518060600160405280846001600160a01b03166303a3f6786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200352b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035519190620050e1565b81526020810184905260006040909101529050620035946200357b6097546001600160a01b031690565b60cf5460d1546001600160a01b03169190869062003c0b565b6001600160a01b03831663e604ed9e601360408051855160208083019190915286015181830152908501516001600160401b0316606082015260800160408051601f1981840301815290829052620035f0929160200162005111565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016200361d919062005142565b600060405180830381600087803b1580156200363857600080fd5b505af11580156200364d573d6000803e3d6000fd5b5050505085858581811062003666576200366662005272565b90506020020160208101906200367d91906200435e565b6001600160a01b03938416600090815260d46020526040902080546001600160a01b031916919094161790925550819050620036b98162005288565b91505062003456565b5050505050565b620036d362003895565b6001600160a01b0381166200373a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620009bd565b6200164f8162003b3c565b600260c95403620037995760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401620009bd565b600260c955565b6003600090815260cc6020527f0a419be568cc707f4292098bf178c7d2a8bf2a39b4b2d22c7d4b34f1df9dc54354620037e2906001600160a01b03166200172e565b90508034101562003810576040516378279ed960e11b815234600482015260248101829052604401620009bd565b6001600160a01b03828116600090815260d460205260408082205490519192169034908381818185875af1925050503d80600081146200386d576040519150601f19603f3d011682016040523d82523d6000602084013e62003872565b606091505b505090508062000c3e57604051634033e4e360e01b815260040160405180910390fd5b6097546001600160a01b03163314620019425760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620009bd565b6000806200390186868662003c45565b905060018360028111156200391a576200391a6200467b565b1480156200393b57506000848062003936576200393662005239565b868809115b1562003951576200394e600182620050cb565b90505b90505b949350505050565b600054610100900460ff16620019425760405162461bcd60e51b8152600401620009bd9062005310565b600054610100900460ff16620039b05760405162461bcd60e51b8152600401620009bd9062005310565b6200194262003d36565b6200164f62003895565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615620039fa5762000c3e8362003d6b565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801562003a57575060408051601f3d908101601f1916820190925262003a5491810190620050e1565b60015b62003abc5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401620009bd565b60008051602062005f34833981519152811462003b2e5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401620009bd565b5062000c3e83838362003e0a565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081831062003b9f578162000ffa565b5090919050565b6040516001600160a01b03831660248201526044810182905262000c3e90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915262003e35565b6040516001600160a01b038085166024830152831660448201526064810182905262000f609085906323b872dd60e01b9060840162003bd3565b600080806000198587098587029250828110838203039150508060000362003c845783828162003c795762003c7962005239565b049250505062000ffa565b80841162003ccd5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401620009bd565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b600054610100900460ff1662003d605760405162461bcd60e51b8152600401620009bd9062005310565b620019423362003b3c565b6001600160a01b0381163b62003dda5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620009bd565b60008051602062005f3483398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b62003e158362003f11565b60008251118062003e235750805b1562000c3e5762000f60838362003f53565b600062003e8c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031662003f7b9092919063ffffffff16565b905080516000148062003eb057508080602001905181019062003eb091906200535b565b62000c3e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401620009bd565b62003f1c8162003d6b565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606062000ffa838360405180606001604052806027815260200162005f546027913962003f8c565b606062000ff784846000856200400a565b6060600080856001600160a01b03168560405162003fab9190620050ad565b600060405180830381855af49150503d806000811462003fe8576040519150601f19603f3d011682016040523d82523d6000602084013e62003fed565b606091505b50915091506200400086838387620040ed565b9695505050505050565b6060824710156200406d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401620009bd565b600080866001600160a01b031685876040516200408b9190620050ad565b60006040518083038185875af1925050503d8060008114620040ca576040519150601f19603f3d011682016040523d82523d6000602084013e620040cf565b606091505b5091509150620040e287838387620040ed565b979650505050505050565b606083156200416157825160000362004159576001600160a01b0385163b620041595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620009bd565b508162003954565b620039548383815115620041785781518083602001fd5b8060405162461bcd60e51b8152600401620009bd919062005142565b610bb8806200537c83390190565b6001600160a01b03811681146200164f57600080fd5b600080600060608486031215620041ce57600080fd5b833592506020840135620041e281620041a2565b929592945050506040919091013590565b600080600080608085870312156200420a57600080fd5b8435935060208501356200421e81620041a2565b92506040850135915060608501356200423781620041a2565b939692955090935050565b803563ffffffff811681146200341957600080fd5b600080604083850312156200426b57600080fd5b82356200427881620041a2565b9150620042886020840162004242565b90509250929050565b600080600060608486031215620042a757600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215620042d457600080fd5b8335620042e181620041a2565b92506020840135620041e281620041a2565b600080600080608085870312156200430a57600080fd5b8435935060208501356200431e81620041a2565b925060408501356200433081620041a2565b9396929550929360600135925050565b6000602082840312156200435357600080fd5b62000ffa8262004242565b6000602082840312156200437157600080fd5b813562000ffa81620041a2565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620043bf57620043bf6200437e565b604052919050565b600082601f830112620043d957600080fd5b81356001600160401b03811115620043f557620043f56200437e565b6200440a601f8201601f191660200162004394565b8181528460208386010111156200442057600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156200445157600080fd5b82356200445e81620041a2565b915060208301356001600160401b038111156200447a57600080fd5b6200448885828601620043c7565b9150509250929050565b80151581146200164f57600080fd5b600080600060608486031215620044b757600080fd5b8335620044c48162004492565b92506020840135620044d68162004492565b91506040840135620044e88162004492565b809150509250925092565b80356001600160801b03811681146200341957600080fd5b600080604083850312156200451f57600080fd5b6200445e83620044f3565b6000806000606084860312156200454057600080fd5b8335925060208401356200455481620041a2565b91506040840135620044e881620041a2565b60008083601f8401126200457957600080fd5b5081356001600160401b038111156200459157600080fd5b6020830191508360208260051b8501011115620045ad57600080fd5b9250929050565b600080600080600080600060a0888a031215620045d057600080fd5b8735965060208801356001600160401b0380821115620045ef57600080fd5b620045fd8b838c0162004566565b909850965060408a01359150808211156200461757600080fd5b50620046268a828b0162004566565b9095509350506060880135600381106200463f57600080fd5b915060808801356200465181620041a2565b8091505092959891949750929550565b6000602082840312156200467457600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b600381106200164f576200164f6200467b565b6001600160a01b038316815260408101620046bf8362004691565b8260208301529392505050565b600080600080600060608688031215620046e557600080fd5b8535945060208601356001600160401b03808211156200470457600080fd5b6200471289838a0162004566565b909650945060408801359150808211156200472c57600080fd5b506200473b8882890162004566565b969995985093965092949392505050565b600080604083850312156200476057600080fd5b8235915060208301356200477481620041a2565b809150509250929050565b600080600080600080600060e0888a0312156200479b57600080fd5b873596506020880135620047af81620041a2565b95506040880135620047c181620041a2565b9450606088013593506080880135925060a0880135915060c08801356200465181620041a2565b60006001600160401b038211156200480457620048046200437e565b5060051b60200190565b600082601f8301126200482057600080fd5b81356020620048396200483383620047e8565b62004394565b82815260059290921b840181019181810190868411156200485957600080fd5b8286015b84811015620048815780356200487381620041a2565b83529183019183016200485d565b509695505050505050565b600080600060608486031215620048a257600080fd5b83356001600160401b0380821115620048ba57600080fd5b620048c8878388016200480e565b9450602091508186013581811115620048e057600080fd5b8601601f81018813620048f257600080fd5b8035620049036200483382620047e8565b81815260059190911b8201840190848101908a8311156200492357600080fd5b928501925b828410156200494c576200493c84620044f3565b8252928501929085019062004928565b965050505060408601359150808211156200496657600080fd5b5062004975868287016200480e565b9150509250925092565b600581106200499257620049926200467b565b9052565b60005b83811015620049b357818101518382015260200162004999565b50506000910152565b60008151808452620049d681602086016020860162004996565b601f01601f19169290920160200192915050565b600060018060a01b0380835116845280602084015116602085015250604082015162004a1a60408501826200497f565b50606082015160806060850152620039546080850182620049bc565b60208152600062000ffa6020830184620049ea565b60006020828403121562004a5e57600080fd5b62000ffa82620044f3565b6001600160a01b03858116825284166020820152600062004a8e60408301856200497f565b60806060830152620040006080830184620049bc565b6000806000806040858703121562004abb57600080fd5b84356001600160401b038082111562004ad357600080fd5b62004ae18883890162004566565b9096509450602087013591508082111562004afb57600080fd5b5062004b0a8782880162004566565b95989497509550505050565b634e487b7160e01b600052601160045260246000fd5b60006001600160801b0380831681810362004b4b5762004b4b62004b16565b6001019392505050565b600181811c9082168062004b6a57607f821691505b60208210810362004b8b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000c3e57600081815260208120601f850160051c8101602086101562004bba5750805b601f850160051c820191505b8181101562004bdb5782815560010162004bc6565b505050505050565b81516001600160401b0381111562004bff5762004bff6200437e565b62004c178162004c10845462004b55565b8462004b91565b602080601f83116001811462004c4f576000841562004c365750858301515b600019600386901b1c1916600185901b17855562004bdb565b600085815260208120601f198616915b8281101562004c805788860151825594840194600190910190840162004c5f565b508582101562004c9f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160801b0382811682821603908082111562004cd25762004cd262004b16565b5092915050565b600060018060a01b0380835416845260018084015460208382168188015260a0935062004d0f6040880160ff84871c166200497f565b600286019150608060608801526000825462004d2b8162004b55565b8060808b01528582166000811462004d4c576001811462004d675762004d97565b60ff1983168b89015281151560051b8b018801935062004d97565b856000528460002060005b8381101562004d8f5781548d82018b015290880190860162004d72565b8c0189019450505b50919998505050505050505050565b60608152600062004dbb606083018662004cd9565b6001600160801b0394851660208401529290931660409091015292915050565b60006001600160801b0380871683528086166020840152506080604083015262004e09608083018562004cd9565b905062004e168362004691565b82606083015295945050505050565b60006020828403121562004e3857600080fd5b815162000ffa81620041a2565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60006020828403121562004ef057600080fd5b815160ff8116811462000ffa57600080fd5b60ff818116838216019081111562001870576200187062004b16565b60ff828116828216039081111562001870576200187062004b16565b600181815b8085111562004f7b57816000190482111562004f5f5762004f5f62004b16565b8085161562004f6d57918102915b93841c939080029062004f3f565b509250929050565b60008262004f945750600162001870565b8162004fa35750600062001870565b816001811462004fbc576002811462004fc75762004fe7565b600191505062001870565b60ff84111562004fdb5762004fdb62004b16565b50506001821b62001870565b5060208310610133831016604e8410600b84101617156200500c575081810a62001870565b62005018838362004f3a565b80600019048211156200502f576200502f62004b16565b029392505050565b600062000ffa60ff84168362004f83565b6001600160801b0381811683821601908082111562004cd25762004cd262004b16565b606081526000620050806060830186620049ea565b8281036020840152620050948186620049bc565b91505060018060a01b0383166040830152949350505050565b60008251620050c181846020870162004996565b9190910192915050565b8082018082111562001870576200187062004b16565b600060208284031215620050f457600080fd5b5051919050565b8181038181111562001870576200187062004b16565b60ff60f81b8360f81b168152600082516200513481600185016020870162004996565b919091016001019392505050565b60208152600062000ffa6020830184620049bc565b8183526000602080850194508260005b85811015620051995781356200517d81620041a2565b6001600160a01b03168752958201959082019060010162005167565b509495945050505050565b81835260006001600160fb1b03831115620051be57600080fd5b8260051b80836020870137939093016020019392505050565b620051e28662004691565b858152606060208201526000620051fe60608301868862005157565b828103604084015262005213818587620051a4565b98975050505050505050565b808202811582820484141762001870576200187062004b16565b634e487b7160e01b600052601260045260246000fd5b6000826200526d57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000600182016200529d576200529d62004b16565b5060010190565b604081526000620052ba60408301868862005157565b8281036020840152620040e2818587620051a4565b604081526000620052e5604083018688620051a4565b8281036020840152620040e281858762005157565b60208152600062000ff7602083018486620051a4565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000602082840312156200536e57600080fd5b815162000ffa816200449256fe61010060405234801561001157600080fd5b50604051610bb8380380610bb88339810160408190526100309161007b565b3360e0526001600160a01b039190911660805230606090811b60a0521b6001600160601b03191660c0526100ae565b80516001600160a01b038116811461007657600080fd5b919050565b6000806040838503121561008e57600080fd5b6100978361005f565b91506100a56020840161005f565b90509250929050565b60805160a05160c05160e051610a946101246000396000818160f4015281816101ad015281816101fa0152818161022e0152818161032601526104030152600061015a015260008181609201526102b0015260008181610133015281816102830152818161037b01526104580152610a946000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80635e280f111161005b5780635e280f111461012e57806370bdec43146101555780639391827a1461017c578063e604ed9e1461018f57600080fd5b806303a3f6781461008d5780631698755f146100c75780633d0ef24a146100dc578063481c6a75146100ef575b600080fd5b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6100da6100d536600461079f565b6101a2565b005b6100da6100ea3660046107c9565b610223565b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100be565b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6100da61018a366004610870565b61031b565b6100da61019d3660046108a8565b6103f8565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101eb5760405163607e454560e11b815260040160405180910390fd5b61021f6001600160a01b0383167f0000000000000000000000000000000000000000000000000000000000000000836104c2565b5050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461026c5760405163607e454560e11b815260040160405180910390fd5b6040516374de3a3160e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e9bc7462906102e3907f000000000000000000000000000000000000000000000000000000000000000060a01b908890889088908890600401610959565b600060405180830381600087803b1580156102fd57600080fd5b505af1158015610311573d6000803e3d6000fd5b5050505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103645760405163607e454560e11b815260040160405180910390fd5b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152600019602483015282169063095ea7b3906044016020604051808303816000875af11580156103d4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021f91906109bd565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104415760405163607e454560e11b815260040160405180910390fd5b60405163730276cf60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e604ed9e9061048d908490600401610a2f565b600060405180830381600087803b1580156104a757600080fd5b505af11580156104bb573d6000803e3d6000fd5b5050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610514908490610519565b505050565b600061056e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166105f39092919063ffffffff16565b905080516000148061058f57508080602001905181019061058f91906109bd565b6105145760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084015b60405180910390fd5b6060610602848460008561060a565b949350505050565b60608247101561066b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105ea565b600080866001600160a01b031685876040516106879190610a42565b60006040518083038185875af1925050503d80600081146106c4576040519150601f19603f3d011682016040523d82523d6000602084013e6106c9565b606091505b50915091506106da878383876106e5565b979650505050505050565b6060831561075457825160000361074d576001600160a01b0385163b61074d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105ea565b5081610602565b61060283838151156107695781518083602001fd5b8060405162461bcd60e51b81526004016105ea9190610a2f565b80356001600160a01b038116811461079a57600080fd5b919050565b600080604083850312156107b257600080fd5b6107bb83610783565b946020939093013593505050565b600080600080606085870312156107df57600080fd5b843563ffffffff811681146107f357600080fd5b935060208501356001600160801b038116811461080f57600080fd5b9250604085013567ffffffffffffffff8082111561082c57600080fd5b818701915087601f83011261084057600080fd5b81358181111561084f57600080fd5b88602082850101111561086157600080fd5b95989497505060200194505050565b60006020828403121561088257600080fd5b61088b82610783565b9392505050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156108ba57600080fd5b813567ffffffffffffffff808211156108d257600080fd5b818401915084601f8301126108e657600080fd5b8135818111156108f8576108f8610892565b604051601f8201601f19908116603f0116810190838211818310171561092057610920610892565b8160405282815287602084870101111561093957600080fd5b826020860160208301376000928101602001929092525095945050505050565b6bffffffffffffffffffffffff60a01b8616815263ffffffff851660208201526001600160801b038416604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b6000602082840312156109cf57600080fd5b8151801515811461088b57600080fd5b60005b838110156109fa5781810151838201526020016109e2565b50506000910152565b60008151808452610a1b8160208601602086016109df565b601f01601f19169290920160200192915050565b60208152600061088b6020830184610a03565b60008251610a548184602087016109df565b919091019291505056fea264697066735822122000e3a9735fe8222cb41892a46f1a1e60cc563e63cb22958fefd6b18a4a395f5c64736f6c63430008120033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65645a595dfbcf52edc2be4703ae288841f3b01e1c4a8bf9a45b09914abd29b8d009815e053d64d4174e3f33779430d82f2a04c31556137ddc31ffaa66c95e4626d6a2646970667358221220fc88d63fe20f2b18e2b99435843ad4f194e3cd160358785e398dacefb6e32e9164736f6c63430008120033