0 txs
43 calls
constructor
constructor()
functions
_getEthSignedMessageHash
purefunction _getEthSignedMessageHash(bytes32 _messageHash) pure returns (bytes32)
_signatureVerificationSigner
viewfunction _signatureVerificationSigner() view returns (address)
ABI_VERSION
viewfunction ABI_VERSION() view returns (uint256)
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
asset
viewfunction asset() view returns (address)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
encodeDepositParams
purefunction encodeDepositParams(tuple depositParams) pure returns (bytes32)
encodeRedeemParams
purefunction encodeRedeemParams(tuple redeemParams) pure returns (bytes32)
getBalance
viewfunction getBalance(address assetAddress) view returns (uint256)
getFeesAccount
viewfunction getFeesAccount() view returns (address)
getRedemptionFee
viewfunction getRedemptionFee() view returns (uint256)
getRedemptionFeeAmount
viewfunction getRedemptionFeeAmount(uint256 amount) view returns (uint256 feeAmount)
getSafeHarborModeEnabled
viewfunction getSafeHarborModeEnabled() view returns (bool)
getVersion
viewfunction getVersion() view returns (uint256)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
previewDeposit
viewfunction previewDeposit(uint256 assets) view returns (uint256)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
symbol
viewfunction symbol() view returns (string)
totalAssets
viewfunction totalAssets() view returns (uint256 totalAssetsAmount)
totalSupply
viewfunction totalSupply() view returns (uint256)
VAULT
viewfunction VAULT() view returns (address)
WRAPPED_NATIVE_ASSET_ADDRESS
viewfunction WRAPPED_NATIVE_ASSET_ADDRESS() view returns (address)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
decreaseAllowance
nonpayablefunction decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)
deposit
payablefunction deposit(address receiver, tuple depositParams, bytes depositParamsSignature) payable returns (uint256 shares, uint256 assetsAdded)
increaseAllowance
nonpayablefunction increaseAllowance(address spender, uint256 addedValue) returns (bool)
initialize
nonpayablefunction initialize(address _vault, address __asset, string _name, string _symbol, address _wrappedNativeAssetAddress, address _strategyAdmin, address _sigVerificationSigner, address _feeAccount)
multicall
nonpayablefunction multicall(bytes[] data) returns (bytes[] results)
redeem
nonpayablefunction redeem(address receiver, address _owner, tuple redeemParams, bytes redeemParamsSignature) returns (tuple tokensRemoved)
renounceOwnership
nonpayablefunction renounceOwnership()
setFeesAccount
nonpayablefunction setFeesAccount(address _value)
setMaxTransfersPerBlock
nonpayablefunction setMaxTransfersPerBlock(uint256 maxTransfers)
setRedemptionFee
nonpayablefunction setRedemptionFee(uint256 _value)
setSafeHarborRedemptions
nonpayablefunction setSafeHarborRedemptions(bool allow)
setSafeLTVThreshold
nonpayablefunction setSafeLTVThreshold(uint256 threshold)
setSharesToAssetRatioThreshold
nonpayablefunction setSharesToAssetRatioThreshold(uint256 threshold)
setSignatureVerificationSigner
nonpayablefunction setSignatureVerificationSigner(address signer)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
FeeAccountUpdated
event FeeAccountUpdated(address actor, address feeAccount)
Initialized
event Initialized(uint8 version)
MaxTransfersPerBlockUpdate
event MaxTransfersPerBlockUpdate(uint256 maxTransfers)
Mint
event Mint((address sender, address owner, (uint256[] amounts, address[] addresses) tokensAdded, uint256 assetsAdded, uint256 shares) mintEvent)
NativeAssetWrap
event NativeAssetWrap(address actor, uint256 amount, bool indexed wrappingToNative)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Redeem
event Redeem((address sender, address receiver, address owner, (uint256[] amounts, address[] addresses) tokensRemoved, uint256 assetsRemoved, uint256 shares) redeemEvent)
RedemptionFee
event RedemptionFee(address actor, address asset, uint256 amount, uint256 feeAmount, uint256 additionalFeeAmount)
RedemptionFeeUpdated
event RedemptionFeeUpdated(address actor, uint256 redemptionFee)
SignatureVerificationSignerUpdate
event SignatureVerificationSignerUpdate(address signer, address updatedBy)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
UpdateSafeLTVThreshold
event UpdateSafeLTVThreshold(address sender, uint256 threshold)
UpdateSharesToAssetsRatioThreshold
event UpdateSharesToAssetsRatioThreshold(address sender, uint256 threshold)
Upgraded
event Upgraded(address indexed implementation)
errors
AccountNotAdmin
error AccountNotAdmin(address)
DeadlineExceeded
error DeadlineExceeded()
EnforcedSafeLTV
error EnforcedSafeLTV(uint256 invalidLTV)
ExceededShareToAssetRatioDeltaThreshold
error ExceededShareToAssetRatioDeltaThreshold()
InvalidERC20Address
error InvalidERC20Address()
InvalidInputs
error InvalidInputs()
InvalidMsgValue
error InvalidMsgValue()
InvalidSignature
error InvalidSignature()
InvalidSignatureLength
error InvalidSignatureLength()
NoSignatureVerificationSignerSet
error NoSignatureVerificationSignerSet()
SafeHarborModeEnabled
error SafeHarborModeEnabled()
TransfersLimitExceeded
error TransfersLimitExceeded()
creation bytecode
0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e7565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051615f316200011f60003960008181610e8e01528181610f180152818161108001528181611105015261158f0152615f316000f3fe6080604052600436106102eb5760003560e01c80637018b08e11610184578063be666a08116100d6578063df881af61161008a578063f2fde38b11610064578063f2fde38b1461086f578063f6b45cfd1461088f578063f8b2cb4f146108a4576102f2565b8063df881af61461080f578063e5ea2dbd1461082f578063ef8b30f71461084f576102f2565b8063c64fca11116100bb578063c64fca1114610788578063dd62ed3e146107a9578063ddb00dfc146107ef576102f2565b8063be666a081461073b578063c29ee25e14610768576102f2565b80638da5cb5b11610138578063a457c2d711610112578063a457c2d7146106ce578063a9059cbb146106ee578063ac9650d81461070e576102f2565b80638da5cb5b1461066757806395d89b41146106855780639cd6f0091461069a576102f2565b8063715018a611610169578063715018a61461061d5780637dbc1df0146106325780638b0a15d714610652576102f2565b80637018b08e146105c757806370a08231146105e7576102f2565b8063313ce5671161023d5780634966528b116101f157806352d1902d116101cb57806352d1902d14610572578063676f774c146105875780636a63cee7146105a7576102f2565b80634966528b146105175780634f1ef28614610537578063500c22bc1461054a576102f2565b806338d52e0f1161022257806338d52e0f146104b757806339509351146104d6578063411557d1146104f6576102f2565b8063313ce567146104705780633659cfe614610497576102f2565b8063095ea7b31161029f5780631a532377116102795780631a5323771461040e57806323b872dd1461042e57806324906f861461044e576102f2565b8063095ea7b3146103b15780630d8e6e2c146103e157806318160ddd146103f9576102f2565b8063025fb662116102d0578063025fb6621461034157806305ca86661461036e57806306fdde031461038f576102f2565b806301038ad1146102f957806301e1d1141461032c576102f2565b366102f257005b6060516080f35b34801561030557600080fd5b50610319610314366004614d77565b6108c4565b6040519081526020015b60405180910390f35b34801561033857600080fd5b506103196108f4565b34801561034d57600080fd5b50610356610ca2565b6040516001600160a01b039091168152602001610323565b34801561037a57600080fd5b5061012f54610356906001600160a01b031681565b34801561039b57600080fd5b506103a4610cd5565b6040516103239190614dfc565b3480156103bd57600080fd5b506103d16103cc366004614e2f565b610d67565b6040519015158152602001610323565b3480156103ed57600080fd5b5060005460ff16610319565b34801561040557600080fd5b50609954610319565b34801561041a57600080fd5b50610319610429366004614e5b565b610d81565b34801561043a57600080fd5b506103d1610449366004614e74565b610dbc565b34801561045a57600080fd5b5061046e610469366004614e5b565b610de2565b005b34801561047c57600080fd5b50610485610e64565b60405160ff9091168152602001610323565b3480156104a357600080fd5b5061046e6104b2366004614eb5565b610e84565b3480156104c357600080fd5b50610130546001600160a01b0316610356565b3480156104e257600080fd5b506103d16104f1366004614e2f565b610fdb565b34801561050257600080fd5b5061012e54610356906001600160a01b031681565b34801561052357600080fd5b5061046e610532366004614eb5565b61101a565b61046e610545366004614f9a565b611076565b61055d610558366004615059565b6111b9565b60408051928352602083019190915201610323565b34801561057e57600080fd5b50610319611582565b34801561059357600080fd5b5061046e6105a23660046150e0565b611647565b3480156105b357600080fd5b506103196105c2366004614e5b565b611684565b3480156105d357600080fd5b5061046e6105e236600461511d565b6116b7565b3480156105f357600080fd5b50610319610602366004614eb5565b6001600160a01b031660009081526097602052604090205490565b34801561062957600080fd5b5061046e611914565b34801561063e57600080fd5b5061046e61064d366004614e5b565b611928565b34801561065e57600080fd5b506103d1611939565b34801561067357600080fd5b506033546001600160a01b0316610356565b34801561069157600080fd5b506103a46119bf565b3480156106a657600080fd5b507f14aa58a89d3f94ea99187ab98e735eb8f742cc801507b0f8968576d3fdc3c8cc54610319565b3480156106da57600080fd5b506103d16106e9366004614e2f565b6119ce565b3480156106fa57600080fd5b506103d1610709366004614e2f565b611a83565b34801561071a57600080fd5b5061072e6107293660046151ef565b611a91565b6040516103239190615264565b34801561074757600080fd5b5061075b6107563660046152c6565b611b7d565b60405161032391906153f8565b34801561077457600080fd5b5061046e610783366004614e5b565b612062565b34801561079457600080fd5b5061012d54610356906001600160a01b031681565b3480156107b557600080fd5b506103196107c436600461540b565b6001600160a01b03918216600090815260986020908152604080832093909416825291909152205490565b3480156107fb57600080fd5b5061046e61080a366004614eb5565b612097565b34801561081b57600080fd5b5061031961082a366004615444565b6120a8565b34801561083b57600080fd5b5061046e61084a366004614e5b565b6120bb565b34801561085b57600080fd5b5061031961086a366004614e5b565b6120f9565b34801561087b57600080fd5b5061046e61088a366004614eb5565b612134565b34801561089b57600080fd5b50610319600181565b3480156108b057600080fd5b506103196108bf366004614eb5565b6121c1565b6000816040516020016108d791906155a5565b604051602081830303815290604052805190602001209050919050565b61012e546040805163312f6b8360e01b815290516000926001600160a01b0316918391839163312f6b839160048083019260209291908290030181865afa158015610943573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109679190615651565b9050600061012e60009054906101000a90046001600160a01b03166001600160a01b0316630479d6446040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e39190615651565b9050600061012e60009054906101000a90046001600160a01b03166001600160a01b031663315deeaa6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5f919061566e565b9050600061012e60009054906101000a90046001600160a01b03166001600160a01b0316636d01875d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adb919061566e565b6040516370a0823160e01b81526001600160a01b0387811660048301529192506000918616906370a0823190602401602060405180830381865afa158015610b27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4b919061566e565b6040516370a0823160e01b81526001600160a01b0388811660048301529192506000918616906370a0823190602401602060405180830381865afa158015610b97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbb919061566e565b61012e54604080517f8d6cb209000000000000000000000000000000000000000000000000000000008152815193945060009384936001600160a01b031692638d6cb20992600480820193918290030181865afa158015610c20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c449190615687565b9092509050610c548482846121cc565b610c5e908b6156c1565b9950610c6a838b6156c1565b99508515610c9657610c7d8682846121cc565b610c87908b6156c1565b9950610c93858b6156d4565b99505b50505050505050505090565b60007f68433f9d83ac21ac7a279e7d087229a9129597a360563c499bb398b5664b27c15b546001600160a01b0316919050565b6060609a8054610ce4906156e7565b80601f0160208091040260200160405190810160405280929190818152602001828054610d10906156e7565b8015610d5d5780601f10610d3257610100808354040283529160200191610d5d565b820191906000526020600020905b815481529060010190602001808311610d4057829003601f168201915b5050505050905090565b600033610d758185856122be565b60019150505b92915050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c016108d7565b600033610dca8582856123fb565b610dd585858561248d565b60019150505b9392505050565b610dea612667565b612710811180610df8575080155b15610e16576040516379a67d5b60e11b815260040160405180910390fd5b6101318190557fdeb9dbe5b2059ee709cbce2d435120228838d8b25d6faba2b7a82d1765804d7a335b604080516001600160a01b03909216825260208201849052015b60405180910390a150565b60008061013054610e7f9190600160a01b900460ff1661571b565b905090565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610f165760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610f4861288c565b6001600160a01b031614610fb35760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610f0d565b610fbc816128b4565b60408051600080825260208201909252610fd8918391906128bc565b50565b3360008181526098602090815260408083206001600160a01b0387168452909152812054909190610d7590829086906110159087906156c1565b6122be565b611022612a61565b61012f80546001600160a01b0319166001600160a01b038316908117909155604080519182523360208301527ff9609f48c525640f20a918156cdb6ca7d8c7e9e7e4939bb1dc8944c5ea07b13a9101610e59565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036111035760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610f0d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661113561288c565b6001600160a01b0316146111a05760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610f0d565b6111a9826128b4565b6111b5828260016128bc565b5050565b6000806111c4611939565b156111e25760405163379917b760e21b815260040160405180910390fd5b84356111ed81612abb565b60008060006111fa6108f4565b60995461012e60009054906101000a90046001600160a01b03166001600160a01b0316634ed2b8ac6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611251573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611275919061566e565b925092509250611283612af5565b61128b612b4e565b6112d36112978a6120a8565b89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612bbd92505050565b6112f16112e360408b018b615734565b6112ec906157ec565b612c5c565b600061131161130360408c018c615734565b61130c906157ec565b612dc3565b9050600061131d6108f4565b905061132882612f31565b61012e54825160208401516040517f5c09967a0000000000000000000000000000000000000000000000000000000081526001600160a01b0390931692635c09967a926113799290916004016158ae565b600060405180830381600087803b15801561139357600080fd5b505af11580156113a7573d6000803e3d6000fd5b505061012e546001600160a01b03169150638a85039690506113cc60608e018e6158d3565b356113da60608f018f6158d3565b6113e89060208101906158e9565b8e80606001906113f891906158d3565b604001356040518463ffffffff1660e01b815260040161141a939291906158ff565b600060405180830381600087803b15801561143457600080fd5b505af1158015611448573d6000803e3d6000fd5b5050505061012e60009054906101000a90046001600160a01b03166001600160a01b031663a53df2e26040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561149d57600080fd5b505af11580156114b1573d6000803e3d6000fd5b50505050806114be6108f4565b6114c891906156d4565b96506114d387612fb5565b97506114df8c89613017565b7fea6d2283017564fe3077751d8472a782667962d7a0aa847e4499a1d1223f77206040518060a001604052806115123390565b6001600160a01b031681526020018e6001600160a01b031681526020018481526020018981526020018a81525060405161154c9190615928565b60405180910390a150506115606001606555565b61156b8383836130df565b611575838361324b565b5050505094509492505050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116225760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610f0d565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b61164f612667565b807fd8e383845db7ecbb6065c22cc5d1320931e4ef39a73fc10e0587d5257ff503795b805460ff191691151591909117905550565b6000610d7b826116b27f14aa58a89d3f94ea99187ab98e735eb8f742cc801507b0f8968576d3fdc3c8cc5490565b613387565b600054610100900460ff16158080156116d75750600054600160ff909116105b806116f15750303b1580156116f1575060005460ff166001145b6117545760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610f0d565b6000805460ff191660011790558015611777576000805461ff0019166101001790555b876001600160a01b0316896001600160a01b0316630479d6446040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e39190615651565b6001600160a01b03161461180a576040516379a67d5b60e11b815260040160405180910390fd5b611816898888856133a0565b61181f83613425565b611827613497565b61183085613500565b8760008061183d83613562565b915091508161184d57601261184f565b805b61013080547fffffffffffffffffffffff00000000000000000000000000000000000000000016600160a01b60ff93909316929092026001600160a01b031916919091176001600160a01b0385161790556101f46101315564e8d4a51000610132556001610135556118c08761366c565b5050508015611909576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b61191c612a61565b611926600061366c565b565b611930612667565b610fd8816136be565b61012e54604080517e1eab8300000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691621eab839160048083019260209291908290030181865afa15801561199b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7f9190615985565b6060609b8054610ce4906156e7565b3360008181526098602090815260408083206001600160a01b038716845290915281205490919083811015611a6b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610f0d565b611a7882868684036122be565b506001949350505050565b600033610d7581858561248d565b6060818067ffffffffffffffff811115611aad57611aad614ed2565b604051908082528060200260200182016040528015611ae057816020015b6060815260200190600190039081611acb5790505b50915060005b81811015611b7557611b5030868684818110611b0457611b046159a2565b9050602002810190611b1691906159b8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061372a92505050565b838281518110611b6257611b626159a2565b6020908102919091010152600101611ae6565b505092915050565b6040805180820190915260608082526020820152611b99611939565b15611bb75760405163379917b760e21b815260040160405180910390fd5b8335611bc281612abb565b6000806000611bcf6108f4565b60995461012e60009054906101000a90046001600160a01b03166001600160a01b0316634ed2b8ac6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4a919061566e565b925092509250611c58612af5565b611c60612b4e565b611ca8611c6c896108c4565b88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612bbd92505050565b611cb061374f565b94506000611cbc6108f4565b61012e549091506001600160a01b031663686f957f611cde60a08c018c6159ff565b35611cec60a08d018d6159ff565b60200135611cfd60a08e018e6159ff565b60400135611d0e60a08f018f6159ff565b611d1c9060608101906158e9565b8e8060a00190611d2c91906159ff565b608001356040518663ffffffff1660e01b8152600401611d50959493929190615a15565b600060405180830381600087803b158015611d6a57600080fd5b505af1158015611d7e573d6000803e3d6000fd5b5050505060005b866020015151811015611ec457600087602001518281518110611daa57611daa6159a2565b602090810291909101015161012e546040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015611dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e23919061566e565b905087600001518281518110611e3b57611e3b6159a2565b6020026020010151811115611e96578751805183908110611e5e57611e5e6159a2565b602002602001015181611e7191906156d4565b8851805184908110611e8557611e856159a2565b602002602001018181525050611ebb565b600088600001518381518110611eae57611eae6159a2565b6020026020010181815250505b50600101611d85565b50600060808a0135611ede60608c013560408d01356156c1565b611ee891906156c1565b9050336001600160a01b038c1614611f0557611f058b33836123fb565b6000611f1560408c0135836156d4565b90508015611f8357611f2f8c611f29610ca2565b836139bc565b6040805133815230602082015280820184905260608d810135908201526080808e01359082015290517f632ab32db4f924366c4cd564eb2be04e8624ebc77ccda5bf0ab709cc5aee578b9181900360a00190a15b611f918c8c604001356139c7565b611f9b8d89613afb565b611fa36108f4565b611fad90846156d4565b92507fe1431d08ed5059493cf3c41e53ba9f7270b0d68a0def64f9880220a12fdd16bb6040518060c00160405280611fe23390565b6001600160a01b031681526020018f6001600160a01b031681526020018e6001600160a01b031681526020018a81526020018581526020018481525060405161202b9190615a4c565b60405180910390a15050506120406001606555565b61204b8383836130df565b612055838361324b565b5050505095945050505050565b61206a612667565b6101328190557f4a1d82c0187fa542af202f039cadf137e625e5d39bbcfbdb6633f0d007a28ce533610e3f565b61209f612667565b610fd881613c2e565b6000816040516020016108d79190615b4f565b6120c3612667565b6101358190556040518181527f9208de066946f0bfb1d3fcdb43a3590fed3ffeb924e12f42dcada9317aa5b66690602001610e59565b6000610d7b6121066108f4565b6121119060016156c1565b61211d6000600a615d51565b60995461212a91906156c1565b8491906000613cc9565b61213c612a61565b6001600160a01b0381166121b85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610f0d565b610fd88161366c565b6000610d7b82613d26565b6000808060001985870985870292508281108382030391505080600003612206578382816121fc576121fc615d60565b0492505050610ddb565b8084116122555760405162461bcd60e51b815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f7700000000000000000000006044820152606401610f0d565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6001600160a01b0383166123395760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610f0d565b6001600160a01b03821661239a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610f0d565b6001600160a01b0383811660008181526098602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152609860209081526040808320938616835292905220546000198114612487578181101561247a5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610f0d565b61248784848484036122be565b50505050565b6001600160a01b0383166125095760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610f0d565b6001600160a01b03821661256b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610f0d565b6001600160a01b038316600090815260976020526040902054818110156125fa5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610f0d565b6001600160a01b0380851660008181526097602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061265a9086815260200190565b60405180910390a3612487565b61012e54604080517f194fe0ef00000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169182916391d1485491839163194fe0ef91600480830192602092919082900301816000875af11580156126d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fa919061566e565b336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa158015612745573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127699190615985565b1580156128535750806001600160a01b03166391d14854826001600160a01b031663a217fddf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e2919061566e565b336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa15801561282d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128519190615985565b155b15610fd8576040517f3ba76d11000000000000000000000000000000000000000000000000000000008152336004820152602401610f0d565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610cc6565b610fd8612a61565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156128f4576128ef83613dc1565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561294e575060408051601f3d908101601f1916820190925261294b9181019061566e565b60015b6129c05760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608401610f0d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612a555760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152608401610f0d565b506128ef838383613e7f565b6033546001600160a01b031633146119265760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610f0d565b80421115610fd8576040517f559895a300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260655403612b475760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610f0d565b6002606555565b610134544314612b645743610134556000610133555b60016101336000828254612b7891906156c1565b909155505061013554610133541115611926576040517fef9b428900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61012f546001600160a01b0316612c00576040517fe9b23dce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612c0b83610d81565b61012f54909150612c26906001600160a01b03168284613ea4565b6128ef576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020810151518151518114612c84576040516379a67d5b60e11b815260040160405180910390fd5b60001960005b82811015612d495773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b031684602001518281518110612cc657612cc66159a2565b60200260200101516001600160a01b031603612ce757905060018101612c8a565b612d41333086600001518481518110612d0257612d026159a2565b602002602001015187602001518581518110612d2057612d206159a2565b60200260200101516001600160a01b0316613f41909392919063ffffffff16565b600101612c8a565b5060001981148015612d5a57503415155b15612d7857604051631841b4e160e01b815260040160405180910390fd5b6000198114158015612da557508251805182908110612d9957612d996159a2565b60200260200101513414155b156128ef57604051631841b4e160e01b815260040160405180910390fd5b604080518082019091526060808252602082015260001960005b836020015151811015612e445773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b031684602001518281518110612e1e57612e1e6159a2565b60200260200101516001600160a01b031603612e3c57809150612e44565b600101612ddd565b506000198114612f2a57612e7483600001518281518110612e6757612e676159a2565b6020026020010151613f99565b61012d54602084015180516001600160a01b039092169183908110612e9b57612e9b6159a2565b60200260200101906001600160a01b031690816001600160a01b031681525050600115157fdef0dc72021788040d6ab985a42aa3d5efe5a52d77485682afa2fc1525df6b7f3085600001518481518110612ef757612ef76159a2565b6020026020010151604051612f219291906001600160a01b03929092168252602082015260400190565b60405180910390a25b5090919050565b61012e548151516001600160a01b03909116906000905b8082101561248757612faa308486600001518581518110612f6b57612f6b6159a2565b602002602001015187602001518681518110612f8957612f896159a2565b60200260200101516001600160a01b0316613ffe909392919063ffffffff16565b600190910190612f48565b600080612fc06108f4565b90506000838211612fd2576000612fdc565b612fdc84836156d4565b905061300f612fed6000600a615d51565b609954612ffa91906156c1565b6130058360016156c1565b8691906000613cc9565b949350505050565b6001600160a01b03821661306d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610f0d565b806099600082825461307f91906156c1565b90915550506001600160a01b0382166000818152609760209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001606555565b600080600080610131546130f16108f4565b60995461012e60009054906101000a90046001600160a01b03166001600160a01b0316634ed2b8ac6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061316c919061566e565b93509350935093506000876000148015613184575086155b9050600084158015613194575083155b9050818061319f5750805b156131af57505050505050505050565b50600090506131c185876127106121cc565b905060006131da6131d283896156c1565b6127106140d0565b905060008783106131ec5760006131f6565b6131f683896156d4565b90508184118061320557508084105b1561323f576040517fdc5954fc00000000000000000000000000000000000000000000000000000000815260048101859052602401610f0d565b50505050505050505050565b6000806132566108f4565b6099549150915082600014801561326d5750600081115b801561328e5750806132816000600a615d51565b61328b9084615d76565b14155b156132ac5760405163a79d53cf60e01b815260040160405180910390fd5b80831480156132bb5750818414155b156132d95760405163a79d53cf60e01b815260040160405180910390fd5b82156124875760006132eb84866140df565b905060008060008487106133125761330385886156d4565b61330d878a6156d4565b613326565b61331c87866156d4565b61332689886156d4565b91509150600061333683836140df565b905061334285826140d0565b61334c8683614114565b61335691906156d4565b93505050506101325481111561337f5760405163a79d53cf60e01b815260040160405180910390fd5b505050505050565b60006127106133968385615d76565b610ddb9190615d8d565b600054610100900460ff166133f95760405162461bcd60e51b815260206004820152602b6024820152600080516020615ede83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610f0d565b613401614123565b613409614184565b61341383836141e5565b61341c81614248565b6124878461435a565b600054610100900460ff1661347e5760405162461bcd60e51b815260206004820152602b6024820152600080516020615ede83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610f0d565b6134866143f7565b61348e614123565b610fd881614450565b600054610100900460ff166134f05760405162461bcd60e51b815260206004820152602b6024820152600080516020615ede83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610f0d565b6134f86143f7565b6119266143f7565b600054610100900460ff166135595760405162461bcd60e51b815260206004820152602b6024820152600080516020615ede83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610f0d565b610fd8816144cc565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f313ce5670000000000000000000000000000000000000000000000000000000017905290516000918291829182916001600160a01b038716916135d791615daf565b600060405180830381855afa9150503d8060008114613612576040519150601f19603f3d011682016040523d82523d6000602084013e613617565b606091505b509150915081801561362b57506020815110155b1561365f57600081806020019051810190613646919061566e565b905060ff811161365d576001969095509350505050565b505b5060009485945092505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61271081106136e0576040516379a67d5b60e11b815260040160405180910390fd5b807f14aa58a89d3f94ea99187ab98e735eb8f742cc801507b0f8968576d3fdc3c8cc557ffd299d8f08e0fbf1ccad155dda5e11040f0a90f1b4d7f2acff52316738f4c1db33610e3f565b6060610ddb8383604051806060016040528060278152602001615efe60279139614548565b604080518082018252606080825260208083018290528351600280825292810185529293908301908036833750506040805160028082526060820183529092509060208301908036833750505060208381019190915290825261012e546040805163312f6b8360e01b815290516001600160a01b039092169263312f6b83926004808401938290030181865afa1580156137ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138119190615651565b8160200151600081518110613828576138286159a2565b6001600160a01b0392831660209182029290920181019190915261012e54604080517f0479d64400000000000000000000000000000000000000000000000000000000815290519190931692630479d6449260048083019391928290030181865afa15801561389b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138bf9190615651565b81602001516001815181106138d6576138d66159a2565b6001600160a01b03909216602092830291909101820152810151516000905b808210156139b75782602001518281518110613913576139136159a2565b602090810291909101015161012e546040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015613968573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061398c919061566e565b83518051849081106139a0576139a06159a2565b6020026020010181815250508160010191506138f5565b505090565b6128ef83838361248d565b6001600160a01b038216613a275760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610f0d565b6001600160a01b03821660009081526097602052604090205481811015613a9b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610f0d565b6001600160a01b03831660008181526097602090815260408083208686039055609980548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b60005b8160200151518110156128ef5761012e54825180516001600160a01b039092169162f714ce919084908110613b3557613b356159a2565b602002602001015184602001518481518110613b5357613b536159a2565b60200260200101516040518363ffffffff1660e01b8152600401613b8a9291909182526001600160a01b0316602082015260400190565b6020604051808303816000875af1158015613ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bcd9190615985565b50613c268383600001518381518110613be857613be86159a2565b602002602001015184602001518481518110613c0657613c066159a2565b60200260200101516001600160a01b03166145c09092919063ffffffff16565b600101613afe565b6001600160a01b038116613c55576040516379a67d5b60e11b815260040160405180910390fd5b7f68433f9d83ac21ac7a279e7d087229a9129597a360563c499bb398b5664b27c180546001600160a01b0319166001600160a01b0383169081179091556040805133815260208101929092527f63f8f609737c2dc01ff1d619040ccd6cb6d0e1e7b04f5271d959deefa09ef54b9101610e59565b600080613cd78686866121cc565b90506001836002811115613ced57613ced615dc1565b148015613d0a575060008480613d0557613d05615d60565b868809115b15613d1d57613d1a6001826156c1565b90505b95945050505050565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03831601613d54575047919050565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613d98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7b919061566e565b919050565b6001600160a01b0381163b613e3e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610f0d565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b613e8883614610565b600082511180613e955750805b156128ef57612487838361372a565b600080600080613eb385614650565b925092509250866001600160a01b031660018783868660405160008152602001604052604051613eff949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa158015613f21573d6000803e3d6000fd5b505050602060405103516001600160a01b03161493505050509392505050565b8373eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03821601613f80576040516376fe282b60e11b815260040160405180910390fd5b8115613f9257613f92858585856146ae565b5050505050565b61012d60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015613fea57600080fd5b505af115801561337f573d6000803e3d6000fd5b8373eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b0382160161403d576040516376fe282b60e11b815260040160405180910390fd5b604051636eb1769f60e11b81526001600160a01b03858116600483015284811660248301526000919087169063dd62ed3e90604401602060405180830381865afa15801561408f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140b3919061566e565b11156140c5576140c585846000614747565b613f92858484614863565b6000818310612f2a5781610ddb565b60008215610d7b57610ddb6ec097ce7bc90715b34b9f100000000061410c85670de0b6b3a7640000615d76565b8491906121cc565b6000818311612f2a5781610ddb565b600054610100900460ff1661417c5760405162461bcd60e51b815260206004820152602b6024820152600080516020615ede83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610f0d565b611926614910565b600054610100900460ff166141dd5760405162461bcd60e51b815260206004820152602b6024820152600080516020615ede83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610f0d565b611926614972565b600054610100900460ff1661423e5760405162461bcd60e51b815260206004820152602b6024820152600080516020615ede83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610f0d565b6111b582826149cb565b600054610100900460ff16158080156142685750600054600160ff909116105b806142825750303b158015614282575060005460ff166001145b6142e55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610f0d565b6000805460ff191660011790558015614308576000805461ff0019166101001790555b61431182614a3d565b80156111b5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600054610100900460ff166143b35760405162461bcd60e51b815260206004820152602b6024820152600080516020615ede83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610f0d565b61012e80546001600160a01b0319166001600160a01b03831617905560007fd8e383845db7ecbb6065c22cc5d1320931e4ef39a73fc10e0587d5257ff50379611672565b600054610100900460ff166119265760405162461bcd60e51b815260206004820152602b6024820152600080516020615ede83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610f0d565b600054610100900460ff166144a95760405162461bcd60e51b815260206004820152602b6024820152600080516020615ede83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610f0d565b61012f80546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166145255760405162461bcd60e51b815260206004820152602b6024820152600080516020615ede83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610f0d565b61012d80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080856001600160a01b0316856040516145659190615daf565b600060405180830381855af49150503d80600081146145a0576040519150601f19603f3d011682016040523d82523d6000602084013e6145a5565b606091505b50915091506145b686838387614b06565b9695505050505050565b8273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038216016145ff576040516376fe282b60e11b815260040160405180910390fd5b811561248757612487848484614b7f565b61461981613dc1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60008060008351604114614690576040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505060208101516040820151606090920151909260009190911a90565b6040516001600160a01b03808516602483015283166044820152606481018290526124879085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b031990931692909217909152614bc8565b8015806147c15750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801561479b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147bf919061566e565b155b6148335760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610f0d565b6040516001600160a01b0383166024820152604481018290526128ef90849063095ea7b360e01b906064016146fb565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa1580156148b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148d7919061566e565b90506124878463095ea7b360e01b856148f086866156c1565b6040516001600160a01b03909216602483015260448201526064016146fb565b600054610100900460ff166149695760405162461bcd60e51b815260206004820152602b6024820152600080516020615ede83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610f0d565b6119263361366c565b600054610100900460ff166130d85760405162461bcd60e51b815260206004820152602b6024820152600080516020615ede83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610f0d565b600054610100900460ff16614a245760405162461bcd60e51b815260206004820152602b6024820152600080516020615ede83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610f0d565b609a614a308382615e1d565b50609b6128ef8282615e1d565b600054610100900460ff1615808015614a5d5750600054600160ff909116105b80614a775750303b158015614a77575060005460ff166001145b614ada5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610f0d565b6000805460ff191660011790558015614afd576000805461ff0019166101001790555b61431182613c2e565b60608315614b75578251600003614b6e576001600160a01b0385163b614b6e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610f0d565b508161300f565b61300f8383614cb0565b6040516001600160a01b0383166024820152604481018290526128ef9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016146fb565b6000614c1d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614cda9092919063ffffffff16565b9050805160001480614c3e575080806020019051810190614c3e9190615985565b6128ef5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610f0d565b815115614cc05781518083602001fd5b8060405162461bcd60e51b8152600401610f0d9190614dfc565b606061300f848460008585600080866001600160a01b03168587604051614d019190615daf565b60006040518083038185875af1925050503d8060008114614d3e576040519150601f19603f3d011682016040523d82523d6000602084013e614d43565b606091505b5091509150614d5487838387614b06565b979650505050505050565b600060c08284031215614d7157600080fd5b50919050565b600060208284031215614d8957600080fd5b813567ffffffffffffffff811115614da057600080fd5b61300f84828501614d5f565b60005b83811015614dc7578181015183820152602001614daf565b50506000910152565b60008151808452614de8816020860160208601614dac565b601f01601f19169290920160200192915050565b602081526000610ddb6020830184614dd0565b6001600160a01b0381168114610fd857600080fd5b8035613dbc81614e0f565b60008060408385031215614e4257600080fd5b8235614e4d81614e0f565b946020939093013593505050565b600060208284031215614e6d57600080fd5b5035919050565b600080600060608486031215614e8957600080fd5b8335614e9481614e0f565b92506020840135614ea481614e0f565b929592945050506040919091013590565b600060208284031215614ec757600080fd5b8135610ddb81614e0f565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715614f0b57614f0b614ed2565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614f3a57614f3a614ed2565b604052919050565b600067ffffffffffffffff831115614f5c57614f5c614ed2565b614f6f601f8401601f1916602001614f11565b9050828152838383011115614f8357600080fd5b828260208301376000602084830101529392505050565b60008060408385031215614fad57600080fd5b8235614fb881614e0f565b9150602083013567ffffffffffffffff811115614fd457600080fd5b8301601f81018513614fe557600080fd5b614ff485823560208401614f42565b9150509250929050565b600060808284031215614d7157600080fd5b60008083601f84011261502257600080fd5b50813567ffffffffffffffff81111561503a57600080fd5b60208301915083602082850101111561505257600080fd5b9250929050565b6000806000806060858703121561506f57600080fd5b843561507a81614e0f565b9350602085013567ffffffffffffffff8082111561509757600080fd5b6150a388838901614ffe565b945060408701359150808211156150b957600080fd5b506150c687828801615010565b95989497509550505050565b8015158114610fd857600080fd5b6000602082840312156150f257600080fd5b8135610ddb816150d2565b600082601f83011261510e57600080fd5b610ddb83833560208501614f42565b600080600080600080600080610100898b03121561513a57600080fd5b883561514581614e0f565b9750602089013561515581614e0f565b9650604089013567ffffffffffffffff8082111561517257600080fd5b61517e8c838d016150fd565b975060608b013591508082111561519457600080fd5b506151a18b828c016150fd565b95505060808901356151b281614e0f565b935060a08901356151c281614e0f565b925060c08901356151d281614e0f565b91506151e060e08a01614e24565b90509295985092959890939650565b6000806020838503121561520257600080fd5b823567ffffffffffffffff8082111561521a57600080fd5b818501915085601f83011261522e57600080fd5b81358181111561523d57600080fd5b8660208260051b850101111561525257600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156152b957603f198886030184526152a7858351614dd0565b9450928501929085019060010161528b565b5092979650505050505050565b6000806000806000608086880312156152de57600080fd5b85356152e981614e0f565b945060208601356152f981614e0f565b9350604086013567ffffffffffffffff8082111561531657600080fd5b61532289838a01614d5f565b9450606088013591508082111561533857600080fd5b5061534588828901615010565b969995985093965092949392505050565b600081518084526020808501945080840160005b838110156153865781518752958201959082019060010161536a565b509495945050505050565b600081518084526020808501945080840160005b838110156153865781516001600160a01b0316875295820195908201906001016153a5565b60008151604084526153df6040850182615356565b905060208301518482036020860152613d1d8282615391565b602081526000610ddb60208301846153ca565b6000806040838503121561541e57600080fd5b823561542981614e0f565b9150602083013561543981614e0f565b809150509250929050565b60006020828403121561545657600080fd5b813567ffffffffffffffff81111561546d57600080fd5b61300f84828501614ffe565b6000823560de1983360301811261548f57600080fd5b90910192915050565b6000808335601e198436030181126154af57600080fd5b830160208101925035905067ffffffffffffffff8111156154cf57600080fd5b80360382131561505257600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000813561551481614e0f565b6001600160a01b038082168552602084013560208601526040840135915061553b82614e0f565b166040840152606082810135908401526080820135615559816150d2565b1515608084015261556d60a0830183615498565b60e060a086015261558260e0860182846154de565b91505061559260c0840184615498565b85830360c08701526145b68382846154de565b6020815281356020820152602082013560408201526040820135606082015260608201356080820152608082013560a0820152600060a0830135609e198436030181126155f157600080fd5b60c0838101528301803560e0840152602081013561010084015260408101356101208401526156236060820182615479565b60a0610140850152615639610180850182615507565b90506080820135610160850152809250505092915050565b60006020828403121561566357600080fd5b8151610ddb81614e0f565b60006020828403121561568057600080fd5b5051919050565b6000806040838503121561569a57600080fd5b505080516020909101519092909150565b634e487b7160e01b600052601160045260246000fd5b80820180821115610d7b57610d7b6156ab565b81810381811115610d7b57610d7b6156ab565b600181811c908216806156fb57607f821691505b602082108103614d7157634e487b7160e01b600052602260045260246000fd5b60ff8181168382160190811115610d7b57610d7b6156ab565b60008235603e1983360301811261574a57600080fd5b9190910192915050565b600067ffffffffffffffff82111561576e5761576e614ed2565b5060051b60200190565b600082601f83011261578957600080fd5b8135602061579e61579983615754565b614f11565b82815260059290921b840181019181810190868411156157bd57600080fd5b8286015b848110156157e15780356157d481614e0f565b83529183019183016157c1565b509695505050505050565b6000604082360312156157fe57600080fd5b615806614ee8565b823567ffffffffffffffff8082111561581e57600080fd5b9084019036601f83011261583157600080fd5b8135602061584161579983615754565b82815260059290921b8401810191818101903684111561586057600080fd5b948201945b8386101561587e57853582529482019490820190615865565b8652508681013593508284111561589457600080fd5b6158a036858901615778565b908501525091949350505050565b6040815260006158c16040830185615356565b8281036020840152613d1d8185615391565b60008235605e1983360301811261574a57600080fd5b6000823560de1983360301811261574a57600080fd5b8381526060602082015260006159186060830185615507565b9050826040830152949350505050565b6020815260006001600160a01b0380845116602084015280602085015116604084015250604083015160a0606084015261596560c08401826153ca565b905060608401516080840152608084015160a08401528091505092915050565b60006020828403121561599757600080fd5b8151610ddb816150d2565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126159cf57600080fd5b83018035915067ffffffffffffffff8211156159ea57600080fd5b60200191503681900382131561505257600080fd5b60008235609e1983360301811261574a57600080fd5b85815284602082015283604082015260a060608201526000615a3a60a0830185615507565b90508260808301529695505050505050565b6020815260006001600160a01b0380845116602084015280602085015116604084015280604085015116606084015250606083015160c06080840152615a9560e08401826153ca565b9050608084015160a084015260a084015160c08401528091505092915050565b6000808335601e19843603018112615acc57600080fd5b830160208101925035905067ffffffffffffffff811115615aec57600080fd5b8060051b360382131561505257600080fd5b60008235605e1983360301811261548f57600080fd5b803582526000615b276020830183615479565b60606020850152615b3b6060850182615507565b604093840135949093019390935250919050565b600060208083528335818401528084013560408401526040840135603e19853603018112615b7c57600080fd5b608060608501528401615b8f8180615ab5565b604060a08701528060e08701526101007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115615bcc57600080fd5b8160051b915081838289013790860191508101615beb83850184615ab5565b87840360600160c089015291829052909250906000908290610120015b84831015615c3b5783359150615c1d82614e0f565b6001600160a01b038216815292850192600192909201918501615c08565b615c4860608a018a615afe565b888203601f190160808a01529550615c608187615b14565b9998505050505050505050565b600181815b80851115615ca8578160001904821115615c8e57615c8e6156ab565b80851615615c9b57918102915b93841c9390800290615c72565b509250929050565b600082615cbf57506001610d7b565b81615ccc57506000610d7b565b8160018114615ce25760028114615cec57615d08565b6001915050610d7b565b60ff841115615cfd57615cfd6156ab565b50506001821b610d7b565b5060208310610133831016604e8410600b8410161715615d2b575081810a610d7b565b615d358383615c6d565b8060001904821115615d4957615d496156ab565b029392505050565b6000610ddb60ff841683615cb0565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610d7b57610d7b6156ab565b600082615daa57634e487b7160e01b600052601260045260246000fd5b500490565b6000825161574a818460208701614dac565b634e487b7160e01b600052602160045260246000fd5b601f8211156128ef57600081815260208120601f850160051c81016020861015615dfe5750805b601f850160051c820191505b8181101561337f57828155600101615e0a565b815167ffffffffffffffff811115615e3757615e37614ed2565b615e4b81615e4584546156e7565b84615dd7565b602080601f831160018114615e805760008415615e685750858301515b600019600386901b1c1916600185901b17855561337f565b600085815260208120601f198616915b82811015615eaf57888601518255948401946001909101908401615e90565b5085821015615ecd5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fe496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000812000a