0 txs
3.2k calls
constructor
constructor()
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
assetAt
viewfunction assetAt(uint256 i) view returns (address)
assetCount
viewfunction assetCount() view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
computeMintAmt
viewfunction computeMintAmt(uint256 underlyingAmtIn, uint256 feePerc) view returns (uint256 vaultNoteAmtMint)
computeRedemptionAmts
viewfunction computeRedemptionAmts(uint256 vaultNoteAmtRedeemed, uint256 feePerc) view returns (tuple[] returnedTokens)
decimals
viewfunction decimals() view returns (uint8)
feePolicy
viewfunction feePolicy() view returns (address)
getTVL
viewfunction getTVL() view returns (uint256)
getVaultAssetValue
viewfunction getVaultAssetValue(address token) view returns (uint256)
isVaultAsset
viewfunction isVaultAsset(address token) view returns (bool)
keeper
viewfunction keeper() view returns (address)
lastRebalanceTimestampSec
viewfunction lastRebalanceTimestampSec() view returns (uint256)
MAX_DEPLOYED_COUNT
viewfunction MAX_DEPLOYED_COUNT() view returns (uint8)
minDeploymentAmt
viewfunction minDeploymentAmt() view returns (uint256)
name
viewfunction name() view returns (string)
ONE
viewfunction ONE() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
PERC_DECIMALS
viewfunction PERC_DECIMALS() view returns (uint8)
perp
viewfunction perp() view returns (address)
reservedUnderlyingBal
viewfunction reservedUnderlyingBal() view returns (uint256)
reservedUnderlyingPerc
viewfunction reservedUnderlyingPerc() view returns (uint256)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
TRANCHE_DUST_AMT
viewfunction TRANCHE_DUST_AMT() view returns (uint256)
underlying
viewfunction underlying() view returns (address)
vaultAssetBalance
viewfunction vaultAssetBalance(address token) view returns (uint256)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
burn
nonpayablefunction burn(uint256 amount)
burnFrom
nonpayablefunction burnFrom(address account, uint256 amount)
computePerpToUnderlyingSwapAmt
nonpayablefunction computePerpToUnderlyingSwapAmt(uint256 perpAmtIn) returns (uint256, uint256, tuple)
computeUnderlyingToPerpSwapAmt
nonpayablefunction computeUnderlyingToPerpSwapAmt(uint256 underlyingAmtIn) returns (uint256, uint256, tuple)
decreaseAllowance
nonpayablefunction decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)
deploy
nonpayablefunction deploy()
deposit
nonpayablefunction deposit(uint256 underlyingAmtIn) returns (uint256)
deviationRatio
nonpayablefunction deviationRatio() returns (uint256)
increaseAllowance
nonpayablefunction increaseAllowance(address spender, uint256 addedValue) returns (bool)
init
nonpayablefunction init(string name, string symbol, address perp_, address feePolicy_)
mint2
nonpayablefunction mint2(uint256 underlyingAmtIn) returns (uint256 perpAmt, uint256 vaultNoteAmt)
pause
nonpayablefunction pause()
pauseRebalance
nonpayablefunction pauseRebalance()
rebalance
nonpayablefunction rebalance()
recover
nonpayablefunction recover()
recover
nonpayablefunction recover(address token)
recoverAndRedeploy
nonpayablefunction recoverAndRedeploy()
redeem
nonpayablefunction redeem(uint256 vaultNoteAmt) returns (tuple[])
redeem2
nonpayablefunction redeem2(uint256 perpAmtAvailable, uint256 vaultNoteAmtAvailable) returns (uint256 perpAmt, uint256 vaultNoteAmt, tuple[] returnedTokens)
renounceOwnership
nonpayablefunction renounceOwnership()
swapPerpsForUnderlying
nonpayablefunction swapPerpsForUnderlying(uint256 perpAmtIn) returns (uint256)
swapUnderlyingForPerps
nonpayablefunction swapUnderlyingForPerps(uint256 underlyingAmtIn) returns (uint256)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferERC20
nonpayablefunction transferERC20(address token, address to, uint256 amount)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
unpauseRebalance
nonpayablefunction unpauseRebalance()
updateFeePolicy
nonpayablefunction updateFeePolicy(address feePolicy_)
updateKeeper
nonpayablefunction updateKeeper(address keeper_)
updateLiquidityLimits
nonpayablefunction updateLiquidityLimits(uint256 minDeploymentAmt_, uint256 reservedUnderlyingBal_, uint256 reservedUnderlyingPerc_)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
AssetSynced
event AssetSynced(address token, uint256 balance)
Initialized
event Initialized(uint8 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Unpaused
event Unpaused(address account)
errors
DeployedCountOverLimit
error DeployedCountOverLimit()
InsufficientDeployment
error InsufficientDeployment()
InsufficientLiquidity
error InsufficientLiquidity()
LastRebalanceTooRecent
error LastRebalanceTooRecent()
OutOfBounds
error OutOfBounds()
UnacceptableSwap
error UnacceptableSwap()
UnacceptableTrancheLength
error UnacceptableTrancheLength()
UnauthorizedCall
error UnauthorizedCall()
UnauthorizedTransferOut
error UnauthorizedTransferOut()
UnexpectedAsset
error UnexpectedAsset()
UnexpectedDecimals
error UnexpectedDecimals()
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615fec80620000f46000396000f3fe608060405234801561001057600080fd5b50600436106102e45760003560e01c8063775c300c11610189578063a9059cbb116100df578063a9059cbb14610606578063aa9239f514610619578063aced16611461062c578063b6b55f2514610640578063bfa4c00c14610653578063c215bc4d14610667578063c2ee3a0814610671578063cc03c2e314610679578063ce74602414610683578063db006a751461068b578063dd62ed3e1461069e578063e1a2209f146106b1578063e36894f9146106c4578063eafe7a74146106d7578063f2fde38b146106df57600080fd5b8063775c300c1461051757806379cc67901461051f5780637c0ca111146105325780637d7c2a1c14610552578063825890381461055a5780638456cb591461056e5780638da5cb5b1461057657806393334d2e1461057e57806395d89b4114610588578063977902171461059057806397b3fcaa146105a35780639db5dbe4146105ab578063a2b29206146105be578063a457c2d7146105e0578063a8f4cd51146105f357600080fd5b80633aa180881161023e5780633aa18088146103f85780633f280af8146104205780633f45e08f1461042a5780633f4ba83a1461043457806342966c681461043c5780635c975abb1461044f57806362b232a41461045a57806369f6f92c1461046d5780636df71ab3146104805780636f307dc3146104a257806370a08231146104c3578063715018a6146104ec57806372617687146104f45780637375c5d6146104fc57806375d5179f1461050f57600080fd5b806306fdde03146102e957806308e9ff2314610307578063095ea7b3146103115780630cd865ec146103345780630e07f8541461034757806318160ddd1461035a5780631cd66a951461036c57806323b872dd1461037f5780632ad537e314610392578063306cf684146103a5578063313ce567146103ad57806333bce7f7146103c25780633434dc4e146103d557806339509351146103dd57806339697825146103f0575b600080fd5b6102f16106f2565b6040516102fe91906154f5565b60405180910390f35b61030f610784565b005b61032461031f36600461553d565b6107b7565b60405190151581526020016102fe565b61030f610342366004615569565b6107d1565b61030f610355366004615663565b6108a9565b6035545b6040519081526020016102fe565b61035e61037a3660046156eb565b610ab5565b61032461038d366004615704565b610c81565b61035e6103a0366004615569565b610ca7565b61030f610df5565b60125b60405160ff90911681526020016102fe565b61035e6103d0366004615745565b610e2f565b61035e610e9b565b6103246103eb36600461553d565b610f4f565b6103b0602f81565b61040b6104063660046156eb565b610f71565b604080519283526020830191909152016102fe565b61035e6101365481565b61035e6101305481565b61030f6111bd565b61030f61044a3660046156eb565b6111f3565b60c95460ff16610324565b610324610468366004615569565b611200565b61030f61047b366004615569565b611227565b61049361048e3660046156eb565b6112da565b6040516102fe93929190615767565b61012d546104b6906001600160a01b031681565b6040516102fe919061578a565b61035e6104d1366004615569565b6001600160a01b031660009081526033602052604090205490565b61030f611522565b61030f611534565b61035e61050a366004615569565b611544565b6103b0600881565b61030f6115c7565b61030f61052d36600461553d565b611782565b610545610540366004615745565b61179b565b6040516102fe91906157ed565b61030f611abc565b610132546104b6906001600160a01b031681565b61030f611bba565b6104b6611bee565b61035e6101345481565b6102f1611bfd565b61030f61059e366004615569565b611c0c565b61035e611c37565b61030f6105b9366004615704565b611e11565b6105d16105cc366004615745565b611e85565b6040516102fe93929190615800565b6103246105ee36600461553d565b612333565b61030f61060136600461581f565b6123b9565b61032461061436600461553d565b6123f6565b6104b66106273660046156eb565b612404565b610133546104b6906001600160a01b031681565b61035e61064e3660046156eb565b612461565b610131546104b6906001600160a01b031681565b61035e6101355481565b61035e61269c565b61035e6298968081565b61030f6126ab565b6105456106993660046156eb565b612989565b61035e6106ac36600461584b565b612c73565b6104936106bf3660046156eb565b612c9e565b61035e6106d23660046156eb565b612ddf565b61035e613030565b61030f6106ed366004615569565b61304d565b60606036805461070190615884565b80601f016020809104026020016040519081016040528092919081815260200182805461072d90615884565b801561077a5780601f1061074f5761010080835404028352916020019161077a565b820191906000526020600020905b81548152906001019060200180831161075d57829003601f168201915b5050505050905090565b610133546001600160a01b031633146107b057604051637bf6a16f60e01b815260040160405180910390fd5b4261013655565b6000336107c58185856130c3565b60019150505b92915050565b600260fb54036107fc5760405162461bcd60e51b81526004016107f3906158be565b60405180910390fd5b600260fb556108096131e7565b61081561012e8261322d565b1561083f576108238161324f565b61012d54610839906001600160a01b0316613485565b506108a1565b610131546001600160a01b039081169082168190036108885761086181613535565b61086a81613485565b5061012d54610881906001600160a01b0316613485565b50506108a1565b604051632c88119960e11b815260040160405180910390fd5b50600160fb55565b600054610100900460ff16158080156108c95750600054600160ff909116105b806108e35750303b1580156108e3575060005460ff166001145b6109465760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107f3565b6000805460ff191660011790558015610969576000805461ff0019166101001790555b610973858561367a565b61097b6136ab565b6109836136d2565b61098b613701565b610993613730565b826001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f591906158f5565b61012d80546001600160a01b03199081166001600160a01b03938416179091556101318054909116918516919091179055610a2f82611227565b610a3a61059e611bee565b600061013081905561013481905561013555426101365561012d54610a67906001600160a01b0316613485565b508015610aae576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6000600260fb5403610ad95760405162461bcd60e51b81526004016107f3906158be565b600260fb55610ae66131e7565b6101315461012d546040516370a0823160e01b81526001600160a01b03928316929091169060009082906370a0823190610b2490309060040161578a565b602060405180830381865afa158015610b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b659190615912565b90506000610b7286612c9e565b5090915050801580610b82575085155b15610ba05760405163173825e960e21b815260040160405180910390fd5b610bb56001600160a01b03851633308961375f565b610bbe84613535565b610bd26001600160a01b03841633836137b7565b6040516370a0823160e01b81526000906001600160a01b038516906370a0823190610c0190309060040161578a565b602060405180830381865afa158015610c1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c429190615912565b905082811015610c655760405163bb55fd2760e01b815260040160405180910390fd5b610c6e84613485565b50909450505050505b600160fb55919050565b600033610c8f8582856137d6565b610c9a85858561384a565b60019150505b9392505050565b600080826001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401610cd6919061578a565b602060405180830381865afa158015610cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d179190615912565b61012d549091506001600160a01b0390811690841603610d375792915050565b610d4361012e8461322d565b15610dec5782629896808211610d5a576000610de4565b61012d5460405163bb23660160e01b815273e0028c40c8a09449852ea4d2e9aa4d25895f285f9163bb23660191610da39185916001600160a01b0390911690879060040161592b565b602060405180830381865af4158015610dc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de49190615912565b949350505050565b50600092915050565b610133546001600160a01b03163314610e2157604051637bf6a16f60e01b815260040160405180910390fd5b6001600160401b0361013655565b600080610e3b60355490565b905060008111610e5757610e52620f424085615965565b610e6b565b610e6b84610e63611c37565b839190613a06565b9150610de483610e7d6008600a615a60565b610e879190615a6f565b610e936008600a615a60565b849190613a06565b6000600260fb5403610ebf5760405162461bcd60e51b81526004016107f3906158be565b600260fb5561013254610131546001600160a01b039182169163e55a0edf91610ee89116613ab5565b6040518263ffffffff1660e01b8152600401610f049190615a82565b602060405180830381865afa158015610f21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f459190615912565b9050600160fb5590565b6000336107c5818585610f628383612c73565b610f6c9190615a99565b6130c3565b600080600260fb5403610f965760405162461bcd60e51b81526004016107f3906158be565b600260fb55610fa36131e7565b6101315461012d546001600160a01b0391821691166000610fc383613ab5565b9050600061106c610fd66008600a615a60565b61013260009054906101000a90046001600160a01b03166001600160a01b031663d0b976d16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561102a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104e9190615912565b61105a6008600a615a60565b6110649190615a99565b899190613a06565b9050600061107a8289615a6f565b90506110eb856001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e19190615912565b8451849190613a06565b96506110f8816000610e2f565b955061110f6001600160a01b03851633308b61375f565b61118385858560000151886001600160a01b0316638b5393826040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611159573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117d9190615912565b8b613b41565b6111976001600160a01b03861633896137b7565b6111a13387613e81565b6111aa84613485565b505050505050600160fb81905550915091565b610133546001600160a01b031633146111e957604051637bf6a16f60e01b815260040160405180910390fd5b6111f1613f4e565b565b6111fd3382613f9a565b50565b61012d546000906001600160a01b03838116911614806107cb57506107cb61012e8361322d565b61122f6140d6565b600860ff16816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611272573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112969190615aac565b60ff16146112b75760405163c51d798560e01b815260040160405180910390fd5b61013280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806112e5615474565b610131546001600160a01b031660006112fd82613ab5565b90506000611370836001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113669190615912565b8351899190613a06565b6101325460405163e55a0edf60e01b81529192506000916001600160a01b0390911690635bb899d690829063e55a0edf906113af908890600401615a82565b602060405180830381865afa1580156113cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f09190615912565b61013260009054906101000a90046001600160a01b03166001600160a01b031663e55a0edf60405180604001604052808e8a600001516114309190615a99565b815260200189602001518152506040518263ffffffff1660e01b81526004016114599190615a82565b602060405180830381865afa158015611476573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149a9190615912565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401602060405180830381865afa1580156114db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ff9190615912565b905061151181610e7d6008600a615a60565b986000985092965091945050505050565b61152a6140d6565b6111f16000614135565b61153c6126ab565b6111f16115c7565b600061154f82611200565b61155a5760006107cb565b6040516370a0823160e01b81526001600160a01b038316906370a082319061158690309060040161578a565b602060405180830381865afa1580156115a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107cb9190615912565b600260fb54036115e95760405162461bcd60e51b81526004016107f3906158be565b600260fb556115f66131e7565b61012d54610131546040516370a0823160e01b81526001600160a01b03928316929091169060009083906370a082319061163490309060040161578a565b602060405180830381865afa158015611651573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116759190615912565b90506000611689611684611c37565b614187565b9050600081831161169b5760006116a5565b6116a58284615a6f565b90506101305481116116ca5760405163167bb86960e11b815260040160405180910390fd5b611738846001600160a01b0316638fb69c4b6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561170d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173191906158f5565b86836141b2565b61174284866141e0565b61175f5760405163167bb86960e11b815260040160405180910390fd5b61012d54611775906001600160a01b0316613485565b5050600160fb5550505050565b61178d8233836137d6565b6117978282613f9a565b5050565b606060006117a860355490565b905060006117b761012e61447b565b6117c2906001615acf565b90508060ff166001600160401b038111156117df576117df615586565b60405190808252806020026020018201604052801561182457816020015b60408051808201909152600080825260208201528152602001906001900390816117fd5790505b5061012d546040805180820182526001600160a01b0390921680835290516370a0823160e01b81529295509160208201906118bb908990879086906370a082319061187390309060040161578a565b602060405180830381865afa158015611890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b49190615912565b9190613a06565b815250846000815181106118d1576118d1615ae8565b6020908102919091010152611930856118ec6008600a615a60565b6118f69190615a6f565b6119026008600a615a60565b8660008151811061191557611915615ae8565b602002602001015160200151613a069092919063ffffffff16565b8460008151811061194357611943615ae8565b602090810291909101810151015260015b8260ff168160ff161015611ab257600061197e611972600184615afe565b61012e9060ff16614485565b90506040518060400160405280826001600160a01b031681526020016119cb8a88856001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611873919061578a565b815250868360ff16815181106119e3576119e3615ae8565b6020908102919091010152611a29876119fe6008600a615a60565b611a089190615a6f565b611a146008600a615a60565b888560ff168151811061191557611915615ae8565b868360ff1681518110611a3e57611a3e615ae8565b6020026020010151602001818152505062989680868360ff1681518110611a6757611a67615ae8565b6020026020010151602001511015611aa1576000868360ff1681518110611a9057611a90615ae8565b602002602001015160200181815250505b50611aab81615b17565b9050611954565b5050505092915050565b600260fb5403611ade5760405162461bcd60e51b81526004016107f3906158be565b600260fb55611aeb6131e7565b61013260009054906101000a90046001600160a01b03166001600160a01b031663ead5f6306040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b639190615912565b61013654611b719190615a99565b4211611b9057604051630a3b3f0960e41b815260040160405180910390fd5b6101315461012d54611bae916001600160a01b039081169116614491565b4261013655600160fb55565b610133546001600160a01b03163314611be657604051637bf6a16f60e01b815260040160405180910390fd5b6111f16148de565b6097546001600160a01b031690565b60606037805461070190615884565b611c146140d6565b61013380546001600160a01b0319166001600160a01b0392909216919091179055565b61012d546040516370a0823160e01b815260009182916001600160a01b03909116906370a0823190611c6d90309060040161578a565b602060405180830381865afa158015611c8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cae9190615912565b90506000611cbd61012e61447b565b905060005b8160ff168160ff161015611e09576000611ce161012e60ff8416614485565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611d11919061578a565b602060405180830381865afa158015611d2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d529190615912565b905062989680811115611df65761012d5460405163bb23660160e01b815273e0028c40c8a09449852ea4d2e9aa4d25895f285f9163bb23660191611da89186916001600160a01b0390911690869060040161592b565b602060405180830381865af4158015611dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de99190615912565b611df39086615a99565b94505b505080611e0290615b17565b9050611cc2565b509092915050565b611e196140d6565b600260fb5403611e3b5760405162461bcd60e51b81526004016107f3906158be565b600260fb55611e4983611200565b15611e67576040516328071e2f60e11b815260040160405180910390fd5b611e7b6001600160a01b03841683836137b7565b5050600160fb5550565b6000806060600260fb5403611eac5760405162461bcd60e51b81526004016107f3906158be565b600260fb55611eb96131e7565b61013154604080516318160ddd60e01b815290516001600160a01b039092169160009183916318160ddd916004808201926020929091908290030181865afa158015611f09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2d9190615912565b90506000611f3a60355490565b8896509050611f4a818784613a06565b945086851115611f6557869450611f62828683613a06565b95505b50506000611f7484600061179b565b9050611f803385613f9a565b611f956001600160a01b03831633308861375f565b6101315460405163db006a7560e01b8152600481018790526000916001600160a01b03169063db006a75906024016000604051808303816000875af1158015611fe2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261200a9190810190615b59565b905060018251825161201c9190615a99565b6120269190615a6f565b6001600160401b0381111561203d5761203d615586565b60405190808252806020026020018201604052801561208257816020015b604080518082019091526000808252602082015281526020019060019003908161205b5790505b5093506040518060400160405280826000815181106120a3576120a3615ae8565b6020026020010151600001516001600160a01b03168152602001836000815181106120d0576120d0615ae8565b602002602001015160200151836000815181106120ef576120ef615ae8565b6020026020010151602001516121059190615a99565b8152508460008151811061211b5761211b615ae8565b6020026020010181905250612180338560008151811061213d5761213d615ae8565b6020026020010151602001518660008151811061215c5761215c615ae8565b6020026020010151600001516001600160a01b03166137b79092919063ffffffff16565b60015b815160ff168160ff16101561221b57818160ff16815181106121a7576121a7615ae8565b6020026020010151858260ff16815181106121c4576121c4615ae8565b602002602001018190525061220933868360ff16815181106121e8576121e8615ae8565b602002602001015160200151848460ff168151811061215c5761215c615ae8565b8061221381615b17565b915050612183565b5060015b825160ff168160ff1610156122f857828160ff168151811061224357612243615ae8565b602002602001015185835160018461225b9190615afe565b60ff166122689190615a99565b8151811061227857612278615ae8565b60200260200101819052506122bd33848360ff168151811061229c5761229c615ae8565b602002602001015160200151858460ff168151811061215c5761215c615ae8565b6122e6838260ff16815181106122d5576122d5615ae8565b60200260200101516000015161491b565b806122f081615b17565b91505061221f565b506123208460008151811061230f5761230f615ae8565b602002602001015160000151613485565b50505050600160fb819055509250925092565b600033816123418286612c73565b9050838110156123a15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107f3565b6123ae82868684036130c3565b506001949350505050565b610133546001600160a01b031633146123e557604051637bf6a16f60e01b815260040160405180910390fd5b610130929092556101345561013555565b6000336107c581858561384a565b60008160000361242057505061012d546001600160a01b031690565b61242b61012e61447b565b8211612448576107cb61243f600184615a6f565b61012e90614485565b604051632d0483c560e21b815260040160405180910390fd5b6000600260fb54036124855760405162461bcd60e51b81526004016107f3906158be565b600260fb556124926131e7565b610131546000906124ab906001600160a01b0316613ab5565b6101325460405163e55a0edf60e01b81529192506000916001600160a01b0390911690635bb899d690829063e55a0edf906124ea908790600401615a82565b602060405180830381865afa158015612507573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252b9190615912565b6101325460408051808201909152865181526020808801516001600160a01b039093169263e55a0edf9291820190612564908c90615a99565b8152506040518263ffffffff1660e01b81526004016125839190615a82565b602060405180830381865afa1580156125a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c49190615912565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401602060405180830381865afa158015612605573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126299190615912565b905060006126378583610e2f565b9050841580612644575080155b156126555760009350505050610c77565b61012d5461266e906001600160a01b031633308861375f565b6126783382613e81565b61012d5461268e906001600160a01b0316613485565b50600160fb55949350505050565b6126a86008600a615a60565b81565b600260fb54036126cd5760405162461bcd60e51b81526004016107f3906158be565b600260fb556126da6131e7565b60006126e761012e61447b565b905060005b8160ff168160ff16101561293557600061270b61012e60ff8416614485565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161273b919061578a565b602060405180830381865afa158015612758573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061277c9190615912565b90506000811161278d575050612925565b6000826001600160a01b03166364c9ec6f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127f191906158f5565b90506000612807826001600160a01b03166149a0565b9050600061281d836001600160a01b0316614b33565b116128925760405163284ff44560e11b815273e0028c40c8a09449852ea4d2e9aa4d25895f285f9063509fe88a9061285d9085908890889060040161592b565b60006040518083038186803b15801561287557600080fd5b505af4158015612889573d6000803e3d6000fd5b50505050612920565b8051516001600160a01b0385811691161480156128b157506298968083115b1561292057604051631d4dd53d60e31b815273e0028c40c8a09449852ea4d2e9aa4d25895f285f9063ea6ea9e8906128ef9085908590600401615c11565b60006040518083038186803b15801561290757600080fd5b505af415801561291b573d6000803e3d6000fd5b505050505b505050505b61292e81615b17565b90506126ec565b50805b60ff81161561296957612957612952611972600184615afe565b61491b565b8061296181615c88565b915050612938565b5061012d54612980906001600160a01b0316613485565b5050600160fb55565b6060600260fb54036129ad5760405162461bcd60e51b81526004016107f3906158be565b600260fb556129ba6131e7565b60008211612a075760408051600080825260208201909252906129ff565b60408051808201909152600080825260208201528152602001906001900390816129d85790505b509050610c77565b61013154600090612a20906001600160a01b0316613ab5565b90506000612a2d60355490565b6101325460405163e55a0edf60e01b81529192506000916001600160a01b0390911690635bb899d690829063e55a0edf90612a6c908890600401615a82565b602060405180830381865afa158015612a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aad9190615912565b6101325460408051808201909152875181526001600160a01b039091169063e55a0edf9060208101612aee612ae28d8b615a6f565b60208c0151908b613a06565b8152506040518263ffffffff1660e01b8152600401612b0d9190615a82565b602060405180830381865afa158015612b2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b4e9190615912565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401602060405180830381865afa158015612b8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb39190615912565b90506000612bc1868361179b565b9050612bcd3387613f9a565b805160005b8160ff168160ff161015610c6e57828160ff1681518110612bf557612bf5615ae8565b60200260200101516020015160000315612c6357612c2233848360ff168151811061229c5761229c615ae8565b8060ff16600003612c4b57612c45838260ff168151811061230f5761230f615ae8565b50612c63565b612c63838260ff16815181106122d5576122d5615ae8565b612c6c81615b17565b9050612bd2565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b600080612ca9615474565b610131546001600160a01b03166000612cc182613ab5565b90506000612d2f8260000151846001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d0b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110649190615912565b6101325460405163e55a0edf60e01b81529192506000916001600160a01b0390911690635bb899d690829063e55a0edf90612d6e908890600401615a82565b602060405180830381865afa158015612d8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612daf9190615912565b610132546040805180820190915287516001600160a01b039092169163e55a0edf91908190611430908a90615a6f565b6000600260fb5403612e035760405162461bcd60e51b81526004016107f3906158be565b600260fb55612e106131e7565b6101315461012d546040516370a0823160e01b81526001600160a01b03928316929091169060009082906370a0823190612e4e90309060040161578a565b602060405180830381865afa158015612e6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e8f9190615912565b9050600080612e9d876112da565b9250509150600082111580612eb0575086155b15612ece5760405163173825e960e21b815260040160405180910390fd5b612ee36001600160a01b03851633308a61375f565b612f5785858360000151886001600160a01b0316638b5393826040518163ffffffff1660e01b81526004016020604051808303816000875af1158015612f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f519190615912565b86613b41565b612f6b6001600160a01b03861633846137b7565b6040516370a0823160e01b81526000906001600160a01b038616906370a0823190612f9a90309060040161578a565b602060405180830381865afa158015612fb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fdb9190615912565b90508381108015612ff85750612ff48260200151614187565b8111155b156130165760405163bb55fd2760e01b815260040160405180910390fd5b61301f85613485565b5050600160fb555095945050505050565b600061303d61012e61447b565b613048906001615a99565b905090565b6130556140d6565b6001600160a01b0381166130ba5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107f3565b6111fd81614135565b6001600160a01b0383166131255760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107f3565b6001600160a01b0382166131865760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107f3565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60c95460ff16156111f15760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016107f3565b6001600160a01b03811660009081526001830160205260408120541515610ca0565b6040516370a0823160e01b81526000906001600160a01b038316906370a082319061327e90309060040161578a565b602060405180830381865afa15801561329b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132bf9190615912565b9050600081116132d2576117978261491b565b6000826001600160a01b03166364c9ec6f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613312573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061333691906158f5565b9050600061334c826001600160a01b0316614b33565b116133ca5760405163284ff44560e11b815273e0028c40c8a09449852ea4d2e9aa4d25895f285f9063509fe88a9061338c9084908790879060040161592b565b60006040518083038186803b1580156133a457600080fd5b505af41580156133b8573d6000803e3d6000fd5b505050506133c58361491b565b505050565b6298968082111561347c5760006133e9826001600160a01b03166149a0565b604051631d4dd53d60e31b815290915073e0028c40c8a09449852ea4d2e9aa4d25895f285f9063ea6ea9e8906134259085908590600401615c11565b60006040518083038186803b15801561343d57600080fd5b505af4158015613451573d6000803e3d6000fd5b505082516134699250905060005b602002015161491b565b805161347690600161345f565b50505050565b6133c58361491b565b6040516370a0823160e01b81526000906001600160a01b038316906370a08231906134b490309060040161578a565b602060405180830381865afa1580156134d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134f59190615912565b90507f3498084e435368f22f5e58d4957c351579c10be5ab20874cc78c9d0e28fa04098282604051613528929190615ca5565b60405180910390a1919050565b6040516370a0823160e01b81526000906001600160a01b038316906370a082319061356490309060040161578a565b602060405180830381865afa158015613581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135a59190615912565b9050600081116135b3575050565b60405163db006a7560e01b8152600481018290526000906001600160a01b0384169063db006a75906024016000604051808303816000875af11580156135fd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526136259190810190615b59565b805190915060015b8160ff168160ff161015610aae576000838260ff168151811061365257613652615ae8565b60200260200101516000015190506136698161324f565b5061367381615b17565b905061362d565b600054610100900460ff166136a15760405162461bcd60e51b81526004016107f390615cbe565b6117978282614bb2565b600054610100900460ff166111f15760405162461bcd60e51b81526004016107f390615cbe565b600054610100900460ff166136f95760405162461bcd60e51b81526004016107f390615cbe565b6111f1614bf2565b600054610100900460ff166137285760405162461bcd60e51b81526004016107f390615cbe565b6111f1614c22565b600054610100900460ff166137575760405162461bcd60e51b81526004016107f390615cbe565b6111f1614c55565b613476846323b872dd60e01b8585856040516024016137809392919061592b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614c83565b6133c58363a9059cbb60e01b8484604051602401613780929190615ca5565b60006137e28484612c73565b90506000198114613476578181101561383d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107f3565b61347684848484036130c3565b6001600160a01b0383166138ae5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107f3565b6001600160a01b0382166139105760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107f3565b6001600160a01b038316600090815260336020526040902054818110156139885760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107f3565b6001600160a01b038085166000908152603360205260408082208585039055918516815290812080548492906139bf908490615a99565b92505081905550826001600160a01b0316846001600160a01b0316600080516020615f97833981519152846040516139f991815260200190565b60405180910390a3613476565b6000808060001985870985870292508281108382030391505080600003613a4057838281613a3657613a36615d09565b0492505050610ca0565b808411613a4c57600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b613abd615474565b6040518060400160405280836001600160a01b03166397b3fcaa6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015613b08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b2c9190615912565b8152602001613b39611c37565b905292915050565b6000856001600160a01b0316638fb69c4b6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015613b83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ba791906158f5565b90506000866001600160a01b031663332d83d56040518163ffffffff1660e01b81526004016020604051808303816000875af1158015613beb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c0f91906158f5565b9050600080613dd86040518060c001604052808981526020018b6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c8a9190615912565b81526020018a6001600160a01b03166370a08231886040518263ffffffff1660e01b8152600401613cbb919061578a565b602060405180830381865afa158015613cd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cfc9190615912565b8152602001866001600160a01b031663fc7b9c186040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d639190615912565b8152602001856001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613da6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dca9190615912565b815260200188905286614d55565b91509150613de78489846141b2565b613dfb6001600160a01b0384168a83614e0e565b6040516311f9fbc960e21b81526001600160a01b038a16906347e7ef2490613e299086908590600401615ca5565b6020604051808303816000875af1158015613e48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e6c9190615912565b50613e768361491b565b505050505050505050565b6001600160a01b038216613ed75760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107f3565b8060356000828254613ee99190615a99565b90915550506001600160a01b03821660009081526033602052604081208054839290613f16908490615a99565b90915550506040518181526001600160a01b03831690600090600080516020615f978339815191529060200160405180910390a35050565b613f56614ea0565b60c9805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b604051613f90919061578a565b60405180910390a1565b6001600160a01b038216613ffa5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016107f3565b6001600160a01b0382166000908152603360205260409020548181101561406e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016107f3565b6001600160a01b038316600090815260336020526040812083830390556035805484929061409d908490615a6f565b90915550506040518281526000906001600160a01b03851690600080516020615f978339815191529060200160405180910390a3505050565b336140df611bee565b6001600160a01b0316146111f15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f3565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006107cb610134546141ad610135546008600a6141a59190615a60565b869190613a06565b614ee9565b60006141c86001600160a01b0385168484614f00565b90506141d581600061345f565b61347681600161345f565b600080836001600160a01b031663364d22fc6040518163ffffffff1660e01b81526004016000604051808303816000875af1158015614223573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261424b9190810190615d1f565b9050600080856001600160a01b031663332d83d56040518163ffffffff1660e01b81526004016020604051808303816000875af1158015614290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142b491906158f5565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016142e4919061578a565b602060405180830381865afa158015614301573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143259190615912565b905061433b6001600160a01b0383168883614e0e565b835160005b8160ff168160ff161080156143555750600083115b15614465576000868260ff168151811061437157614371615ae8565b6020026020010151905060008a6001600160a01b0316632bf8f1a58784886040518463ffffffff1660e01b81526004016143ad9392919061592b565b60408051808303816000875af11580156143cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143ef9190615dad565b80519091506143ff575050614455565b896001600160a01b0316888460ff168151811061441e5761441e615ae8565b60200260200101516001600160a01b03161461443d5761443d8261324f565b602081015161444c9086615a6f565b94506001965050505b61445e81615b17565b9050614340565b5061446f8361324f565b50919695505050505050565b60006107cb825490565b6000610ca08383614f8d565b604051630ad0753560e11b81526001600160a01b038316906315a0ea6a906144bd90309060040161578a565b600060405180830381600087803b1580156144d757600080fd5b505af11580156144eb573d6000803e3d6000fd5b505050506144f882613535565b600061450383613ab5565b6101325460405163cb826e4d60e01b81529192506000916001600160a01b039091169063cb826e4d9061453a908590600401615a82565b602060405180830381865afa158015614557573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061457b9190615912565b905060008112156145fc57836001600160a01b031663f41dd7df61459e83614fb7565b6040518263ffffffff1660e01b81526004016145bc91815260200190565b600060405180830381600087803b1580156145d657600080fd5b505af11580156145ea573d6000803e3d6000fd5b505050506145f784613535565b614749565b6000811315614749576000614677856001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614648573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061466c9190615912565b84516118b485614fce565b90506146ed85858560000151886001600160a01b0316638b5393826040518163ffffffff1660e01b81526004016020604051808303816000875af11580156146c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146e79190615912565b85613b41565b604051630852cd8d60e31b8152600481018290526001600160a01b038616906342966c6890602401600060405180830381600087803b15801561472f57600080fd5b505af1158015614743573d6000803e3d6000fd5b50505050505b6101325460408051632d91602f60e01b815290516000926001600160a01b031691632d91602f9160048083019260209291908290030181865afa158015614794573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147b89190615912565b905080156148c357610132546040805163850a150160e01b815290516000926001600160a01b03169163850a15019160048083019260209291908290030181865afa15801561480b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061482f91906158f5565b6101315460405163078aa91160e51b81529192506001600160a01b03169063f1552220906148639084908690600401615ca5565b600060405180830381600087803b15801561487d57600080fd5b505af1158015614891573d6000803e3d6000fd5b505050506148c1816148bc6148a560355490565b856148b26008600a615a60565b6141a59190615a6f565b613e81565b505b6148cc85613485565b506148d684613485565b505050505050565b6148e66131e7565b60c9805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613f833390565b600061492682613485565b9050600061493661012e8461322d565b9050600082118015614946575080155b156149845761495761012e84615020565b50602f61496561012e61447b565b11156133c557604051633d816dad60e01b815260040160405180910390fd5b8115801561498f5750805b156133c55761347661012e84615035565b6149a861548e565b816001600160a01b03166359eb82246040518163ffffffff1660e01b8152600401602060405180830381865afa1580156149e6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a0a9190615912565b600214614a2a5760405163673f20ed60e11b815260040160405180910390fd5b6040516313612cb160e11b8152600060048201526001600160a01b038316906326c25962906024016040805180830381865afa158015614a6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a929190615ddf565b82516020840151600060200201919091526001600160a01b0391821690526040516313612cb160e11b815260016004820152908316906326c25962906024016040805180830381865afa158015614aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b119190615ddf565b82516020808501518101929092526001600160a01b0392909216910152919050565b600080826001600160a01b031663d59624b46040518163ffffffff1660e01b8152600401602060405180830381865afa158015614b74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b989190615912565b9050428111614ba8576000610ca0565b610ca04282615a6f565b600054610100900460ff16614bd95760405162461bcd60e51b81526004016107f390615cbe565b6036614be58382615e53565b5060376133c58282615e53565b600054610100900460ff16614c195760405162461bcd60e51b81526004016107f390615cbe565b6111f133614135565b600054610100900460ff16614c495760405162461bcd60e51b81526004016107f390615cbe565b60c9805460ff19169055565b600054610100900460ff16614c7c5760405162461bcd60e51b81526004016107f390615cbe565b600160fb55565b6000614cd8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661504a9092919063ffffffff16565b8051909150156133c55780806020019051810190614cf69190615f12565b6133c55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107f3565b600080600080856020015111614d6b5783614d7f565b84516020860151614d7f9186916001615059565b90506000614d95866080015187604001516150b6565b90506000866080015111614da95781614dbc565b6080860151614dbc908390836001615059565b9150600080876060015111614dd15782614de8565b60408701516060880151614de89185916001615059565b60a0880151909150614e019082906103e8906001615059565b9792965091945050505050565b604051636eb1769f60e11b81526000906001600160a01b0385169063dd62ed3e90614e3f9030908790600401615f34565b602060405180830381865afa158015614e5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e809190615912565b905081811015613476576134766001600160a01b038516846000196150c5565b60c95460ff166111f15760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016107f3565b600081831015614ef95781610ca0565b5090919050565b614f086154b3565b6000614f13856149a0565b9050614f296001600160a01b0385168685614e0e565b60405163b6b55f2560e01b8152600481018490526001600160a01b0386169063b6b55f2590602401600060405180830381600087803b158015614f6b57600080fd5b505af1158015614f7f573d6000803e3d6000fd5b505091519695505050505050565b6000826000018281548110614fa457614fa4615ae8565b9060005260206000200154905092915050565b600080821215614fca57816000036107cb565b5090565b600080821215614fca5760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f73697469766560448201526064016107f3565b6000610ca0836001600160a01b0384166151c8565b6000610ca0836001600160a01b038416615217565b6060610de4848460008561530a565b600080615067868686613a06565b9050600183600281111561507d5761507d615f4e565b14801561509a57506000848061509557615095615d09565b868809115b156150ad576150aa600182615a99565b90505b95945050505050565b6000818310614ef95781610ca0565b80158061513e5750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e906150fb9030908690600401615f34565b602060405180830381865afa158015615118573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061513c9190615912565b155b6151a95760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b60648201526084016107f3565b6133c58363095ea7b360e01b8484604051602401613780929190615ca5565b600081815260018301602052604081205461520f575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556107cb565b5060006107cb565b6000818152600183016020526040812054801561530057600061523b600183615a6f565b855490915060009061524f90600190615a6f565b90508181146152b457600086600001828154811061526f5761526f615ae8565b906000526020600020015490508087600001848154811061529257615292615ae8565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806152c5576152c5615f64565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506107cb565b60009150506107cb565b60608247101561536b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016107f3565b6001600160a01b0385163b6153c25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107f3565b600080866001600160a01b031685876040516153de9190615f7a565b60006040518083038185875af1925050503d806000811461541b576040519150601f19603f3d011682016040523d82523d6000602084013e615420565b606091505b509150915061543082828661543b565b979650505050505050565b6060831561544a575081610ca0565b82511561545a5782518084602001fd5b8160405162461bcd60e51b81526004016107f391906154f5565b604051806040016040528060008152602001600081525090565b60405180604001604052806154a16154b3565b81526020016154ae6154b3565b905290565b60405180604001604052806002906020820280368337509192915050565b60005b838110156154ec5781810151838201526020016154d4565b50506000910152565b60208152600082518060208401526155148160408501602087016154d1565b601f01601f19169190910160400192915050565b6001600160a01b03811681146111fd57600080fd5b6000806040838503121561555057600080fd5b823561555b81615528565b946020939093013593505050565b60006020828403121561557b57600080fd5b8135610ca081615528565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156155be576155be615586565b60405290565b604051601f8201601f191681016001600160401b03811182821017156155ec576155ec615586565b604052919050565b600082601f83011261560557600080fd5b81356001600160401b0381111561561e5761561e615586565b615631601f8201601f19166020016155c4565b81815284602083860101111561564657600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561567957600080fd5b84356001600160401b038082111561569057600080fd5b61569c888389016155f4565b955060208701359150808211156156b257600080fd5b506156bf878288016155f4565b93505060408501356156d081615528565b915060608501356156e081615528565b939692955090935050565b6000602082840312156156fd57600080fd5b5035919050565b60008060006060848603121561571957600080fd5b833561572481615528565b9250602084013561573481615528565b929592945050506040919091013590565b6000806040838503121561575857600080fd5b50508035926020909101359150565b838152602080820184905282516040830152820151606082015260808101610de4565b6001600160a01b0391909116815260200190565b600081518084526020808501945080840160005b838110156157e257815180516001600160a01b0316885283015183880152604090960195908201906001016157b2565b509495945050505050565b602081526000610ca0602083018461579e565b8381528260208201526060604082015260006150ad606083018461579e565b60008060006060848603121561583457600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561585e57600080fd5b823561586981615528565b9150602083013561587981615528565b809150509250929050565b600181811c9082168061589857607f821691505b6020821081036158b857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60006020828403121561590757600080fd5b8151610ca081615528565b60006020828403121561592457600080fd5b5051919050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176107cb576107cb61594f565b600181815b808511156159b757816000190482111561599d5761599d61594f565b808516156159aa57918102915b93841c9390800290615981565b509250929050565b6000826159ce575060016107cb565b816159db575060006107cb565b81600181146159f157600281146159fb57615a17565b60019150506107cb565b60ff841115615a0c57615a0c61594f565b50506001821b6107cb565b5060208310610133831016604e8410600b8410161715615a3a575081810a6107cb565b615a44838361597c565b8060001904821115615a5857615a5861594f565b029392505050565b6000610ca060ff8416836159bf565b818103818111156107cb576107cb61594f565b8151815260208083015190820152604081016107cb565b808201808211156107cb576107cb61594f565b600060208284031215615abe57600080fd5b815160ff81168114610ca057600080fd5b60ff81811683821601908111156107cb576107cb61594f565b634e487b7160e01b600052603260045260246000fd5b60ff82811682821603908111156107cb576107cb61594f565b600060ff821660ff8103615b2d57615b2d61594f565b60010192915050565b60006001600160401b03821115615b4f57615b4f615586565b5060051b60200190565b60006020808385031215615b6c57600080fd5b82516001600160401b03811115615b8257600080fd5b8301601f81018513615b9357600080fd5b8051615ba6615ba182615b36565b6155c4565b81815260069190911b82018301908381019087831115615bc557600080fd5b928401925b828410156154305760408489031215615be35760008081fd5b615beb61559c565b8451615bf681615528565b81528486015186820152825260409093019290840190615bca565b6001600160a01b038381168252825160a08301919060209060008286015b6002821015615c505782518516815291830191600191909101908301615c2f565b5050508085015191506060840160005b6002811015615c7d57835182529282019290820190600101615c60565b505050509392505050565b600060ff821680615c9b57615c9b61594f565b6000190192915050565b6001600160a01b03929092168252602082015260400190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60006020808385031215615d3257600080fd5b82516001600160401b03811115615d4857600080fd5b8301601f81018513615d5957600080fd5b8051615d67615ba182615b36565b81815260059190911b82018301908381019087831115615d8657600080fd5b928401925b82841015615430578351615d9e81615528565b82529284019290840190615d8b565b600060408284031215615dbf57600080fd5b615dc761559c565b82518152602083015160208201528091505092915050565b60008060408385031215615df257600080fd5b8251615dfd81615528565b6020939093015192949293505050565b601f8211156133c557600081815260208120601f850160051c81016020861015615e345750805b601f850160051c820191505b818110156148d657828155600101615e40565b81516001600160401b03811115615e6c57615e6c615586565b615e8081615e7a8454615884565b84615e0d565b602080601f831160018114615eb55760008415615e9d5750858301515b600019600386901b1c1916600185901b1785556148d6565b600085815260208120601f198616915b82811015615ee457888601518255948401946001909101908401615ec5565b5085821015615f025787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215615f2457600080fd5b81518015158114610ca057600080fd5b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60008251615f8c8184602087016154d1565b919091019291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a1ea120cfd9406878e72198e85d1c3d0766d3af7bc6adc66276fce7d85d003d364736f6c63430008140033