0 txs
1 call
constructor
constructor(address _initialRescuer, address _initialExecutor, string _strategyName, address _treasuryReservesVault, address _gnosisSafeWallet, address _circuitBreakerProxy)
functions
apiVersion
viewfunction apiVersion() view returns (string)
assets
viewfunction assets(uint256) view returns (address)
circuitBreakerProxy
viewfunction circuitBreakerProxy() view returns (address)
executor
viewfunction executor() view returns (address)
explicitFunctionAccess
viewfunction explicitFunctionAccess(address, bytes4) view returns (bool)
getAssets
viewfunction getAssets() view returns (address[])
gnosisSafeWallet
viewfunction gnosisSafeWallet() view returns (address)
inRescueMode
viewfunction inRescueMode() view returns (bool)
latestAssetBalances
viewfunction latestAssetBalances() view returns (tuple[] assetBalances)
manualAdjustments
viewfunction manualAdjustments() view returns (tuple[] adjustments)
rescuer
viewfunction rescuer() view returns (address)
strategyName
viewfunction strategyName() view returns (string)
strategyVersion
purefunction strategyVersion() pure returns (string)
treasuryReservesVault
viewfunction treasuryReservesVault() view returns (address)
acceptExecutor
nonpayablefunction acceptExecutor()
acceptRescuer
nonpayablefunction acceptRescuer()
automatedShutdown
nonpayablefunction automatedShutdown(bytes shutdownParamsData)
borrow
nonpayablefunction borrow(address token, uint256 amount)
borrowMax
nonpayablefunction borrowMax(address token) returns (uint256 borrowedAmount)
checkpointAssetBalances
nonpayablefunction checkpointAssetBalances() returns (tuple[])
debtCeilingUpdated
nonpayablefunction debtCeilingUpdated(address token, uint256 newDebtCeiling)
populateShutdownData
nonpayablefunction populateShutdownData(bytes populateParamsData) returns (bytes shutdownParamsData)
proposeNewExecutor
nonpayablefunction proposeNewExecutor(address account)
proposeNewRescuer
nonpayablefunction proposeNewRescuer(address account)
recoverToGnosis
nonpayablefunction recoverToGnosis(address token, uint256 amount)
recoverToken
nonpayablefunction recoverToken(address token, address to, uint256 amount)
repay
nonpayablefunction repay(address token, uint256 amount)
repayAll
nonpayablefunction repayAll(address token) returns (uint256 repaidAmount)
setAssets
nonpayablefunction setAssets(address[] _assets)
setExplicitAccess
nonpayablefunction setExplicitAccess(address allowedCaller, tuple[] access)
setManualAdjustments
nonpayablefunction setManualAdjustments(tuple[] adjustments)
setRescueMode
nonpayablefunction setRescueMode(bool value)
setTokenAllowance
nonpayablefunction setTokenAllowance(address token, address spender, uint256 amount)
setTreasuryReservesVault
nonpayablefunction setTreasuryReservesVault(address _trv)
events
AssetBalancesCheckpoint
event AssetBalancesCheckpoint((address asset, uint256 balance)[] assetBalances)
AssetsSet
event AssetsSet(address[] _assets)
Borrow
event Borrow(address indexed token, uint256 amount)
ExplicitAccessSet
event ExplicitAccessSet(address indexed account, bytes4 indexed fnSelector, bool indexed value)
ManualAdjustmentsSet
event ManualAdjustmentsSet((address asset, int256 delta)[] adjustments)
NewExecutorAccepted
event NewExecutorAccepted(address indexed oldExecutor, address indexed newExecutor)
NewExecutorProposed
event NewExecutorProposed(address indexed oldExecutor, address indexed oldProposedExecutor, address indexed newProposedExecutor)
NewRescuerAccepted
event NewRescuerAccepted(address indexed oldRescuer, address indexed newRescuer)
NewRescuerProposed
event NewRescuerProposed(address indexed oldRescuer, address indexed oldProposedRescuer, address indexed newProposedRescuer)
Repay
event Repay(address indexed token, uint256 amount)
RescueModeSet
event RescueModeSet(bool indexed value)
Shutdown
event Shutdown()
TokenAllowanceSet
event TokenAllowanceSet(address token, address spender, uint256 amount)
TreasuryReservesVaultSet
event TreasuryReservesVaultSet(address indexed trv)
errors
InvalidAccess
error InvalidAccess()
InvalidAddress
error InvalidAddress()
InvalidVersion
error InvalidVersion(string expected, string actual)
OnlyTreasuryReserveVault
error OnlyTreasuryReserveVault(address caller)
Unimplemented
error Unimplemented()
creation bytecode
0x60c06040523480156200001157600080fd5b50604051620037bf380380620037bf83398101604081905262000034916200015f565b8585858583836001600160a01b038216620000625760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0381166200008a5760405163e6c4247b60e01b815260040160405180910390fd5b816001600160a01b0316816001600160a01b031603620000bd5760405163e6c4247b60e01b815260040160405180910390fd5b600080546001600160a01b039384166001600160a01b031991821617909155600180549290931691161790556005620000f783826200031f565b50600680546001600160a01b0319166001600160a01b039283161790559485166080525050501660a05250620003eb92505050565b80516001600160a01b03811681146200014457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c087890312156200017957600080fd5b62000184876200012c565b95506020620001958189016200012c565b60408901519096506001600160401b0380821115620001b357600080fd5b818a0191508a601f830112620001c857600080fd5b815181811115620001dd57620001dd62000149565b604051601f8201601f19908116603f0116810190838211818310171562000208576200020862000149565b816040528281528d868487010111156200022157600080fd5b600093505b8284101562000245578484018601518185018701529285019262000226565b600086848301015280995050505050505062000264606088016200012c565b925062000274608088016200012c565b91506200028460a088016200012c565b90509295509295509295565b600181811c90821680620002a557607f821691505b602082108103620002c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200031a57600081815260208120601f850160051c81016020861015620002f55750805b601f850160051c820191505b81811015620003165782815560010162000301565b5050505b505050565b81516001600160401b038111156200033b576200033b62000149565b62000353816200034c845462000290565b84620002cc565b602080601f8311600181146200038b5760008415620003725750858301515b600019600386901b1c1916600185901b17855562000316565b600085815260208120601f198616915b82811015620003bc578886015182559484019460019091019084016200039b565b5085821015620003db5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051613376620004496000396000818161037801528181610b7d015261169f0152600081816103ed01528181610c7801528181611489015281816114c70152818161179901528181611c700152611cf401526133766000f3fe608060405234801561001057600080fd5b50600436106102265760003560e01c80637c27383b1161012a578063c34c08e5116100bd578063daeccc791161008c578063e173ad2511610071578063e173ad2514610528578063e321453414610530578063e337e11d1461053857600080fd5b8063daeccc79146104e7578063de2176251461051557600080fd5b8063c34c08e514610499578063ce5c715a146104b9578063cf35bdd0146104c1578063d9a349c1146104d457600080fd5b80639bd5c7c5116100f95780639bd5c7c514610460578063a25db5e2146102fb578063a7229fd914610473578063bfccf0ec1461048657600080fd5b80637c27383b1461040f5780638112c4af146104305780638e0aa54a146104385780638fece34b1461044b57600080fd5b806325829410116101bd5780634b8a35291161018c57806359eef8ce1161017157806359eef8ce146103c057806367e4ac2c146103d357806374004e92146103e857600080fd5b80634b8a35291461039a5780635137bf16146103ad57600080fd5b806325829410146102fb57806338a631831461033d5780634a6c983b1461035d5780634b2adf171461037357600080fd5b80631810fe7f116101f95780631810fe7f146102b05780631ed760b4146102cd5780631f211405146102e057806322867d78146102e857600080fd5b8063032ef9011461022b57806307f184f114610240578063097b144e14610253578063101d168414610266575b600080fd5b61023e610239366004612b14565b61054b565b005b61023e61024e366004612b5a565b6105fa565b61023e610261366004612b77565b610732565b6006546102869073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6003546102bd9060ff1681565b60405190151581526020016102a7565b61023e6102db366004612bb8565b6107ff565b61023e610854565b61023e6102f6366004612bb8565b610973565b60408051808201909152600581527f312e302e3000000000000000000000000000000000000000000000000000000060208201525b6040516102a79190612c52565b6000546102869073ffffffffffffffffffffffffffffffffffffffff1681565b61033061036b366004612c65565b606092915050565b6102867f000000000000000000000000000000000000000000000000000000000000000081565b61023e6103a8366004612bb8565b610ac7565b61023e6103bb366004612d23565b610ce2565b61023e6103ce366004612b5a565b610de5565b6103db6110b4565b6040516102a79190612d65565b6102867f000000000000000000000000000000000000000000000000000000000000000081565b61042261041d366004612b5a565b611123565b6040519081526020016102a7565b61023e6112c9565b61023e610446366004612bb8565b611409565b610453611539565b6040516102a79190612dbf565b61042261046e366004612b5a565b611548565b61023e610481366004612b77565b611803565b61023e610494366004612e24565b6118f4565b6001546102869073ffffffffffffffffffffffffffffffffffffffff1681565b610453611af3565b6102866104cf366004612e79565b611d8d565b61023e6104e2366004612b5a565b611dc4565b6102bd6104f5366004612ec7565b600260209081526000928352604080842090915290825290205460ff1681565b61023e610523366004612efc565b611f09565b610330611fb7565b610453612045565b61023e610546366004612c65565b6120c7565b60005473ffffffffffffffffffffffffffffffffffffffff16331461059c576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461064b576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610698576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b610760336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b610796576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107a1838383612278565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527f85032ae4f0dd2efe545913ee631b73ca7fb27bd0ae39e9286c858fc36e63d2c5906060015b60405180910390a1505050565b60065473ffffffffffffffffffffffffffffffffffffffff163314610850576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60045473ffffffffffffffffffffffffffffffffffffffff1633146108a5576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff1633036108f6576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b6109a1336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b6109d7576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60065460405182815273ffffffffffffffffffffffffffffffffffffffff918216918416907f5c16de4f8b59bd9caf0f49a545f25819a895ed223294290b408242e72a5942319060200160405180910390a2610a34838284612278565b6040517f5ceae9c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052306044830152821690635ceae9c490606401600060405180830381600087803b158015610aaa57600080fd5b505af1158015610abe573d6000803e3d6000fd5b50505050505050565b610af5336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b610b2b576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f57f597b700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152336024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906357f597b790606401600060405180830381600087803b158015610bc157600080fd5b505af1158015610bd5573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff167fcbc04eca7e9da35cb1393a6135a199ca52e450d5e9251cbd99f7847d33a3675082604051610c2191815260200190565b60405180910390a26006546040517f6c665a5500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490527f00000000000000000000000000000000000000000000000000000000000000008116604483015290911690636c665a55906064015b600060405180830381600087803b158015610cc657600080fd5b505af1158015610cda573d6000803e3d6000fd5b505050505050565b610d10336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b610d46576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d5260076000612a07565b8060005b81811015610db3576007848483818110610d7257610d72612f5f565b835460018101855560009485526020909420604090910292909201926002029091019050610da08282612f8e565b505080610dac90613015565b9050610d56565b507fe2aaf97f8a394deb25ef28ece557e81cd39898e1aaeb203b0afacc5eb847a6b383836040516107f292919061304d565b610e13336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b610e49576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610e96576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907ff7f85d5ad92cb1211156f4001d74d075fc49b5ae4b9acf69826291357401125790600090a2600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604080517f25829410000000000000000000000000000000000000000000000000000000008152905160009291632582941091600480830192869291908290030181865afa158015610f70573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610fb691908101906130e2565b9050610ff260408051808201909152600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290565b60405160200161100291906131a2565b604051602081830303815290604052805190602001208160405160200161102991906131a2565b604051602081830303815290604052805190602001201461085057604080518082018252600581527f312e302e30000000000000000000000000000000000000000000000000000000602082015290517f4204c1480000000000000000000000000000000000000000000000000000000081526110ab919083906004016131be565b60405180910390fd5b6060600880548060200260200160405190810160405280929190818152602001828054801561111957602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116110ee575b5050505050905090565b6000611153336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b611189576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60065473ffffffffffffffffffffffffffffffffffffffff166111cd83827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612278565b6040517f1b8222ec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152306024830152821690631b8222ec906044016020604051808303816000875af1158015611241573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126591906131ec565b915061127383826000612278565b8273ffffffffffffffffffffffffffffffffffffffff167f5c16de4f8b59bd9caf0f49a545f25819a895ed223294290b408242e72a594231836040516112bb91815260200190565b60405180910390a250919050565b600354610100900473ffffffffffffffffffffffffffffffffffffffff16331461131f576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff163303611370576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b611437336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b61146d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114ae73ffffffffffffffffffffffffffffffffffffffff83167f000000000000000000000000000000000000000000000000000000000000000083612362565b8173ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f90968360405161152d91815260200190565b60405180910390a35050565b6060611543611af3565b905090565b6000611578336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b6115ae576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006546040517f16a2d65900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff84811660248301529091169081906316a2d65990604401602060405180830381865afa158015611626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164a91906131ec565b6040517f57f597b700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152336024830152604482018390529193507f0000000000000000000000000000000000000000000000000000000000000000909116906357f597b790606401600060405180830381600087803b1580156116e557600080fd5b505af11580156116f9573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167fcbc04eca7e9da35cb1393a6135a199ca52e450d5e9251cbd99f7847d33a367508360405161174591815260200190565b60405180910390a26040517f6c665a5500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490527f000000000000000000000000000000000000000000000000000000000000000081166044830152821690636c665a5590606401600060405180830381600087803b1580156117e557600080fd5b505af11580156117f9573d6000803e3d6000fd5b5050505050919050565b611831336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b611867576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f9096836040516118c691815260200190565b60405180910390a36118ef73ffffffffffffffffffffffffffffffffffffffff84168383612362565b505050565b611922336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b611958576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166119a5576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b82811015610cda578484828181106119d8576119d8612f5f565b9050604002018036038101906119ee9190613205565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055611aec81613015565b90506119be565b6008546060908067ffffffffffffffff811115611b1257611b126130b3565b604051908082528060200260200182016040528015611b5757816020015b6040805180820190915260008082526020820152815260200190600190039081611b305790505b50915060008060005b83811015611d865760088181548110611b7b57611b7b612f5f565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1692508215611cf2576040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa158015611c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3391906131ec565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301528516906370a0823190602401602060405180830381865afa158015611cbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce391906131ec565b611ced9190613262565b611d2b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16315b915060405180604001604052808473ffffffffffffffffffffffffffffffffffffffff16815260200183815250858281518110611d6a57611d6a612f5f565b602002602001018190525080611d7f90613015565b9050611b60565b5050505090565b60088181548110611d9d57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b611df2336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b611e28576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611e75576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b611f37336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b611f6d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f7960088383612a2b565b507fe211f2a537da6de85cb2b19af2741698c6a50c256060eb84460bda0c6f0bb0278282604051611fab929190613275565b60405180910390a15050565b60058054611fc4906132d0565b80601f0160208091040260200160405190810160405280929190818152602001828054611ff0906132d0565b801561203d5780601f106120125761010080835404028352916020019161203d565b820191906000526020600020905b81548152906001019060200180831161202057829003601f168201915b505050505081565b60606007805480602002602001604051908101604052809291908181526020016000905b828210156120be5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101612069565b50505050905090565b6120f5336000357fffffffff00000000000000000000000000000000000000000000000000000000166121b4565b61212b576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6121358282612436565b6040517f4426aa1fb73e391071491fcfe21a88b5c38a0a0333a1f6e77161470439704cf890600090a16006546040517fcce2f3fb00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff9091169063cce2f3fb90602401610cac565b60035460009060ff16156121e6575060005473ffffffffffffffffffffffffffffffffffffffff838116911614612272565b60015473ffffffffffffffffffffffffffffffffffffffff84811691161480612261575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b1561226e57506001612272565b5060005b92915050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156122ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230e91906131ec565b810361231957505050565b61233b73ffffffffffffffffffffffffffffffffffffffff8416836000612468565b80156118ef576118ef73ffffffffffffffffffffffffffffffffffffffff841683836125ea565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526118ef9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526126e9565b6040517f6e12839900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80158061250857506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156124e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250691906131ec565b155b612594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084016110ab565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526118ef9084907f095ea7b300000000000000000000000000000000000000000000000000000000906064016123b4565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015612660573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268491906131ec565b90506126e3847f095ea7b300000000000000000000000000000000000000000000000000000000856126b68686613262565b60405173ffffffffffffffffffffffffffffffffffffffff909216602483015260448201526064016123b4565b50505050565b600061274b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166127f89092919063ffffffff16565b905080516000148061276c57508080602001905181019061276c9190613323565b6118ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016110ab565b6060612807848460008561280f565b949350505050565b6060824710156128a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016110ab565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516128ca91906131a2565b60006040518083038185875af1925050503d8060008114612907576040519150601f19603f3d011682016040523d82523d6000602084013e61290c565b606091505b509150915061291d87838387612928565b979650505050505050565b606083156129be5782516000036129b75773ffffffffffffffffffffffffffffffffffffffff85163b6129b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016110ab565b5081612807565b61280783838151156129d35781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ab9190612c52565b5080546000825560020290600052602060002090810190612a289190612ab3565b50565b828054828255906000526020600020908101928215612aa3579160200282015b82811115612aa35781547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff843516178255602090920191600190910190612a4b565b50612aaf929150612af1565b5090565b5b80821115612aaf5780547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560006001820155600201612ab4565b5b80821115612aaf5760008155600101612af2565b8015158114612a2857600080fd5b600060208284031215612b2657600080fd5b8135612b3181612b06565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114612a2857600080fd5b600060208284031215612b6c57600080fd5b8135612b3181612b38565b600080600060608486031215612b8c57600080fd5b8335612b9781612b38565b92506020840135612ba781612b38565b929592945050506040919091013590565b60008060408385031215612bcb57600080fd5b8235612bd681612b38565b946020939093013593505050565b60005b83811015612bff578181015183820152602001612be7565b50506000910152565b60008151808452612c20816020860160208601612be4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612b316020830184612c08565b60008060208385031215612c7857600080fd5b823567ffffffffffffffff80821115612c9057600080fd5b818501915085601f830112612ca457600080fd5b813581811115612cb357600080fd5b866020828501011115612cc557600080fd5b60209290920196919550909350505050565b60008083601f840112612ce957600080fd5b50813567ffffffffffffffff811115612d0157600080fd5b6020830191508360208260061b8501011115612d1c57600080fd5b9250929050565b60008060208385031215612d3657600080fd5b823567ffffffffffffffff811115612d4d57600080fd5b612d5985828601612cd7565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b81811015612db357835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101612d81565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b82811015612e17578151805173ffffffffffffffffffffffffffffffffffffffff168552860151868501529284019290850190600101612ddc565b5091979650505050505050565b600080600060408486031215612e3957600080fd5b8335612e4481612b38565b9250602084013567ffffffffffffffff811115612e6057600080fd5b612e6c86828701612cd7565b9497909650939450505050565b600060208284031215612e8b57600080fd5b5035919050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114612ec257600080fd5b919050565b60008060408385031215612eda57600080fd5b8235612ee581612b38565b9150612ef360208401612e92565b90509250929050565b60008060208385031215612f0f57600080fd5b823567ffffffffffffffff80821115612f2757600080fd5b818501915085601f830112612f3b57600080fd5b813581811115612f4a57600080fd5b8660208260051b8501011115612cc557600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8135612f9981612b38565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361304657613046612fe6565b5060010190565b6020808252818101839052600090604080840186845b878110156130a657813561307681612b38565b73ffffffffffffffffffffffffffffffffffffffff16835281850135858401529183019190830190600101613063565b5090979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156130f457600080fd5b815167ffffffffffffffff8082111561310c57600080fd5b818401915084601f83011261312057600080fd5b815181811115613132576131326130b3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715613178576131786130b3565b8160405282815287602084870101111561319157600080fd5b61291d836020830160208801612be4565b600082516131b4818460208701612be4565b9190910192915050565b6040815260006131d16040830185612c08565b82810360208401526131e38185612c08565b95945050505050565b6000602082840312156131fe57600080fd5b5051919050565b60006040828403121561321757600080fd5b6040516040810181811067ffffffffffffffff8211171561323a5761323a6130b3565b60405261324683612e92565b8152602083013561325681612b06565b60208201529392505050565b8082018082111561227257612272612fe6565b60208082528181018390526000908460408401835b868110156132c557823561329d81612b38565b73ffffffffffffffffffffffffffffffffffffffff168252918301919083019060010161328a565b509695505050505050565b600181811c908216806132e457607f821691505b60208210810361331d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60006020828403121561333557600080fd5b8151612b3181612b0656fea26469706673582212208f76a400b178910f532338f11e947b2b72891305b129f6a735395133675dbac864736f6c634300081300330000000000000000000000009f90430179d9b67341bfa50559bc7b8e35629f1b000000000000000000000000b1e8ab0a81aadf632a653e46caeda1593d71d14300000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000f359bae7b6ad295724e798a3ef6fa5109919f399000000000000000000000000a0ec2af0ae7fe5f3ae572a2c8349f7e26be2e5fd00000000000000000000000087b8d213177fb132e508b5d7018f7b590e00a480000000000000000000000000000000000000000000000000000000000000000d466f686d6f537472617465677900000000000000000000000000000000000000