0 txs
41 calls
constructor
constructor()
functions
daoURI
viewfunction daoURI() view returns (string)
EXECUTE_PERMISSION_ID
viewfunction EXECUTE_PERMISSION_ID() view returns (bytes32)
getTrustedForwarder
viewfunction getTrustedForwarder() view returns (address)
hasPermission
viewfunction hasPermission(address _where, address _who, bytes32 _permissionId, bytes _data) view returns (bool)
isGranted
viewfunction isGranted(address _where, address _who, bytes32 _permissionId, bytes _data) view returns (bool)
isValidSignature
viewfunction isValidSignature(bytes32 _hash, bytes _signature) view returns (bytes4)
protocolVersion
purefunction protocolVersion() pure returns (uint8[3])
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
REGISTER_STANDARD_CALLBACK_PERMISSION_ID
viewfunction REGISTER_STANDARD_CALLBACK_PERMISSION_ID() view returns (bytes32)
ROOT_PERMISSION_ID
viewfunction ROOT_PERMISSION_ID() view returns (bytes32)
SET_METADATA_PERMISSION_ID
viewfunction SET_METADATA_PERMISSION_ID() view returns (bytes32)
SET_SIGNATURE_VALIDATOR_PERMISSION_ID
viewfunction SET_SIGNATURE_VALIDATOR_PERMISSION_ID() view returns (bytes32)
SET_TRUSTED_FORWARDER_PERMISSION_ID
viewfunction SET_TRUSTED_FORWARDER_PERMISSION_ID() view returns (bytes32)
signatureValidator
viewfunction signatureValidator() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
UPGRADE_DAO_PERMISSION_ID
viewfunction UPGRADE_DAO_PERMISSION_ID() view returns (bytes32)
applyMultiTargetPermissions
nonpayablefunction applyMultiTargetPermissions(tuple[] _items)
applySingleTargetPermissions
nonpayablefunction applySingleTargetPermissions(address _where, tuple[] items)
deposit
payablefunction deposit(address _token, uint256 _amount, string _reference) payable
execute
nonpayablefunction execute(bytes32 _callId, tuple[] _actions, uint256 _allowFailureMap) returns (bytes[] execResults, uint256 failureMap)
grant
nonpayablefunction grant(address _where, address _who, bytes32 _permissionId)
grantWithCondition
nonpayablefunction grantWithCondition(address _where, address _who, bytes32 _permissionId, address _condition)
initialize
nonpayablefunction initialize(bytes _metadata, address _initialOwner, address _trustedForwarder, string daoURI_)
initializeFrom
nonpayablefunction initializeFrom(uint8[3] _previousProtocolVersion, bytes _initData)
registerStandardCallback
nonpayablefunction registerStandardCallback(bytes4 _interfaceId, bytes4 _callbackSelector, bytes4 _magicNumber)
revoke
nonpayablefunction revoke(address _where, address _who, bytes32 _permissionId)
setDaoURI
nonpayablefunction setDaoURI(string newDaoURI)
setMetadata
nonpayablefunction setMetadata(bytes _metadata)
setSignatureValidator
nonpayablefunction setSignatureValidator(address _signatureValidator)
setTrustedForwarder
nonpayablefunction setTrustedForwarder(address _newTrustedForwarder)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
CallbackReceived
event CallbackReceived(address sender, bytes4 indexed sig, bytes data)
Deposited
event Deposited(address indexed sender, address indexed token, uint256 amount, string _reference)
Executed
event Executed(address indexed actor, bytes32 callId, (address to, uint256 value, bytes data)[] actions, uint256 allowFailureMap, uint256 failureMap, bytes[] execResults)
Granted
event Granted(bytes32 indexed permissionId, address indexed here, address where, address indexed who, address condition)
Initialized
event Initialized(uint8 version)
MetadataSet
event MetadataSet(bytes metadata)
NativeTokenDeposited
event NativeTokenDeposited(address sender, uint256 amount)
NewURI
event NewURI(string daoURI)
Revoked
event Revoked(bytes32 indexed permissionId, address indexed here, address where, address indexed who)
SignatureValidatorSet
event SignatureValidatorSet(address signatureValidator)
StandardCallbackRegistered
event StandardCallbackRegistered(bytes4 interfaceId, bytes4 callbackSelector, bytes4 magicNumber)
TrustedForwarderSet
event TrustedForwarderSet(address forwarder)
Upgraded
event Upgraded(address indexed implementation)
errors
ActionFailed
error ActionFailed(uint256 index)
AnyAddressDisallowedForWhoAndWhere
error AnyAddressDisallowedForWhoAndWhere()
ConditionInterfacNotSupported
error ConditionInterfacNotSupported(address condition)
ConditionNotAContract
error ConditionNotAContract(address condition)
GrantWithConditionNotSupported
error GrantWithConditionNotSupported()
InsufficientGas
error InsufficientGas()
NativeTokenDepositAmountMismatch
error NativeTokenDepositAmountMismatch(uint256 expected, uint256 actual)
PermissionAlreadyGrantedForDifferentCondition
error PermissionAlreadyGrantedForDifferentCondition(address where, address who, bytes32 permissionId, address currentCondition, address newCondition)
PermissionsForAnyAddressDisallowed
error PermissionsForAnyAddressDisallowed()
ProtocolVersionUpgradeNotSupported
error ProtocolVersionUpgradeNotSupported(uint8[3] protocolVersion)
ReentrantCall
error ReentrantCall()
TooManyActions
error TooManyActions()
Unauthorized
error Unauthorized(address where, address who, bytes32 permissionId)
UnkownCallback
error UnkownCallback(bytes4 callbackSelector, bytes4 magicNumber)
ZeroAmount
error ZeroAmount()
creation bytecode
0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e7565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051613af66200011f60003960008181610b3a01528181610bd001528181610ee901528181610f7f015261107a0152613af66000f3fe6080604052600436106101e75760003560e01c80637034731b11610102578063d96054c411610095578063e978afe511610064578063e978afe51461070a578063eafb8b061461072a578063ee57e36f1461074a578063fdef91061461076a57610226565b8063d96054c414610662578063da74222814610682578063e2e35563146106a2578063e306bee7146106d657610226565b8063c71bf324116100d1578063c71bf324146105d5578063c9dbc2a414610603578063ce1b815f14610623578063d68bad2c1461064257610226565b80637034731b1461054c578063829331a11461056e578063bfe07da6146105a2578063c4a50145146105b557610226565b806326875b1f1161017a5780633e2ab0d9116101495780633e2ab0d9146104e457806342d8e99e146105045780634f1ef2861461052457806352d1902d1461053757610226565b806326875b1f146104355780632ae9c600146104695780633659cfe61461048b578063388da934146104ab57610226565b80631626ba7e116101b65780631626ba7e1461038857806322844d04146103c157806324b4d73f146103e15780632675fdd01461041557610226565b806301ffc9a7146102bb5780630729d054146102f057806309e56b14146103325780631080f99b1461036657610226565b3661022657604080513381523460208201527f62c2c8e34665db7c56b2cabd7f5fb9702ccd352ffa8150147e450797e9f8e8f3910160405180910390a1005b34801561023257600080fd5b50600036606060006102866000356001600160e01b03191685858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061078a92505050565b604080516001600160e01b03198316602082015291925001604051602081830303815290604052915050915050805190602001f35b3480156102c757600080fd5b506102db6102d6366004612d9f565b610861565b60405190151581526020015b60405180910390f35b3480156102fc57600080fd5b506103247fbf04b4486c9663d805744005c3da000eda93de6e3308a4a7a812eb565327b78d81565b6040519081526020016102e7565b34801561033e57600080fd5b506103247f815fe80e4b37c8582a3b773d1d7071f983eacfd56b5965db654f3087c25ada3381565b34801561037257600080fd5b50610386610381366004612e05565b6108b6565b005b34801561039457600080fd5b506103a86103a3366004612eea565b6108ef565b6040516001600160e01b031990911681526020016102e7565b3480156103cd57600080fd5b506103866103dc366004612f46565b61099f565b3480156103ed57600080fd5b506103247f1f53edd44352e5d15bad2b29233baa93bcd595e09457780bc7c5445bbbe751cc81565b34801561042157600080fd5b506102db610430366004612fce565b610abb565b34801561044157600080fd5b506103247ffaf505be9907aa6951c2ebe5b0312f4980e14f21912ed355372103cc8bd683bc81565b34801561047557600080fd5b5061047e610b06565b6040516102e7919061303a565b34801561049757600080fd5b506103866104a636600461306e565b610b30565b3480156104b757600080fd5b5061012d546104cc906001600160a01b031681565b6040516001600160a01b0390911681526020016102e7565b3480156104f057600080fd5b506103866104ff36600461306e565b610ccd565b34801561051057600080fd5b5061038661051f36600461308b565b610d5b565b6103866105323660046130e3565b610edf565b34801561054357600080fd5b5061032461106d565b34801561055857600080fd5b50610561611132565b6040516102e7919061316d565b34801561057a57600080fd5b506103247f06d294bc8cbad2e393408b20dd019a772661f60b8d633e56761157cb1ec85f8c81565b6103866105b0366004613180565b6111c5565b3480156105c157600080fd5b506103866105d03660046131dc565b6112ff565b3480156105e157600080fd5b506105f56105f0366004613227565b6113a9565b6040516102e7929190613301565b34801561060f57600080fd5b5061038661061e366004613323565b6116cf565b34801561062f57600080fd5b5061012e546001600160a01b03166104cc565b34801561064e57600080fd5b5061038661065d366004613376565b611705565b34801561066e57600080fd5b5061038661067d366004613376565b611740565b34801561068e57600080fd5b5061038661069d36600461306e565b611775565b3480156106ae57600080fd5b506103247f0dcbfb19b09fb8ff4e9af583d4b8e9c8127cc1b26529b4d96dd3b7e77808837281565b3480156106e257600080fd5b506103247f4707e94b25cfce1a7c363508fbb838c35864388ad77284b248282b9746982b9b81565b34801561071657600080fd5b506103866107253660046133b7565b6117a8565b34801561073657600080fd5b5061038661074536600461342c565b6118af565b34801561075657600080fd5b50610386610765366004612e05565b611a79565b34801561077657600080fd5b506102db610785366004612fce565b611aad565b6001600160e01b0319808316600090815260fb6020526040812054909160e09190911b9081166107ff576040517f54bdcc3e0000000000000000000000000000000000000000000000000000000081526001600160e01b03198086166004830152821660248201526044015b60405180910390fd5b837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f4792cb6e46e49876374bea490ba23274bacea6b84c216a64f47abab54027589b33856040516108509291906134c5565b60405180910390a290505b92915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316148061085b5750506001600160e01b03191660009081526033602052604090205460ff1690565b7f4707e94b25cfce1a7c363508fbb838c35864388ad77284b248282b9746982b9b6108e081611abb565b6108ea8383611b43565b505050565b61012d546000906001600160a01b031661090b5750600061085b565b61012d546040517f1626ba7e0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690631626ba7e9061095790869086906004016134e7565b602060405180830381865afa158015610974573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109989190613500565b9392505050565b7f815fe80e4b37c8582a3b773d1d7071f983eacfd56b5965db654f3087c25ada336109c981611abb565b60005b82811015610ab45760008484838181106109e8576109e861351d565b9050606002018036038101906109fe9190613547565b9050600081516002811115610a1557610a156135b0565b03610a3257610a2d8682602001518360400151611b83565b610aab565b600181516002811115610a4757610a476135b0565b03610a5f57610a2d8682602001518360400151611cdc565b600281516002811115610a7457610a746135b0565b03610aab576040517fd4d3bef700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001016109cc565b5050505050565b6000610ac985858585611dd0565b80610ae25750610ae2856001600160a01b038585611dd0565b80610afb5750610afb6001600160a01b03858585611dd0565b90505b949350505050565b610b0e612d6b565b5060408051606081018252600181526003602082015260009181019190915290565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610bce5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084016107f6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610c297f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614610ca55760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f7879000000000000000000000000000000000000000060648201526084016107f6565b610cae81611f4f565b60408051600080825260208201909252610cca91839190611f79565b50565b7f0dcbfb19b09fb8ff4e9af583d4b8e9c8127cc1b26529b4d96dd3b7e778088372610cf781611abb565b61012d805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384169081179091556040519081527f3b25c5d3870ec0eac28822b177f18c9130233ade5b7f857c6a224a507c37fc4e906020015b60405180910390a15050565b600054600290610100900460ff16158015610d7d575060005460ff8083169116105b610def5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107f6565b6000805461ffff191660ff831617610100179055610e1060208501856135d7565b60ff16600114610e4e57836040517f84833d670000000000000000000000000000000000000000000000000000000081526004016107f691906135f2565b6002610e6060408601602087016135d7565b60ff1611610e9757600161013055610e977f2ae9c60000000000000000000000000000000000000000000000000000000000612119565b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a150505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610f7d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084016107f6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610fd87f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146110545760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f7879000000000000000000000000000000000000000060648201526084016107f6565b61105d82611f4f565b61106982826001611f79565b5050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461110d5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016107f6565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b606061012f805461114290613625565b80601f016020809104026020016040519081016040528092919081815260200182805461116e90613625565b80156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b5050505050905090565b826000036111ff576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166112545782341461124f576040517f1abd5610000000000000000000000000000000000000000000000000000000008152600481018490523460248201526044016107f6565b6112aa565b3415611295576040517f1abd5610000000000000000000000000000000000000000000000000000000008152600060048201523460248201526044016107f6565b6112aa6001600160a01b0385163330866121b6565b836001600160a01b0316336001600160a01b03167f2bc500cf071be2d1c1458ed6ff484cd4db4345ada8943dee7ff29e7af3558f768585856040516112f19392919061368a565b60405180910390a350505050565b7ffaf505be9907aa6951c2ebe5b0312f4980e14f21912ed355372103cc8bd683bc61132981611abb565b61133284612119565b6001600160e01b03198316600090815260fb60205260409020805463ffffffff191660e084901c179055604080516001600160e01b0319808716825280861660208301528416918101919091527ffc72fd547553f7a663e0048e590afc9c47b56a4242e960f31cf4c62e23d308b990606001610ed1565b60606000600261013054036113ea576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002610130557fbf04b4486c9663d805744005c3da000eda93de6e3308a4a7a812eb565327b78d61141a81611abb565b610100851115611456576040517f11c763d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8467ffffffffffffffff81111561146f5761146f612e47565b6040519080825280602002602001820160405280156114a257816020015b606081526020019060019003908161148d5790505b50925060008060005b8781101561166f575a92506000808a8a848181106114cb576114cb61351d565b90506020028101906114dd91906136a4565b6114eb90602081019061306e565b6001600160a01b03168b8b858181106115065761150661351d565b905060200281019061151891906136a4565b602001358c8c8681811061152e5761152e61351d565b905060200281019061154091906136a4565b61154e9060408101906136c4565b60405161155c92919061370b565b60006040518083038185875af1925050503d8060008114611599576040519150601f19603f3d011682016040523d82523d6000602084013e61159e565b606091505b50915091505a9350600160ff84161b89166115f257816115ed576040517fa6a7dbbd000000000000000000000000000000000000000000000000000000008152600481018490526024016107f6565b611647565b816116475761160260408661371b565b84101561163b576040517f1c26714c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160ff84161b871896505b8088848151811061165a5761165a61351d565b602090810291909101015250506001016114ab565b50336001600160a01b03167fd4e57c2049f004fb297ef78591cd409503ceb6b2c722d7ffed032fc99e5f3b588a8a8a8a898b6040516116b39695949392919061373d565b60405180910390a2505060016101305550909590945092505050565b7f815fe80e4b37c8582a3b773d1d7071f983eacfd56b5965db654f3087c25ada336116f981611abb565b610ab48585858561223e565b7f815fe80e4b37c8582a3b773d1d7071f983eacfd56b5965db654f3087c25ada3361172f81611abb565b61173a848484611b83565b50505050565b7f815fe80e4b37c8582a3b773d1d7071f983eacfd56b5965db654f3087c25ada3361176a81611abb565b61173a848484611cdc565b7f06d294bc8cbad2e393408b20dd019a772661f60b8d633e56761157cb1ec85f8c61179f81611abb565b611069826125cd565b7f815fe80e4b37c8582a3b773d1d7071f983eacfd56b5965db654f3087c25ada336117d281611abb565b60005b8281101561173a5760008484838181106117f1576117f161351d565b905060a002018036038101906118079190613869565b905060008151600281111561181e5761181e6135b0565b0361183f5761183a816020015182604001518360800151611b83565b6118a6565b600181516002811115611854576118546135b0565b036118705761183a816020015182604001518360800151611cdc565b600281516002811115611885576118856135b0565b036118a6576118a6816020015182604001518360800151846060015161223e565b506001016117d5565b600054600290610100900460ff161580156118d1575060005460ff8083169116105b6119435760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107f6565b6000805461ffff191660ff8316176101001790556001610130556119867f9385547e00000000000000000000000000000000000000000000000000000000612119565b6119af7f1626ba7e00000000000000000000000000000000000000000000000000000000612119565b6119d87f7034731b00000000000000000000000000000000000000000000000000000000612119565b611a017f2ae9c60000000000000000000000000000000000000000000000000000000000612119565b611a0961262f565b611a13878761273c565b611a1c846125cd565b611a268383611b43565b611a2f8561276d565b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050505050565b7f4707e94b25cfce1a7c363508fbb838c35864388ad77284b248282b9746982b9b611aa381611abb565b6108ea838361273c565b6000610afb85858585610abb565b611afe3033836000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610abb92505050565b610cca576040517f1e09743f000000000000000000000000000000000000000000000000000000008152306004820152336024820152604481018290526064016107f6565b61012f611b51828483613946565b507fe9b617ecb5f63f6a9ccd8d4d5fa0d7b2ef9b17ce3f48e6b135808d6a40e677428282604051610d4f929190613a06565b6001600160a01b038381161480611ba257506001600160a01b03828116145b15611bd9576040517f24159e5b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051692822a926a4a9a9a4a7a760b11b6020808301919091526bffffffffffffffffffffffff19606086811b8216602a85015287901b16603e83015260528083018590528351808403909101815260729092019092528051910120600090600081815260c960205260409020549091506001600160a01b031680610ab457600082815260c96020908152604091829020805473ffffffffffffffffffffffffffffffffffffffff1916600290811790915582516001600160a01b0389811682529281019190915290861691339186917f0f579ad49235a8c1fd9041427e7067b1eb10926bbed380bf6fabc73e0e807644910160405180910390a45050505050565b60408051692822a926a4a9a9a4a7a760b11b6020808301919091526bffffffffffffffffffffffff19606086811b8216602a85015287901b16603e83015260528083018590528351808403909101815260729092019092528051910120600090600081815260c960205260409020549091506001600160a01b03161561173a57600081815260c96020908152604091829020805473ffffffffffffffffffffffffffffffffffffffff1916905590516001600160a01b038681168252851691339185917f3ca48185ec3f6e47e24db18b13f1c65b1ce05da1659f9c1c4fe717dda5f67524910160405180910390a450505050565b60008060c96000611e42888888604051692822a926a4a9a9a4a7a760b11b60208201526bffffffffffffffffffffffff19606084811b8216602a84015285901b16603e820152605281018290526000906072016040516020818303038152906040528051906020012090509392505050565b81526020810191909152604001600020546001600160a01b0316905080611e6d576000915050610afe565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6001600160a01b03821601611ea7576001915050610afe565b6040517f2675fdd00000000000000000000000000000000000000000000000000000000081526001600160a01b03821690632675fdd090611ef2908990899089908990600401613a1a565b602060405180830381865afa925050508015611f2b575060408051601f3d908101601f19168201909252611f2891810190613a4c565b60015b15611f43578015611f4157600192505050610afe565b505b50600095945050505050565b7f1f53edd44352e5d15bad2b29233baa93bcd595e09457780bc7c5445bbbe751cc61106981611abb565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611fac576108ea836127f3565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612006575060408051601f3d908101601f1916820190925261200391810190613a6e565b60015b6120785760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016107f6565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461210d5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016107f6565b506108ea8383836128be565b6001600160e01b031980821690036121735760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e746572666163652069640000000060448201526064016107f6565b6001600160e01b031916600090815260336020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261173a9085906128e3565b806001600160a01b0381163b61228b576040517f48359af60000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016107f6565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f2675fdd00000000000000000000000000000000000000000000000000000000060048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015612308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232c9190613a4c565b61236d576040517f740b71160000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016107f6565b6001600160a01b0385811614801561238d57506001600160a01b03848116145b156123c4576040517f85f1ba9900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0385811614806123e357506001600160a01b03848116145b15612451577f815fe80e4b37c8582a3b773d1d7071f983eacfd56b5965db654f3087c25ada3383148061241a575061241a836129cb565b15612451576040517f24159e5b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051692822a926a4a9a9a4a7a760b11b6020808301919091526bffffffffffffffffffffffff19606088811b8216602a85015289901b16603e83015260528083018790528351808403909101815260729092019092528051910120600090600081815260c960205260409020549091506001600160a01b03168061254f57600082815260c96020908152604091829020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0387811691821790925583518b8316815292830152881691339188917f0f579ad49235a8c1fd9041427e7067b1eb10926bbed380bf6fabc73e0e807644910160405180910390a46125c4565b826001600160a01b0316816001600160a01b0316146125c4576040517f0b98789e0000000000000000000000000000000000000000000000000000000081526001600160a01b03808916600483015280881660248301526044820187905280831660648301528416608482015260a4016107f6565b50505050505050565b61012e805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040519081527fd91237492a9e30cd2faf361fc103998a382ff0ec2b1b07dc1cbebb76ae2f1ea29060200160405180910390a150565b6126587f150b7a0200000000000000000000000000000000000000000000000000000000612119565b6126817f4e2312e000000000000000000000000000000000000000000000000000000000612119565b60fb6020527f5a08f87af82de422c581ce019b2e54a9c17372e9cba575ae0470ba2482d63686805463ffffffff1990811663150b7a02179091557fe1cfe341950d56d8854f782066100d5ae1d5930cdb4949b973e554a343efc6c38054821663f23a6e611790557fbc197c81000000000000000000000000000000000000000000000000000000006000527f08ba3617671847c1c169da222a5bc01cfdefcc3c4f1e5525214a474479c89123805490911663bc197c81179055565b7fbb39ebb37e60fb5d606ffdb749d2336e56b88e6c88c4bd6513b308f643186eed8282604051610d4f929190613a06565b600054610100900460ff166127ea5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f6565b610cca81612ac4565b6001600160a01b0381163b6128705760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016107f6565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6128c783612aef565b6000825111806128d45750805b156108ea5761173a8383612b2f565b6000612938826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612b549092919063ffffffff16565b90508051600014806129595750808060200190518101906129599190613a4c565b6108ea5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016107f6565b60007fbf04b4486c9663d805744005c3da000eda93de6e3308a4a7a812eb565327b78d821480612a1a57507f1f53edd44352e5d15bad2b29233baa93bcd595e09457780bc7c5445bbbe751cc82145b80612a4457507f4707e94b25cfce1a7c363508fbb838c35864388ad77284b248282b9746982b9b82145b80612a6e57507f06d294bc8cbad2e393408b20dd019a772661f60b8d633e56761157cb1ec85f8c82145b80612a9857507f0dcbfb19b09fb8ff4e9af583d4b8e9c8127cc1b26529b4d96dd3b7e77808837282145b8061085b5750507ffaf505be9907aa6951c2ebe5b0312f4980e14f21912ed355372103cc8bd683bc1490565b610cca30827f815fe80e4b37c8582a3b773d1d7071f983eacfd56b5965db654f3087c25ada33611b83565b612af8816127f3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606109988383604051806060016040528060278152602001613a9a60279139612b63565b6060610afe8484600085612bdb565b6060600080856001600160a01b031685604051612b809190613a87565b600060405180830381855af49150503d8060008114612bbb576040519150601f19603f3d011682016040523d82523d6000602084013e612bc0565b606091505b5091509150612bd186838387612ccd565b9695505050505050565b606082471015612c535760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016107f6565b600080866001600160a01b03168587604051612c6f9190613a87565b60006040518083038185875af1925050503d8060008114612cac576040519150601f19603f3d011682016040523d82523d6000602084013e612cb1565b606091505b5091509150612cc287838387612ccd565b979650505050505050565b60608315612d3c578251600003612d35576001600160a01b0385163b612d355760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107f6565b5081610afe565b610afe8383815115612d515781518083602001fd5b8060405162461bcd60e51b81526004016107f6919061316d565b60405180606001604052806003906020820280368337509192915050565b6001600160e01b031981168114610cca57600080fd5b600060208284031215612db157600080fd5b813561099881612d89565b60008083601f840112612dce57600080fd5b50813567ffffffffffffffff811115612de657600080fd5b602083019150836020828501011115612dfe57600080fd5b9250929050565b60008060208385031215612e1857600080fd5b823567ffffffffffffffff811115612e2f57600080fd5b612e3b85828601612dbc565b90969095509350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112612e6e57600080fd5b813567ffffffffffffffff80821115612e8957612e89612e47565b604051601f8301601f19908116603f01168101908282118183101715612eb157612eb1612e47565b81604052838152866020858801011115612eca57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060408385031215612efd57600080fd5b82359150602083013567ffffffffffffffff811115612f1b57600080fd5b612f2785828601612e5d565b9150509250929050565b6001600160a01b0381168114610cca57600080fd5b600080600060408486031215612f5b57600080fd5b8335612f6681612f31565b9250602084013567ffffffffffffffff80821115612f8357600080fd5b818601915086601f830112612f9757600080fd5b813581811115612fa657600080fd5b876020606083028501011115612fbb57600080fd5b6020830194508093505050509250925092565b60008060008060808587031215612fe457600080fd5b8435612fef81612f31565b93506020850135612fff81612f31565b925060408501359150606085013567ffffffffffffffff81111561302257600080fd5b61302e87828801612e5d565b91505092959194509250565b60608101818360005b600381101561306557815160ff16835260209283019290910190600101613043565b50505092915050565b60006020828403121561308057600080fd5b813561099881612f31565b6000806000608084860312156130a057600080fd5b60608401858111156130b157600080fd5b8493503567ffffffffffffffff8111156130ca57600080fd5b6130d686828701612dbc565b9497909650939450505050565b600080604083850312156130f657600080fd5b823561310181612f31565b9150602083013567ffffffffffffffff811115612f1b57600080fd5b60005b83811015613138578181015183820152602001613120565b50506000910152565b6000815180845261315981602086016020860161311d565b601f01601f19169290920160200192915050565b6020815260006109986020830184613141565b6000806000806060858703121561319657600080fd5b84356131a181612f31565b935060208501359250604085013567ffffffffffffffff8111156131c457600080fd5b6131d087828801612dbc565b95989497509550505050565b6000806000606084860312156131f157600080fd5b83356131fc81612d89565b9250602084013561320c81612d89565b9150604084013561321c81612d89565b809150509250925092565b6000806000806060858703121561323d57600080fd5b84359350602085013567ffffffffffffffff8082111561325c57600080fd5b818701915087601f83011261327057600080fd5b81358181111561327f57600080fd5b8860208260051b850101111561329457600080fd5b95986020929092019750949560400135945092505050565b600081518084526020808501808196508360051b8101915082860160005b858110156132f45782840389526132e2848351613141565b988501989350908401906001016132ca565b5091979650505050505050565b60408152600061331460408301856132ac565b90508260208301529392505050565b6000806000806080858703121561333957600080fd5b843561334481612f31565b9350602085013561335481612f31565b925060408501359150606085013561336b81612f31565b939692955090935050565b60008060006060848603121561338b57600080fd5b833561339681612f31565b925060208401356133a681612f31565b929592945050506040919091013590565b600080602083850312156133ca57600080fd5b823567ffffffffffffffff808211156133e257600080fd5b818501915085601f8301126133f657600080fd5b81358181111561340557600080fd5b86602060a08302850101111561341a57600080fd5b60209290920196919550909350505050565b6000806000806000806080878903121561344557600080fd5b863567ffffffffffffffff8082111561345d57600080fd5b6134698a838b01612dbc565b90985096506020890135915061347e82612f31565b90945060408801359061349082612f31565b909350606088013590808211156134a657600080fd5b506134b389828a01612dbc565b979a9699509497509295939492505050565b6001600160a01b0383168152604060208201526000610afe6040830184613141565b828152604060208201526000610afe6040830184613141565b60006020828403121561351257600080fd5b815161099881612d89565b634e487b7160e01b600052603260045260246000fd5b80356003811061354257600080fd5b919050565b60006060828403121561355957600080fd5b6040516060810181811067ffffffffffffffff8211171561357c5761357c612e47565b60405261358883613533565b8152602083013561359881612f31565b60208201526040928301359281019290925250919050565b634e487b7160e01b600052602160045260246000fd5b803560ff8116811461354257600080fd5b6000602082840312156135e957600080fd5b610998826135c6565b60608101818360005b60038110156130655760ff61360f836135c6565b16835260209283019291909101906001016135fb565b600181811c9082168061363957607f821691505b60208210810361365957634e487b7160e01b600052602260045260246000fd5b50919050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b838152604060208201526000610afb60408301848661365f565b60008235605e198336030181126136ba57600080fd5b9190910192915050565b6000808335601e198436030181126136db57600080fd5b83018035915067ffffffffffffffff8211156136f657600080fd5b602001915036819003821315612dfe57600080fd5b8183823760009101908152919050565b60008261373857634e487b7160e01b600052601260045260246000fd5b500490565b600060a08201888352602060a0818501528188835260c08501905060c08960051b86010192508960005b8a81101561383a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408786030183528135605e198d36030181126137aa57600080fd5b8c01606081356137b981612f31565b6001600160a01b03168752818601358688015260408083013536849003601e190181126137e557600080fd5b90920186810192903567ffffffffffffffff81111561380357600080fd5b80360384131561381257600080fd5b82828a0152613824838a01828661365f565b9850505093850193505090830190600101613767565b50505050856040840152846060840152828103608084015261385c81856132ac565b9998505050505050505050565b600060a0828403121561387b57600080fd5b60405160a0810181811067ffffffffffffffff8211171561389e5761389e612e47565b6040526138aa83613533565b815260208301356138ba81612f31565b602082015260408301356138cd81612f31565b604082015260608301356138e081612f31565b60608201526080928301359281019290925250919050565b601f8211156108ea57600081815260208120601f850160051c8101602086101561391f5750805b601f850160051c820191505b8181101561393e5782815560010161392b565b505050505050565b67ffffffffffffffff83111561395e5761395e612e47565b6139728361396c8354613625565b836138f8565b6000601f8411600181146139a6576000851561398e5750838201355b600019600387901b1c1916600186901b178355610ab4565b600083815260209020601f19861690835b828110156139d757868501358255602094850194600190920191016139b7565b50868210156139f45760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b602081526000610afe60208301848661365f565b60006001600160a01b03808716835280861660208401525083604083015260806060830152612bd16080830184613141565b600060208284031215613a5e57600080fd5b8151801515811461099857600080fd5b600060208284031215613a8057600080fd5b5051919050565b600082516136ba81846020870161311d56fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220888307d504d18bb640ce116088445c3033d67d0622786c780e130054bd40c5a864736f6c63430008110033