0 txs
4.7k calls
constructor
constructor()
functions
encodeBeaconDeploymentParams
purefunction encodeBeaconDeploymentParams(tuple deployParams) pure returns (bytes32)
encodeBeaconDeploymentParams
purefunction encodeBeaconDeploymentParams(tuple deployParams) pure returns (bytes32)
encodeDeploymentParams
purefunction encodeDeploymentParams(tuple deployParams) pure returns (bytes32)
encodeSalt
purefunction encodeSalt(address sender, bytes32 deploymentSalt) pure returns (bytes32)
getBeaconVaultAddress
viewfunction getBeaconVaultAddress(address beaconAddress, bytes32 deploymentSalt) view returns (address)
getVaultAddress
viewfunction getVaultAddress(bytes32 deploymentSalt) view returns (address)
isSignatureVerifier
viewfunction isSignatureVerifier(address account) view returns (bool)
owner
viewfunction owner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
addSignatureVerifier
nonpayablefunction addSignatureVerifier(address _signatureVerifier)
createBeaconVault
payablefunction createBeaconVault(address beaconAddress, address globalTradeGuardian, bytes32 salt, tuple baseNativeWrapperConfig, tuple coreAccessControlConfig) payable returns (address vault)
createBeaconVault
payablefunction createBeaconVault(address beaconAddress, address globalTradeGuardian, bytes32 salt, tuple baseNativeWrapperConfig, tuple coreAccessControlConfig) payable returns (address vault)
createBeaconVaultWithPermission
payablefunction createBeaconVaultWithPermission(tuple deployParams, bytes authorizedSignature) payable returns (address vault)
createBeaconVaultWithPermission
payablefunction createBeaconVaultWithPermission(tuple deployParams, bytes authorizedSignature) payable returns (address vault)
createVault
payablefunction createVault(address tradingVaultImplementation, address globalTradeGuardian, bytes32 salt, tuple baseNativeWrapperConfig, tuple coreAccessControlConfig) payable returns (address vault)
createVaultWithPermission
payablefunction createVaultWithPermission(tuple deployParams, bytes authorizedSignature) payable returns (address vault)
initialize
nonpayablefunction initialize(address _owner, address[] _initialVerifiers)
removeSignatureVerifier
nonpayablefunction removeSignatureVerifier(address _signatureVerifier)
renounceOwnership
nonpayablefunction renounceOwnership()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
Initialized
event Initialized(uint64 version)
LegacyDeployOnNewSignature
event LegacyDeployOnNewSignature()
NewBeaconVaultDeploy
event NewBeaconVaultDeploy(address sender, address vault, address upgradableBeaconAddress, bytes32 salt)
NewVaultDeploy
event NewVaultDeploy(address sender, address vault, bytes32 salt)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
SignatureVerifierAdded
event SignatureVerifierAdded(address signatureVerifier)
SignatureVerifierRemoved
event SignatureVerifierRemoved(address signatureVerifier)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
DeadlineExceeded
error DeadlineExceeded()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedInnerCall
error FailedInnerCall()
InvalidAddress
error InvalidAddress()
InvalidInitialization
error InvalidInitialization()
InvalidSignature
error InvalidSignature()
InvalidSignatureLength
error InvalidSignatureLength()
MismatchedChainId
error MismatchedChainId()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255b6200010460003960008181610f4101528181610f6a01526110d4015261255b6000f3fe6080604052600436106101555760003560e01c80638a6c4284116100bb578063afb83ce61161007f578063f073cecd11610059578063f073cecd14610391578063f106b911146103f9578063f2fde38b1461041957600080fd5b8063afb83ce61461033e578063cd0bcff51461035e578063d9f35dd41461037e57600080fd5b80638a6c4284146102835780638adc758c146101975780638da5cb5b146102a3578063946d9204146102e0578063ad3cb1cc1461030057600080fd5b806352d1902d1161011d578063584cec7e116100f7578063584cec7e1461024857806367d233ef1461025b578063715018a61461026e57600080fd5b806352d1902d14610200578063545a18bc14610215578063555b5a891461022857600080fd5b8063106a1cca1461015a57806340e14d3914610197578063450c2543146101c55780634aee8fc6146101d85780634f1ef286146101eb575b600080fd5b34801561016657600080fd5b5061017a610175366004611b76565b610439565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101a357600080fd5b506101b76101b2366004611bba565b61044d565b60405190815260200161018e565b61017a6101d3366004611c09565b61047d565b61017a6101e6366004611c8e565b61055c565b6101fe6101f9366004611d4c565b61065f565b005b34801561020c57600080fd5b506101b761067e565b61017a610223366004611e36565b6106ad565b34801561023457600080fd5b506101b7610243366004611b76565b6107c7565b61017a610256366004611e36565b61080c565b61017a610269366004611c8e565b61096a565b34801561027a57600080fd5b506101fe610a63565b34801561028f57600080fd5b5061017a61029e366004611e9f565b610a77565b3480156102af57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031661017a565b3480156102ec57600080fd5b506101fe6102fb366004611eb8565b610a9e565b34801561030c57600080fd5b50610331604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161018e9190611fcf565b34801561034a57600080fd5b506101fe610359366004611fe2565b610bfc565b34801561036a57600080fd5b506101fe610379366004611fe2565b610c10565b61017a61038c366004611e36565b610c21565b34801561039d57600080fd5b506103e96103ac366004611fe2565b6001600160a01b031660009081527f1e05315c660d2d2e3b92cca2a3c5f6e530c7e4414b0a08bd1d920d985b0e0300602052604090205460ff1690565b604051901515815260200161018e565b34801561040557600080fd5b506101b7610414366004611bba565b610d42565b34801561042557600080fd5b506101fe610434366004611fe2565b610d55565b6000610446838330610d95565b9392505050565b6000816040516020016104609190612284565b604051602081830303815290604052805190602001209050919050565b60008061048a33866107c7565b90506104968782610e40565b60405163536a37d960e01b81529093506001600160a01b038416915063536a37d9906104ca90879087908b906004016122d1565b600060405180830381600087803b1580156104e457600080fd5b505af11580156104f8573d6000803e3d6000fd5b5050604080513381526001600160a01b0380871660208301528b1691810191909152606081018490527fada83c846840018b3edf77b6a53b4e5b89e51b3a5672f3b3eb550daadf8eaedb925060800190505b60405180910390a15095945050505050565b60008061056933866107c7565b90506105758782610e40565b604051634a5f400960e11b81529093506001600160a01b03841691506394be8012906105a990879087908b90600401612313565b600060405180830381600087803b1580156105c357600080fd5b505af19250505080156105d4575060015b61060e576105e482858589610e5b565b6040517f5c38fcbef6b336749ba73d53974e97e8dba84f87af5aeb0661e6cc74cf0083b990600090a15b604080513381526001600160a01b038085166020830152891691810191909152606081018290527fada83c846840018b3edf77b6a53b4e5b89e51b3a5672f3b3eb550daadf8eaedb9060800161054a565b610667610f36565b61067082610fed565b61067a8282610ff5565b5050565b60006106886110c9565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006106ba848484611112565b6106d46106ca6020860186611fe2565b8560800135610e40565b9150506001600160a01b03811663536a37d960a086016106f760c0880188612341565b6107076040890160208a01611fe2565b6040518463ffffffff1660e01b8152600401610725939291906122d1565b600060405180830381600087803b15801561073f57600080fd5b505af1158015610753573d6000803e3d6000fd5b507fada83c846840018b3edf77b6a53b4e5b89e51b3a5672f3b3eb550daadf8eaedb925033915083905061078a6020880188611fe2565b604080516001600160a01b039485168152928416602084015292169181019190915260808087013560608301520160405180910390a19392505050565b600081836040516020016107ee9291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120905092915050565b6000610819848484611215565b61083d6000734aeb164998db4eb8ab945620d4d1db59e2ad551386608001356112d6565b90506000634a5f400960e11b60a0860161085a60c0880188612361565b61086a6040890160208a01611fe2565b60405160240161087c93929190612313565b60408051601f19818403018152919052602080820180516001600160e01b03166001600160e01b031990941693909317909252915061091690839063278f794360e11b906108cc90890189611fe2565b846040516024016108de929190612377565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915234611365565b50604080513381526001600160a01b038416602082015260808701358183015290517fff81028ff235417e359d06e67d2801d23a0b5bdc1b96b34392c79b1165d2d7df9181900360600190a1509392505050565b60008061097733866107c7565b90506109996000734aeb164998db4eb8ab945620d4d1db59e2ad5513836112d6565b915060006394be801260e01b8585896040516024016109ba93929190612313565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050509050610a0e83634f1ef28660e01b8a846040516024016108de929190612377565b50604080513381526001600160a01b03851660208201529081018390527fff81028ff235417e359d06e67d2801d23a0b5bdc1b96b34392c79b1165d2d7df9060600160405180910390a1505095945050505050565b610a6b611402565b610a75600061145d565b565b6000610a98734aeb164998db4eb8ab945620d4d1db59e2ad551383306114db565b92915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610ae95750825b905060008267ffffffffffffffff166001148015610b065750303b155b905081158015610b14575080155b15610b325760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b6657845468ff00000000000000001916680100000000000000001785555b610b6f87611557565b855160005b81811015610ba657610b9e888281518110610b9157610b91612399565b6020026020010151611568565b600101610b74565b50508315610bf357845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610c04611402565b610c0d8161160b565b50565b610c18611402565b610c0d81611568565b6000610c2e848484611215565b610c3e6106ca6020860186611fe2565b9150506001600160a01b0381166394be801260a08601610c6160c0880188612361565b610c716040890160208a01611fe2565b6040518463ffffffff1660e01b8152600401610c8f93929190612313565b600060405180830381600087803b158015610ca957600080fd5b505af1925050508015610cba575060015b610d1257610ce88160a08601610cd360c0880188612361565b610ce36040890160208a01611fe2565b610e5b565b6040517f5c38fcbef6b336749ba73d53974e97e8dba84f87af5aeb0661e6cc74cf0083b990600090a15b7fada83c846840018b3edf77b6a53b4e5b89e51b3a5672f3b3eb550daadf8eaedb338261078a6020880188611fe2565b60008160405160200161046091906123af565b610d5d611402565b6001600160a01b038116610d8c57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610c0d8161145d565b604080517fb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f360609081527f1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c83527660195155f3363d3d373d3d363d602036600436635c60da6020526001600160a01b0386166860523d8160223d397360a01b176009526074600c209190925260009182905281905b9050610e378185856116a3565b95945050505050565b600080610e4f600085856116c5565b915091505b9250929050565b836001600160a01b031663536a37d9846040518060400160405280866000016020810190610e899190611fe2565b6001600160a01b03168152602001868060200190610ea7919061244c565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050509152506040516001600160e01b031960e085901b168152610efe9291908690600401612496565b600060405180830381600087803b158015610f1857600080fd5b505af1158015610f2c573d6000803e3d6000fd5b5050505050505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610fcf57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610fc37f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610a755760405163703e46dd60e11b815260040160405180910390fd5b610c0d611402565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561104f575060408051601f3d908101601f1916820190925261104c91810190612523565b60015b61107757604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d83565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146110ba57604051632a87526960e21b815260048101829052602401610d83565b6110c483836117c5565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a755760405163703e46dd60e11b815260040160405180910390fd5b60006111216020850185611fe2565b6001600160a01b0316036111485760405163e6c4247b60e01b815260040160405180910390fd5b428360600135101561116d5760405163559895a360e01b815260040160405180910390fd5b468360400135141580156111875750600019836040013514155b156111a55760405163029b0df160e41b815260040160405180910390fd5b7f1e05315c660d2d2e3b92cca2a3c5f6e530c7e4414b0a08bd1d920d985b0e030061120f816111d386610d42565b85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061181b92505050565b50505050565b60006112246020850185611fe2565b6001600160a01b03160361124b5760405163e6c4247b60e01b815260040160405180910390fd5b42836060013510156112705760405163559895a360e01b815260040160405180910390fd5b4683604001351415801561128a5750600019836040013514155b156112a85760405163029b0df160e41b815260040160405180910390fd5b7f1e05315c660d2d2e3b92cca2a3c5f6e530c7e4414b0a08bd1d920d985b0e030061120f816111d38661044d565b60006040517fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e207660405261600960205283601e5268603d3d8160223d3973600a5282605f602187f59150816113565763301164256000526004601cfd5b60405260006060529392505050565b60608147101561138a5760405163cd78605960e01b8152306004820152602401610d83565b600080856001600160a01b031684866040516113a6919061253c565b60006040518083038185875af1925050503d80600081146113e3576040519150601f19603f3d011682016040523d82523d6000602084013e6113e8565b606091505b50915091506113f8868383611877565b9695505050505050565b336114347f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610a755760405163118cdaa760e01b8152336004820152602401610d83565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b600080610e2a85604080517fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f360609081527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e20768352616009602052601e9390935268603d3d8160223d3973600a52605f6021209152600090915290565b61155f6118d3565b610c0d81611921565b6001600160a01b03811661158f5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b03811660008181527f1e05315c660d2d2e3b92cca2a3c5f6e530c7e4414b0a08bd1d920d985b0e03006020818152604092839020805460ff191660011790559151928352917f0f35112fc04ac27795ba9e631146295f8a5f09f6c4016988f701e7919bdce46f91015b60405180910390a15050565b6001600160a01b0381166116325760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b03811660008181527f1e05315c660d2d2e3b92cca2a3c5f6e530c7e4414b0a08bd1d920d985b0e03006020818152604092839020805460ff191690559151928352917f41913741c8622c4e49c9e9ca9ab043835b44e88899f3572dc5522aaa8f77705491016115ff565b600060ff60005350603592835260601b60015260155260556000908120915290565b6000806040517fb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f36060527f1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c6040527660195155f3363d3d373d3d363d602036600436635c60da6020528460601b60601c6860523d8160223d397360a01b176009526074600c2060358201523060581b815260ff8153836015820152605581209150813b61178d57836074600c88f59150816117885763301164256000526004601cfd5b6117b3565b6001925085156117b35760003860003889865af16117b35763b12d13eb6000526004601cfd5b80604052506000606052935093915050565b6117ce82611929565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611813576110c482826119ad565b61067a611a1a565b600061182683611a39565b905060006118348284611a74565b6001600160a01b03811660009081526020879052604090205490915060ff1661187057604051638baa579f60e01b815260040160405180910390fd5b5050505050565b60608261188c5761188782611af3565b610446565b81511580156118a357506001600160a01b0384163b155b156118cc57604051639996b31560e01b81526001600160a01b0385166004820152602401610d83565b5080610446565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610a7557604051631afcd79f60e31b815260040160405180910390fd5b610d5d6118d3565b806001600160a01b03163b60000361195f57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d83565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516119ca919061253c565b600060405180830381855af49150503d8060008114611a05576040519150601f19603f3d011682016040523d82523d6000602084013e611a0a565b606091505b5091509150610e37858383611877565b3415610a755760405163b398979f60e01b815260040160405180910390fd5b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01610460565b600080600080611a8385611b1c565b6040805160008152602081018083528b905260ff8316918101919091526060810184905260808101839052929550909350915060019060a0016020604051602081039080840390855afa158015611ade573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b805115611b035780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60008060008351604114611b4357604051634be6321b60e01b815260040160405180910390fd5b50505060208101516040820151606090920151909260009190911a90565b6001600160a01b0381168114610c0d57600080fd5b60008060408385031215611b8957600080fd5b8235611b9481611b61565b946020939093013593505050565b600060e08284031215611bb457600080fd5b50919050565b600060208284031215611bcc57600080fd5b813567ffffffffffffffff811115611be357600080fd5b611bef84828501611ba2565b949350505050565b600060208284031215611bb457600080fd5b600080600080600060a08688031215611c2157600080fd5b8535611c2c81611b61565b94506020860135611c3c81611b61565b935060408601359250611c528760608801611bf7565b9150608086013567ffffffffffffffff811115611c6e57600080fd5b860160408189031215611c8057600080fd5b809150509295509295909350565b600080600080600060a08688031215611ca657600080fd5b8535611cb181611b61565b94506020860135611cc181611b61565b935060408601359250611cd78760608801611bf7565b9150608086013567ffffffffffffffff811115611cf357600080fd5b860160a08189031215611c8057600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611d4457611d44611d05565b604052919050565b60008060408385031215611d5f57600080fd5b8235611d6a81611b61565b915060208381013567ffffffffffffffff80821115611d8857600080fd5b818601915086601f830112611d9c57600080fd5b813581811115611dae57611dae611d05565b611dc0601f8201601f19168501611d1b565b91508082528784828501011115611dd657600080fd5b80848401858401376000848284010152508093505050509250929050565b60008083601f840112611e0657600080fd5b50813567ffffffffffffffff811115611e1e57600080fd5b602083019150836020828501011115610e5457600080fd5b600080600060408486031215611e4b57600080fd5b833567ffffffffffffffff80821115611e6357600080fd5b611e6f87838801611ba2565b94506020860135915080821115611e8557600080fd5b50611e9286828701611df4565b9497909650939450505050565b600060208284031215611eb157600080fd5b5035919050565b60008060408385031215611ecb57600080fd5b8235611ed681611b61565b915060208381013567ffffffffffffffff80821115611ef457600080fd5b818601915086601f830112611f0857600080fd5b813581811115611f1a57611f1a611d05565b8060051b9150611f2b848301611d1b565b8181529183018401918481019089841115611f4557600080fd5b938501935b83851015611f6f5784359250611f5f83611b61565b8282529385019390850190611f4a565b8096505050505050509250929050565b60005b83811015611f9a578181015183820152602001611f82565b50506000910152565b60008151808452611fbb816020860160208601611f7f565b601f01601f19169290920160200192915050565b6020815260006104466020830184611fa3565b600060208284031215611ff457600080fd5b813561044681611b61565b6000808335601e1984360301811261201657600080fd5b830160208101925035905067ffffffffffffffff81111561203657600080fd5b8060051b3603821315610e5457600080fd5b8183526000602080850194508260005b8581101561208657813561206b81611b61565b6001600160a01b031687529582019590820190600101612058565b509495945050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b81835260006020808501808196508560051b810191508460005b8781101561213f5782840389528135601e198836030181126120f557600080fd5b8701858101903567ffffffffffffffff81111561211157600080fd5b80360382131561212057600080fd5b61212b868284612091565b9a87019a95505050908401906001016120d4565b5091979650505050505050565b6000813561215981611b61565b6001600160a01b031683526121716020830183611fff565b60a0602086015261218660a086018284612048565b9150506121966040840184611fff565b85830360408701526121a9838284612048565b925050506121ba6060840184611fff565b85830360608701526121cd8382846120ba565b925050506121de6080840184611fff565b85830360808701526113f88382846120ba565b600081356121fe81611b61565b6001600160a01b03908116845260208301359061221a82611b61565b808216602086015260408401356040860152606084013560608601526080840135608086015260a0840135915061225082611b61565b1660a084015260c082013536839003609e1901811261226e57600080fd5b60e060c0850152611bef60e0850184830161214c565b60208152600061044660208301846121f1565b600081356122a481611b61565b6001600160a01b031683526122bc6020830183611fff565b60406020860152610e37604086018284612048565b600084356122de81611b61565b6001600160a01b038082168452606060208501526122ff6060850187612297565b925080851660408501525050949350505050565b6000843561232081611b61565b6001600160a01b038082168452606060208501526122ff606085018761214c565b60008235603e1983360301811261235757600080fd5b9190910192915050565b60008235609e1983360301811261235757600080fd5b6001600160a01b0383168152604060208201526000611bef6040830184611fa3565b634e487b7160e01b600052603260045260246000fd5b60208152600082356123c081611b61565b6001600160a01b038082166020850152602085013591506123e082611b61565b80821660408501526040850135606085015260608501356080850152608085013560a085015260a0850135915061241682611b61565b1660c08381019190915283013536849003603e1901811261243657600080fd5b60e080840152611bef6101008401858301612297565b6000808335601e1984360301811261246357600080fd5b83018035915067ffffffffffffffff82111561247e57600080fd5b6020019150600581901b3603821315610e5457600080fd5b600084356124a381611b61565b6001600160a01b0380821684526020915060608285015260a08401818751166060860152828701516040608087015281815180845260c0880191508583019350600092505b8083101561250a578351851682529285019260019290920191908501906124e8565b5080955050505080851660408501525050949350505050565b60006020828403121561253557600080fd5b5051919050565b60008251612357818460208701611f7f56fea164736f6c6343000814000a