252 txs
253 calls
constructor
constructor(address[] _assets, (bool isOFT, address pool)[] _assetConfigs, address _etherFiDataProvider)
functions
CANCEL_BRIDGE_SIG
viewfunction CANCEL_BRIDGE_SIG() view returns (bytes32)
cashModule
viewfunction cashModule() view returns (address)
ETH
viewfunction ETH() view returns (address)
etherFiDataProvider
viewfunction etherFiDataProvider() view returns (address)
getAssetConfig
viewfunction getAssetConfig(address asset) view returns (tuple)
getBridgeFee
viewfunction getBridgeFee(uint32 destEid, address asset, uint256 amount, address destRecipient, uint256 maxSlippage) view returns (address, uint256)
getBridgeFeeForSafe
viewfunction getBridgeFeeForSafe(address safe) view returns (address, uint256)
getNonce
viewfunction getNonce(address safe) view returns (uint256)
getPendingBridge
viewfunction getPendingBridge(address safe) view returns (tuple)
HUNDRED_PERCENT_IN_BPS
viewfunction HUNDRED_PERCENT_IN_BPS() view returns (uint256)
prepareRideBus
viewfunction prepareRideBus(uint32 destEid, address asset, uint256 amount, address destRecipient, uint256 minAmount) view returns (address stargate, uint256 valueToSend, tuple sendParam, tuple messagingFee, address poolToken)
REQUEST_BRIDGE_SIG
viewfunction REQUEST_BRIDGE_SIG() view returns (bytes32)
STARGATE_MODULE_ADMIN_ROLE
viewfunction STARGATE_MODULE_ADMIN_ROLE() view returns (bytes32)
cancelBridge
nonpayablefunction cancelBridge(address safe, address[] signers, bytes[] signatures)
cancelBridgeByCashModule
nonpayablefunction cancelBridgeByCashModule(address safe)
executeBridge
payablefunction executeBridge(address safe) payable
requestBridge
payablefunction requestBridge(address safe, uint32 destEid, address asset, uint256 amount, address destRecipient, uint256 maxSlippageInBps, address[] signers, bytes[] signatures) payable
setAssetConfig
nonpayablefunction setAssetConfig(address[] assets, tuple[] assetConfigs)
setupModule
nonpayablefunction setupModule(bytes data)
events
AssetConfigSet
event AssetConfigSet(address[] assets, (bool isOFT, address pool)[] assetConfigs)
BridgeCancelled
event BridgeCancelled(address indexed safe, uint32 indexed destEid, address indexed asset, uint256 amount, address destRecipient)
BridgeWithStargate
event BridgeWithStargate(address indexed safe, uint32 indexed destEid, address indexed asset, uint256 amount, address destRecipient, uint256 maxSlippageInBps)
RequestBridgeWithStargate
event RequestBridgeWithStargate(address indexed safe, uint32 indexed destEid, address indexed asset, uint256 amount, address destRecipient, uint256 maxSlippageInBps)
errors
AmountNotAvailable
error AmountNotAvailable()
ArrayLengthMismatch
error ArrayLengthMismatch()
CannotFindMatchingWithdrawalForSafe
error CannotFindMatchingWithdrawalForSafe()
InsufficientAmount
error InsufficientAmount()
InsufficientAvailableBalanceOnSafe
error InsufficientAvailableBalanceOnSafe()
InsufficientMinAmount
error InsufficientMinAmount()
InsufficientNativeFee
error InsufficientNativeFee()
InvalidInput
error InvalidInput()
InvalidSignature
error InvalidSignature()
InvalidSignatures
error InvalidSignatures()
InvalidStargatePool
error InvalidStargatePool()
NativeTransferFailed
error NativeTransferFailed()
NoWithdrawalQueuedForStargate
error NoWithdrawalQueuedForStargate()
OnlyEtherFiSafe
error OnlyEtherFiSafe()
OnlySafeAdmin
error OnlySafeAdmin()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
Unauthorized
error Unauthorized()
creation bytecode
0x60c060405234801561000f575f5ffd5b50604051613eb7380380613eb783398101604081905261002e91610524565b80806001600160a01b0381166100575760405163b4fa3fb360e01b815260040160405180910390fd5b806001600160a01b03166080816001600160a01b03168152505050806001600160a01b031663882d16986040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100d291906105f6565b6001600160a01b031660a052506100e983836100f1565b5050506106ca565b8151815181146101145760405163512509d360e11b815260040160405180910390fd5b7feafa2356b7fab3fae77872025a25cb67884d7667f22b14ae60e3f63732a39c005f805b83811015610392575f6001600160a01b031686828151811061015c5761015c610616565b60200260200101516001600160a01b03160361018b5760405163b4fa3fb360e01b815260040160405180910390fd5b84818151811061019d5761019d610616565b6020026020010151602001516001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101e4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061020891906105f6565b915073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b031686828151811061023a5761023a610616565b60200260200101516001600160a01b031614158015610284575085818151811061026657610266610616565b60200260200101516001600160a01b0316826001600160a01b031614155b806102e0575073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03168682815181106102ba576102ba610616565b60200260200101516001600160a01b03161480156102e057506001600160a01b03821615155b156102fe5760405163de3d2dc160e01b815260040160405180910390fd5b84818151811061031057610310610616565b6020026020010151835f015f88848151811061032e5761032e610616565b6020908102919091018101516001600160a01b0390811683528282019390935260409091015f208351815494909201516001600160a81b0319909416911515610100600160a81b031916919091176101009390921692909202179055600101610138565b507fd0047f11593e0ace0683ec8c32c28539d1f7e1ab74f028f2d9181ef3c99badcc85856040516103c492919061062a565b60405180910390a15050505050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715610409576104096103d3565b60405290565b604051601f8201601f191681016001600160401b0381118282101715610437576104376103d3565b604052919050565b5f6001600160401b03821115610457576104576103d3565b5060051b60200190565b80516001600160a01b0381168114610477575f5ffd5b919050565b5f82601f83011261048b575f5ffd5b815161049e6104998261043f565b61040f565b8082825260208201915060208360061b8601019250858311156104bf575f5ffd5b602085015b8381101561051a57604081880312156104db575f5ffd5b6104e36103e7565b815180151581146104f2575f5ffd5b815261050060208301610461565b6020820152808452506020830192506040810190506104c4565b5095945050505050565b5f5f5f60608486031215610536575f5ffd5b83516001600160401b0381111561054b575f5ffd5b8401601f8101861361055b575f5ffd5b80516105696104998261043f565b8082825260208201915060208360051b85010192508883111561058a575f5ffd5b6020840193505b828410156105b3576105a284610461565b825260209384019390910190610591565b6020880151909650925050506001600160401b038111156105d2575f5ffd5b6105de8682870161047c565b9250506105ed60408501610461565b90509250925092565b5f60208284031215610606575f5ffd5b61060f82610461565b9392505050565b634e487b7160e01b5f52603260045260245ffd5b604080825283519082018190525f9060208501906060840190835b8181101561066c5783516001600160a01b0316835260209384019390920191600101610645565b5050838103602080860191909152855180835291810192508501905f5b818110156106be5782518051151585526020908101516001600160a01b03168186015260409094019390920191600101610689565b50919695505050505050565b60805160a05161377f6107385f395f818161019801528181610766015281816108a001528181610c9e01528181610d4e0152818161131701526113c701525f818161044a0152818161046e0152818161062d01528181610a0a015281816111f6015261174d015261377f5ff3fe6080604052600436106100f5575f3560e01c80638a2e5c3d1161008e5780638a2e5c3d146102945780638a46c91e146102c7578063909030d5146102f75780639e673bc314610315578063ae229fb314610348578063c550669f1461035b578063c760e2ff14610388578063d17a6131146103fb578063e6298f451461041a578063f9fba81b14610439575f5ffd5b80632d0335ab146101005780632db274c8146101665780633575f0de146101875780635988e7a1146101c757806360b72616146101da5780636ec3ab67146101f957806375f6e461146102255780637f12dc60146102585780638322fff21461026d575f5ffd5b366100fc57005b5f5ffd5b34801561010b575f5ffd5b5061015361011a36600461275d565b6001600160a01b03165f9081527f9425b2e03e09da4c20ff7a465da264f7a02bf7079e1dbb47fce0436e1d206d00602052604090205490565b6040519081526020015b60405180910390f35b348015610171575f5ffd5b5061018561018036600461275d565b61046c565b005b348015610192575f5ffd5b506101ba7f000000000000000000000000000000000000000000000000000000000000000081565b60405161015d9190612778565b6101856101d536600461275d565b61060c565b3480156101e5575f5ffd5b506101856101f43660046127d3565b6109e9565b348015610204575f5ffd5b5061021861021336600461275d565b610e8e565b60405161015d919061286d565b348015610230575f5ffd5b506101537fae77ede047fc524c926b296cfb340d4f49b79e489ca46d55df03d037ce4c897c81565b348015610263575f5ffd5b5061015361271081565b348015610278575f5ffd5b506101ba73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b34801561029f575f5ffd5b506101537f6aa129b587db2f56b32662e4af4556cdc69b6228434cb2791c6377894b40bf2c81565b3480156102d2575f5ffd5b506102e66102e1366004612893565b610ee4565b60405161015d959493929190612994565b348015610302575f5ffd5b506101856103113660046129e6565b5050565b348015610320575f5ffd5b506101537f7360ecb005ef445b1cb2b3a294f2c499b088f258b4531fffbc4c244d8cf7732381565b610185610356366004612a52565b6111d5565b348015610366575f5ffd5b5061037a610375366004612893565b61159e565b60405161015d929190612b1c565b348015610393575f5ffd5b506103a76103a236600461275d565b6115f6565b60405161015d9190815163ffffffff1681526020808301516001600160a01b039081169183019190915260408084015190830152606080840151909116908201526080918201519181019190915260a00190565b348015610406575f5ffd5b5061037a61041536600461275d565b61168f565b348015610425575f5ffd5b50610185610434366004612cdc565b61174a565b348015610444575f5ffd5b506101ba7f000000000000000000000000000000000000000000000000000000000000000081565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663882d16986040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104ec9190612daa565b6001600160a01b0316336001600160a01b03161461051c576040516282b42960e81b815260040160405180910390fd5b5f610525611886565b6001600160a01b038084165f9081526001929092016020526040909120600281015490925016610553575050565b8054600182015460028301546040516001600160a01b03600160201b850481169463ffffffff1693878216937f42b25a9df19cad37fe88556741e62c1928f219608309518174a16bc7941d01f8936105af939190911690612dc5565b60405180910390a46105bf611886565b6001600160a01b039092165f90815260019283016020526040812080546001600160c01b03191681559283018190556002830180546001600160a01b031916905560039092019190915550565b6106146118aa565b60405163b7ca418b60e01b815281906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b7ca418b90610662908490600401612778565b602060405180830381865afa15801561067d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106a19190612ddc565b6106be576040516334d0b49960e01b815260040160405180910390fd5b5f6106c7611886565b6001600160a01b038085165f90815260019283016020908152604091829020825160a081018452815463ffffffff81168252600160201b900485169281019290925293840154918101919091526002830154909116606082018190526003909201546080820152915061074d57604051630b70cc1b60e21b815260040160405180910390fd5b604051631c13359160e11b81525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906338266b229061079b908790600401612778565b5f60405180830381865afa1580156107b5573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526107dc9190810190613028565b6020015160408101519091506001600160a01b0316301415806108025750805151600114155b8061083f575081602001516001600160a01b0316815f01515f8151811061082b5761082b6130e0565b60200260200101516001600160a01b031614155b8061086b5750816040015181602001515f81518110610860576108606130e0565b602002602001015114155b156108895760405163a78fbb5f60e01b815260040160405180910390fd5b604051631e0d280960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633c1a5012906108d5908790600401612778565b5f604051808303815f87803b1580156108ec575f5ffd5b505af11580156108fe573d5f5f3e3d5ffd5b50505050610922825f015183602001518460400151856060015186608001516118f3565b81602001516001600160a01b0316825f015163ffffffff16856001600160a01b03167f78d44b442b946f9ff7626ae9594a7ee48e61e11283c9d4929a6fd1e678074d07856040015186606001518760800151604051610983939291906130f4565b60405180910390a4610993611886565b6001600160a01b0385165f90815260019182016020526040812080546001600160c01b03191681559182018190556002820180546001600160a01b0319169055600390910155506109e6915061195a9050565b50565b6109f16118aa565b60405163b7ca418b60e01b815285906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b7ca418b90610a3f908490600401612778565b602060405180830381865afa158015610a5a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a7e9190612ddc565b610a9b576040516334d0b49960e01b815260040160405180910390fd5b5f610ba67f6aa129b587db2f56b32662e4af4556cdc69b6228434cb2791c6377894b40bf2c46308a6001600160a01b03166369615a4c6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610aff573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b239190613113565b6040805160208101959095528401929092526001600160601b0319606091821b81168285015260748401929092528a901b16609482015260a8015b604051602081830303815290604052805190602001207f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c91909152603c902090565b60405163a732422d60e01b81529091506001600160a01b0388169063a732422d90610bdd9084908a908a908a908a90600401613152565b602060405180830381865afa158015610bf8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1c9190612ddc565b610c395760405163274cf40160e01b815260040160405180910390fd5b5f610c42611886565b6001600160a01b03808a165f9081526001929092016020526040909120600281015490925016610c8557604051630b70cc1b60e21b815260040160405180910390fd5b604051631c13359160e11b81525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906338266b2290610cd3908c90600401612778565b5f60405180830381865afa158015610ced573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610d149190810190613028565b9050306001600160a01b03168160200151604001516001600160a01b031603610db15760405163526cd20560e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a4d9a40a90610d83908c90600401612778565b5f604051808303815f87803b158015610d9a575f5ffd5b505af1158015610dac573d5f5f3e3d5ffd5b505050505b8154600160201b90046001600160a01b031615610e7b578154600183015460028401546040516001600160a01b03600160201b850481169463ffffffff16938e8216937f42b25a9df19cad37fe88556741e62c1928f219608309518174a16bc7941d01f893610e24939190911690612dc5565b60405180910390a4610e34611886565b6001600160a01b038a165f90815260019182016020526040812080546001600160c01b03191681559182018190556002820180546001600160a01b03191690556003909101555b50505050610e8761195a565b5050505050565b604080518082019091525f8082526020820152610ea9611886565b6001600160a01b039283165f908152602091825260409081902081518083019092525460ff8116151582526101009004909316908301525090565b5f5f610f286040518060e001604052805f63ffffffff1681526020015f81526020015f81526020015f81526020016060815260200160608152602001606081525090565b604080518082019091525f80825260208201525f610f44611886565b5f015f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f0160019054906101000a90046001600160a01b031694506040518060e001604052808b63ffffffff168152602001886001600160a01b03165f1b81526020018981526020018981526020015f6001600160401b03811115610fcb57610fcb612b35565b6040519080825280601f01601f191660200182016040528015610ff5576020820181803683370190505b508152604080515f8152602080820183528084019190915281516001808252818401845292909301929190820181803683375050509052604051630d35b41560e01b81529093505f906001600160a01b03871690630d35b4159061105d90879060040161323f565b5f60405180830381865afa158015611077573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261109e91908101906132d8565b60208101805160608901525190935089111591506110d19050576040516301d781db60e61b815260040160405180910390fd5b604051633b6f743b60e01b81526001600160a01b03871690633b6f743b906110ff9087905f9060040161340a565b6040805180830381865afa158015611119573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113d919061342d565b9250825f01519450856001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611181573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111a59190612daa565b91506001600160a01b0382166111c75760408401516111c4908661345b565b94505b509550955095509550959050565b6111dd6118aa565b60405163b7ca418b60e01b81528a906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b7ca418b9061122b908490600401612778565b602060405180830381865afa158015611246573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061126a9190612ddc565b611287576040516334d0b49960e01b815260040160405180910390fd5b6001600160a01b03871615806112a457506001600160a01b038916155b806112ad575087155b806112b9575061271086115b156112d75760405163b4fa3fb360e01b815260040160405180910390fd5b6112e98b8b8b8b8b8b8b8b8b8b611971565b604051635c463eed60e11b81526001600160a01b038c811660048301528a81166024830152604482018a90527f0000000000000000000000000000000000000000000000000000000000000000169063b88c7dda906064015f604051808303815f87803b158015611358575f5ffd5b505af115801561136a573d5f5f3e3d5ffd5b50505050886001600160a01b03168a63ffffffff168c6001600160a01b03167ff4787a06f33a70c683d4f40d1473eeca05f4a97e6e18f4f5d6ff94e0a66959c28b8b8b6040516113bc939291906130f4565b60405180910390a45f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636bc07b2b6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611421573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611445919061346e565b50509050806001600160401b03165f036114c1576114668b8b8b8b8b6118f3565b896001600160a01b03168b63ffffffff168d6001600160a01b03167f78d44b442b946f9ff7626ae9594a7ee48e61e11283c9d4929a6fd1e678074d078c8c8c6040516114b4939291906130f4565b60405180910390a4611588565b6040518060a001604052808c63ffffffff1681526020018b6001600160a01b031681526020018a8152602001896001600160a01b0316815260200188815250611508611886565b6001600160a01b03808f165f9081526001928301602090815260409182902085518154928701518516600160201b026001600160c01b031990931663ffffffff9091161791909117815590840151928101929092556060830151600283018054919092166001600160a01b03199091161790556080909101516003909101555b505061159261195a565b50505050505050505050565b5f5f6115a8611886565b6001600160a01b0387165f908152602091909152604090205460ff16156115df576115d68787878787611b06565b915091506115ec565b6115d68787878787611c80565b9550959350505050565b6040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152611628611886565b6001600160a01b039283165f90815260019182016020908152604091829020825160a081018452815463ffffffff81168252600160201b90048716928101929092529283015491810191909152600282015490931660608401526003015460808301525090565b5f5f5f61169a611886565b6001600160a01b038086165f90815260019283016020908152604091829020825160a081018452815463ffffffff81168252600160201b900485169281019290925293840154918101919091526002830154909116606082018190526003909201546080820152915061172057604051630b70cc1b60e21b815260040160405180910390fd5b611740815f0151826020015183604001518460600151856080015161159e565b9250925050915091565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166308c732596040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117a7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117cb9190612daa565b604051632474521560e21b81529091506001600160a01b038216906391d148549061181c907fae77ede047fc524c926b296cfb340d4f49b79e489ca46d55df03d037ce4c897c903390600401612dc5565b602060405180830381865afa158015611837573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061185b9190612ddc565b611877576040516282b42960e81b815260040160405180910390fd5b6118818383611cc6565b505050565b7feafa2356b7fab3fae77872025a25cb67884d7667f22b14ae60e3f63732a39c0090565b5f5160206137535f395f51905f525c156118d757604051633ee5aeb560e01b815260040160405180910390fd5b6118f160015f5160206137535f395f51905f525b90611f92565b565b6118fd8484611f99565b5f611908848361206b565b9050611912611886565b6001600160a01b0386165f908152602091909152604090205460ff161561194557611940868686868561208e565b611952565b6119528686868685612331565b505050505050565b6118f15f5f5160206137535f395f51905f526118eb565b5f611a667f7360ecb005ef445b1cb2b3a294f2c499b088f258b4531fffbc4c244d8cf7732346308e6001600160a01b03166369615a4c6040518163ffffffff1660e01b81526004016020604051808303815f875af11580156119d5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119f99190613113565b8f8f8f8f8f8f604051602001611a4495949392919063ffffffff9590951685526001600160a01b03938416602086015260408501929092529091166060830152608082015260a00190565b60408051601f1981840301815290829052610b5e9695949392916020016134a5565b60405163a732422d60e01b81529091506001600160a01b038c169063a732422d90611a9d9084908990899089908990600401613152565b602060405180830381865afa158015611ab8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611adc9190612ddc565b611af95760405163274cf40160e01b815260040160405180910390fd5b5050505050505050505050565b5f5f5f611b11611886565b6001600160a01b038089165f90815260209290925260408220546101009004169150611b3d878661206b565b90505f6040518060e001604052808b63ffffffff168152602001886001600160a01b03165f1b8152602001898152602001838152602001604051806040016040528060028152602001600360f01b81525081526020015f6001600160401b03811115611bab57611bab612b35565b6040519080825280601f01601f191660200182016040528015611bd5576020820181803683370190505b508152604080515f808252602080830184529093015251633b6f743b60e01b8152919250906001600160a01b03851690633b6f743b90611c1b908590859060040161340a565b6040805180830381865afa158015611c35573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c59919061342d565b5173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee9c909b509950505050505050505050565b5f5f5f611c8d868561206b565b90505f611c9d8989898986610ee4565b505173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee9d909c509a5050505050505050505050565b815181518114611ce95760405163512509d360e11b815260040160405180910390fd5b5f611cf2611886565b90505f805b83811015611f51575f6001600160a01b0316868281518110611d1b57611d1b6130e0565b60200260200101516001600160a01b031603611d4a5760405163b4fa3fb360e01b815260040160405180910390fd5b848181518110611d5c57611d5c6130e0565b6020026020010151602001516001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611da3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc79190612daa565b915073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316868281518110611df957611df96130e0565b60200260200101516001600160a01b031614158015611e435750858181518110611e2557611e256130e0565b60200260200101516001600160a01b0316826001600160a01b031614155b80611e9f575073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316868281518110611e7957611e796130e0565b60200260200101516001600160a01b0316148015611e9f57506001600160a01b03821615155b15611ebd5760405163de3d2dc160e01b815260040160405180910390fd5b848181518110611ecf57611ecf6130e0565b6020026020010151835f015f888481518110611eed57611eed6130e0565b6020908102919091018101516001600160a01b0390811683528282019390935260409091015f208351815494909201516001600160a81b0319909416911515610100600160a81b031916919091176101009390921692909202179055600101611cf7565b507fd0047f11593e0ace0683ec8c32c28539d1f7e1ab74f028f2d9181ef3c99badcc8585604051611f839291906134f6565b60405180910390a15050505050565b80825d5050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03831601611fdf578047101561031157604051632ca2f52b60e11b815260040160405180910390fd5b6040516370a0823160e01b815281906001600160a01b038416906370a082319061200d903090600401612778565b602060405180830381865afa158015612028573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061204c9190613113565b101561031157604051632ca2f52b60e11b815260040160405180910390fd5b5f61208561207b8361271061358a565b8490612710612504565b90505b92915050565b5f612097611886565b6001600160a01b038681165f9081526020928352604080822054815160e08101835263ffffffff8c168152888516818701528083018a9052606081018890528251808401845260028152600360f01b8188015260808201528251848152808701845260a08201528251848152958601835260c08101959095529051630d35b41560e01b81526101009091049092169350908390630d35b4159061213e90859060040161323f565b5f60405180830381865afa158015612158573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261217f91908101906132d8565b60208101805160608701525190935086111591506121b29050576040516301d781db60e61b815260040160405180910390fd5b604051633b6f743b60e01b81525f906001600160a01b03851690633b6f743b906121e2908690859060040161340a565b6040805180830381865afa1580156121fc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612220919061342d565b805190915047101561224557604051639c92bdfb60e01b815260040160405180910390fd5b836001600160a01b0316639f68b9646040518163ffffffff1660e01b8152600401602060405180830381865afa158015612281573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122a59190612ddc565b156122be576122be6001600160a01b03891685896125bb565b805160405163c7c7f5b360e01b81526001600160a01b0386169163c7c7f5b3916122f09087908690309060040161359d565b60c06040518083038185885af115801561230c573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611af99190613647565b5f5f5f5f5f6123438a8a8a8a8a610ee4565b94509450945094509450815f015147101561237157604051639c92bdfb60e01b815260040160405180910390fd5b6001600160a01b03891673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1461245857886001600160a01b0316816001600160a01b0316146123c75760405163de3d2dc160e01b815260040160405180910390fd5b6123db6001600160a01b038a16868a6125bb565b60405163cbef2aa960e01b81526001600160a01b0386169063cbef2aa990869061240d9087908790309060040161359d565b5f6040518083038185885af1158015612428573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052612450919081019061367a565b505050611592565b6001600160a01b038116156124805760405163de3d2dc160e01b815260040160405180910390fd5b60405163cbef2aa960e01b81526001600160a01b0386169063cbef2aa99086906124b29087908790309060040161359d565b5f6040518083038185885af11580156124cd573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f191682016040526124f5919081019061367a565b50505050505050505050505050565b5f838302815f1985870982811083820303915050805f036125385783828161252e5761252e61373e565b04925050506125b4565b80841161254f5761254f6003851502601118612683565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b5f836001600160a01b031663095ea7b384846040516024016125de929190612b1c565b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505090506126178482612694565b61267d5761267384856001600160a01b031663095ea7b3865f604051602401612641929190612b1c565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506126dd565b61267d84826126dd565b50505050565b634e487b715f52806020526024601cfd5b5f5f5f5f60205f8651602088015f8a5af192503d91505f5190508280156126d3575081156126c557806001146126d3565b5f866001600160a01b03163b115b9695505050505050565b5f5f60205f8451602086015f885af1806126fc576040513d5f823e3d81fd5b50505f513d91508115612713578060011415612720565b6001600160a01b0384163b155b1561267d5783604051635274afe760e01b81526004016127409190612778565b60405180910390fd5b6001600160a01b03811681146109e6575f5ffd5b5f6020828403121561276d575f5ffd5b81356125b481612749565b6001600160a01b0391909116815260200190565b5f5f83601f84011261279c575f5ffd5b5081356001600160401b038111156127b2575f5ffd5b6020830191508360208260051b85010111156127cc575f5ffd5b9250929050565b5f5f5f5f5f606086880312156127e7575f5ffd5b85356127f281612749565b945060208601356001600160401b0381111561280c575f5ffd5b6128188882890161278c565b90955093505060408601356001600160401b03811115612836575f5ffd5b6128428882890161278c565b969995985093965092949392505050565b8051151582526020908101516001600160a01b0316910152565b604081016120888284612853565b803563ffffffff8116811461288e575f5ffd5b919050565b5f5f5f5f5f60a086880312156128a7575f5ffd5b6128b08661287b565b945060208601356128c081612749565b93506040860135925060608601356128d781612749565b949793965091946080013592915050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b63ffffffff81511682526020810151602083015260408101516040830152606081015160608301525f608082015160e0608085015261295860e08501826128e8565b905060a083015184820360a086015261297182826128e8565b91505060c083015184820360c086015261298b82826128e8565b95945050505050565b60018060a01b038616815284602082015260c060408201525f6129ba60c0830186612916565b845160608401526020909401516080830152506001600160a01b039190911660a0909101529392505050565b5f5f602083850312156129f7575f5ffd5b82356001600160401b03811115612a0c575f5ffd5b8301601f81018513612a1c575f5ffd5b80356001600160401b03811115612a31575f5ffd5b856020828401011115612a42575f5ffd5b6020919091019590945092505050565b5f5f5f5f5f5f5f5f5f5f6101008b8d031215612a6c575f5ffd5b8a35612a7781612749565b9950612a8560208c0161287b565b985060408b0135612a9581612749565b975060608b0135965060808b0135612aac81612749565b955060a08b0135945060c08b01356001600160401b03811115612acd575f5ffd5b612ad98d828e0161278c565b90955093505060e08b01356001600160401b03811115612af7575f5ffd5b612b038d828e0161278c565b915080935050809150509295989b9194979a5092959850565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715612b6b57612b6b612b35565b60405290565b60405161016081016001600160401b0381118282101715612b6b57612b6b612b35565b604051608081016001600160401b0381118282101715612b6b57612b6b612b35565b60405160c081016001600160401b0381118282101715612b6b57612b6b612b35565b604051601f8201601f191681016001600160401b0381118282101715612c0057612c00612b35565b604052919050565b5f6001600160401b03821115612c2057612c20612b35565b5060051b60200190565b80151581146109e6575f5ffd5b5f82601f830112612c46575f5ffd5b8135612c59612c5482612c08565b612bd8565b8082825260208201915060208360061b860101925085831115612c7a575f5ffd5b602085015b83811015612cd25760408188031215612c96575f5ffd5b612c9e612b49565b8135612ca981612c2a565b81526020820135612cb981612749565b6020828101919091529084529290920191604001612c7f565b5095945050505050565b5f5f60408385031215612ced575f5ffd5b82356001600160401b03811115612d02575f5ffd5b8301601f81018513612d12575f5ffd5b8035612d20612c5482612c08565b8082825260208201915060208360051b850101925087831115612d41575f5ffd5b6020840193505b82841015612d6c578335612d5b81612749565b825260209384019390910190612d48565b945050505060208301356001600160401b03811115612d89575f5ffd5b612d9585828601612c37565b9150509250929050565b805161288e81612749565b5f60208284031215612dba575f5ffd5b81516125b481612749565b9182526001600160a01b0316602082015260400190565b5f60208284031215612dec575f5ffd5b81516125b481612c2a565b80516001600160401b038116811461288e575f5ffd5b5f6101608284031215612e1e575f5ffd5b612e26612b71565b825181526020808401519082015260408084015190820152606080840151908201526080808401519082015260a080840151908201529050612e6a60c08301612df7565b60c0820152612e7b60e08301612df7565b60e0820152612e8d6101008301612df7565b610100820152612ea06101208301612df7565b6101208201526101409182015191810191909152919050565b5f82601f830112612ec8575f5ffd5b8151612ed6612c5482612c08565b8082825260208201915060208360051b860101925085831115612ef7575f5ffd5b602085015b83811015612cd2578051835260209283019201612efc565b80516001600160601b038116811461288e575f5ffd5b5f60808284031215612f3a575f5ffd5b612f42612b94565b905081516001600160401b03811115612f59575f5ffd5b8201601f81018413612f69575f5ffd5b8051612f77612c5482612c08565b8082825260208201915060208360051b850101925086831115612f98575f5ffd5b6020840193505b82841015612fc3578351612fb281612749565b825260209384019390910190612f9f565b845250505060208201516001600160401b03811115612fe0575f5ffd5b612fec84828501612eb9565b602083015250612ffe60408301612d9f565b604082015261300f60608301612f14565b606082015292915050565b80516002811061288e575f5ffd5b5f60208284031215613038575f5ffd5b81516001600160401b0381111561304d575f5ffd5b8201610200818503121561305f575f5ffd5b613067612bb6565b6130718583612e0d565b81526101608201516001600160401b0381111561308c575f5ffd5b61309886828501612f2a565b6020830152506130ab610180830161301a565b60408201526101a082015160608201526101c082015160808201526130d36101e0830161301a565b60a0820152949350505050565b634e487b7160e01b5f52603260045260245ffd5b9283526001600160a01b03919091166020830152604082015260600190565b5f60208284031215613123575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b85815260606020820181905281018490525f8560808301825b8781101561319b57823561317e81612749565b6001600160a01b031682526020928301929091019060010161316b565b50838103604085015284815260208082019250600586901b820101865f36829003601e19015b8882101561322e57848403601f1901865282358181126131df575f5ffd5b8a016020810190356001600160401b038111156131fa575f5ffd5b803603821315613208575f5ffd5b61321386828461312a565b955050506020830192506020860195506001820191506131c1565b50919b9a5050505050505050505050565b602081525f6120856020830184612916565b5f60408284031215613261575f5ffd5b613269612b49565b825181526020928301519281019290925250919050565b5f5f6001600160401b0384111561329957613299612b35565b50601f8301601f19166020016132ae81612bd8565b9150508281528383830111156132c2575f5ffd5b8282602083015e5f602084830101529392505050565b5f5f5f60a084860312156132ea575f5ffd5b6132f48585613251565b925060408401516001600160401b0381111561330e575f5ffd5b8401601f8101861361331e575f5ffd5b805161332c612c5482612c08565b8082825260208201915060208360051b85010192508883111561334d575f5ffd5b602084015b838110156133ec5780516001600160401b0381111561336f575f5ffd5b85016040818c03601f19011215613384575f5ffd5b61338c612b49565b6020820151815260408201516001600160401b038111156133ab575f5ffd5b6020818401019250508b601f8301126133c2575f5ffd5b6133d18c835160208501613280565b60208201528085525050602083019250602081019050613352565b50809550505050506134018560608601613251565b90509250925092565b604081525f61341c6040830185612916565b905082151560208301529392505050565b5f6040828403121561343d575f5ffd5b6120858383613251565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561208857612088613447565b5f5f5f60608486031215613480575f5ffd5b61348984612df7565b925061349760208501612df7565b915061340160408501612df7565b86815260208082018790526001600160601b0319606087811b821660408501526054840187905285901b16607483015282515f9181908501608885015e5f9201608801918252509695505050505050565b604080825283519082018190525f9060208501906060840190835b818110156135385783516001600160a01b0316835260209384019390920191600101613511565b5050838103602080860191909152855180835291810192508501905f5b8181101561357e57613568848451612853565b6040939093019260209290920191600101613555565b50919695505050505050565b8181038181111561208857612088613447565b608081525f6135af6080830186612916565b90506135c8602083018580518252602090810151910152565b6001600160a01b03929092166060919091015292915050565b5f608082840312156135f1575f5ffd5b604051606081016001600160401b038111828210171561361357613613612b35565b6040528251815290508061362960208401612df7565b602082015261363b8460408501613251565b60408201525092915050565b5f5f60c08385031215613658575f5ffd5b61366284846135e1565b91506136718460808501613251565b90509250929050565b5f5f5f60e0848603121561368c575f5ffd5b61369685856135e1565b92506136a58560808601613251565b915060c08401516001600160401b038111156136bf575f5ffd5b8401604081870312156136d0575f5ffd5b6136d8612b49565b815168ffffffffffffffffff811681146136f0575f5ffd5b815260208201516001600160401b0381111561370a575f5ffd5b80830192505086601f83011261371e575f5ffd5b61372d87835160208501613280565b602082015280925050509250925092565b634e487b7160e01b5f52601260045260245ffdfe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a164736f6c634300081c000a000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000004a9c44c97bbf6079db37c4769aebe425bbcdd09a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000006efdbff2a14a7c8e15944d1f4a48f9f95f663a400000000000000000000000001f0a31698c4d065659b9bdc21b3610292a1c506000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fc69cc4a842838bcdc9499178740226062b14e4000000000000000000000000000000000000000000000000000000000000000100000000000000000000000001f0a31698c4d065659b9bdc21b3610292a1c506