0 txs
307 calls
constructor
constructor()
functions
chainsMetadata
viewfunction chainsMetadata(uint64) view returns (address targetAddress, uint256 gasLimit)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
defaultAdmin
viewfunction defaultAdmin() view returns (address)
defaultAdminDelay
viewfunction defaultAdminDelay() view returns (uint48)
defaultAdminDelayIncreaseWait
viewfunction defaultAdminDelayIncreaseWait() view returns (uint48)
getFee
viewfunction getFee(uint64 destinationChainSelector, address recipient, uint256 amount, bytes data) view returns (uint256)
getFee
viewfunction getFee(uint64 destinationChainSelector, address recipient, uint256 amount) view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getRouter
viewfunction getRouter() view returns (address)
gyd
viewfunction gyd() view returns (address)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
owner
viewfunction owner() view returns (address)
pendingDefaultAdmin
viewfunction pendingDefaultAdmin() view returns (address newAdmin, uint48 schedule)
pendingDefaultAdminDelay
viewfunction pendingDefaultAdminDelay() view returns (uint48 newDelay, uint48 schedule)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
router
viewfunction router() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
totalBridgedGYD
viewfunction totalBridgedGYD() view returns (uint256)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
acceptDefaultAdminTransfer
nonpayablefunction acceptDefaultAdminTransfer()
addChain
nonpayablefunction addChain(uint64 chainSelector, address gydAddress, uint256 gasLimit)
beginDefaultAdminTransfer
nonpayablefunction beginDefaultAdminTransfer(address newAdmin)
bridgeToken
payablefunction bridgeToken(uint64 destinationChainSelector, address recipient, uint256 amount, bytes data) payable
bridgeToken
payablefunction bridgeToken(uint64 destinationChainSelector, address recipient, uint256 amount) payable
cancelDefaultAdminTransfer
nonpayablefunction cancelDefaultAdminTransfer()
ccipReceive
nonpayablefunction ccipReceive(tuple message)
changeDefaultAdminDelay
nonpayablefunction changeDefaultAdminDelay(uint48 newDelay)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address _adminAddress, address _gydAddress, address _routerAddress, tuple[] chains)
initializeTotalBridgedGYD
nonpayablefunction initializeTotalBridgedGYD()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
rollbackDefaultAdminDelay
nonpayablefunction rollbackDefaultAdminDelay()
updateGasLimit
nonpayablefunction updateGasLimit(uint64 chainSelector, uint256 gasLimit)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
ChainAdded
event ChainAdded(uint64 indexed chainSelector, address indexed targetAddress, uint256 gasLimit)
DefaultAdminDelayChangeCanceled
event DefaultAdminDelayChangeCanceled()
DefaultAdminDelayChangeScheduled
event DefaultAdminDelayChangeScheduled(uint48 newDelay, uint48 effectSchedule)
DefaultAdminTransferCanceled
event DefaultAdminTransferCanceled()
DefaultAdminTransferScheduled
event DefaultAdminTransferScheduled(address indexed newAdmin, uint48 acceptSchedule)
GasLimitUpdated
event GasLimitUpdated(uint64 indexed chainSelector, uint256 gasLimit)
GYDBridged
event GYDBridged(uint64 indexed chainSelector, address indexed bridger, uint256 amount, uint256 total)
GYDClaimed
event GYDClaimed(uint64 indexed chainSelector, address indexed bridger, uint256 amount, uint256 total)
Initialized
event Initialized(uint64 version)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
Upgraded
event Upgraded(address indexed implementation)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlEnforcedDefaultAdminDelay
error AccessControlEnforcedDefaultAdminDelay(uint48 schedule)
AccessControlEnforcedDefaultAdminRules
error AccessControlEnforcedDefaultAdminRules()
AccessControlInvalidDefaultAdmin
error AccessControlInvalidDefaultAdmin(address defaultAdmin)
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
ChainNotSupported
error ChainNotSupported(uint64 chainSelector)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedInnerCall
error FailedInnerCall()
FeesNotCovered
error FeesNotCovered(uint256 fees)
FeesNotCovered
error FeesNotCovered(uint256 fees)
InvalidInitialization
error InvalidInitialization()
InvalidRouter
error InvalidRouter(address router)
MessageInvalid
error MessageInvalid()
NotInitializing
error NotInitializing()
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a06040523060805234801562000014575f80fd5b506200001f62000025565b620000d9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000765760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612b10620001005f395f8181611487015281816114b001526115f10152612b105ff3fe6080604052600436106101fc575f3560e01c806385572ffb11610113578063cc8463c81161009d578063d547741f1161006d578063d547741f146105b7578063d602b9fd146105d6578063d88df080146105ea578063e182dd8714610647578063f887ea401461065a575f80fd5b8063cc8463c814610536578063cefc14291461054a578063cf6eefb71461055e578063d4afa19114610598575f80fd5b8063a1eda53c116100e3578063a1eda53c14610478578063a217fddf146104ab578063a949cb17146104be578063ad3cb1cc146104dd578063b0f479a11461051a575f80fd5b806385572ffb146104125780638da5cb5b146104315780638dd2bd351461044557806391d1485414610459575f80fd5b806336568abe1161019457806352d1902d1161016457806352d1902d1461038d578063634e93da146103a1578063649a5ec7146103c05780637cf96367146103df57806384ef8ffc146103fe575f80fd5b806336568abe14610311578063401030ce146103305780634f1ef286146103435780634f24ff9a14610356575f80fd5b80630aa6220b116101cf5780630aa6220b1461029e5780630b2f9f2a146102b4578063248a9ca3146102d35780632f2ff15d146102f2575f80fd5b806301ffc9a714610200578063022d63fb1461023457806304a173fb1461025c578063088c2cba14610289575b5f80fd5b34801561020b575f80fd5b5061021f61021a3660046121cb565b610679565b60405190151581526020015b60405180910390f35b34801561023f575f80fd5b50620697805b60405165ffffffffffff909116815260200161022b565b348015610267575f80fd5b5061027b610276366004612327565b610698565b60405190815260200161022b565b348015610294575f80fd5b5061027b60045481565b3480156102a9575f80fd5b506102b2610795565b005b3480156102bf575f80fd5b506102b26102ce3660046123e7565b6107aa565b3480156102de575f80fd5b5061027b6102ed3660046124d9565b610a3a565b3480156102fd575f80fd5b506102b261030c3660046124f0565b610a5a565b34801561031c575f80fd5b506102b261032b3660046124f0565b610a86565b6102b261033e366004612327565b610b48565b6102b261035136600461251e565b610cd1565b348015610361575f80fd5b50600154610375906001600160a01b031681565b6040516001600160a01b03909116815260200161022b565b348015610398575f80fd5b5061027b610cec565b3480156103ac575f80fd5b506102b26103bb36600461256a565b610d07565b3480156103cb575f80fd5b506102b26103da366004612585565b610d1a565b3480156103ea575f80fd5b5061027b6103f93660046125aa565b610d2d565b348015610409575f80fd5b50610375610d52565b34801561041d575f80fd5b506102b261042c3660046125e6565b610d6d565b34801561043c575f80fd5b50610375610daa565b348015610450575f80fd5b506102b2610db8565b348015610464575f80fd5b5061021f6104733660046124f0565b610e1a565b348015610483575f80fd5b5061048c610e50565b6040805165ffffffffffff93841681529290911660208301520161022b565b3480156104b6575f80fd5b5061027b5f81565b3480156104c9575f80fd5b506102b26104d83660046125aa565b610ebf565b3480156104e8575f80fd5b5061050d604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161022b9190612669565b348015610525575f80fd5b505f546001600160a01b0316610375565b348015610541575f80fd5b50610245610f55565b348015610555575f80fd5b506102b2610fd0565b348015610569575f80fd5b5061057261100f565b604080516001600160a01b03909316835265ffffffffffff90911660208301520161022b565b3480156105a3575f80fd5b506102b26105b236600461267b565b61103c565b3480156105c2575f80fd5b506102b26105d13660046124f0565b6110a1565b3480156105e1575f80fd5b506102b26110c9565b3480156105f5575f80fd5b506106286106043660046126a3565b60036020525f9081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b03909316835260208301919091520161022b565b6102b26106553660046125aa565b6110db565b348015610665575f80fd5b50600254610375906001600160a01b031681565b5f610683826110f5565b8061069257506106928261112a565b92915050565b6001600160401b0384165f908152600360209081526040808320815180830190925280546001600160a01b031680835260019091015492820192909252906107035760405163172ced9d60e11b81526001600160401b03871660048201526024015b60405180910390fd5b5f610718825f0151878787866020015161114e565b6002546040516320487ded60e01b81529192506001600160a01b0316906320487ded9061074b908a9085906004016126bc565b602060405180830381865afa158015610766573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061078a9190612796565b979650505050505050565b5f61079f8161128c565b6107a7611296565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156107ee5750825b90505f826001600160401b031660011480156108095750303b155b905081158015610817575080155b156108355760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561085f57845460ff60401b1916600160401b1785555b61086c6203f4808a6112a2565b6108746112b4565b61087d876112bc565b600180546001600160a01b03808b166001600160a01b03199283161790925560028054928a16929091169190911790555f5b86518110156109e8578681815181106108ca576108ca6127ad565b60200260200101516020015160035f8984815181106108eb576108eb6127ad565b602090810291909101810151516001600160401b03168252818101929092526040015f20825181546001600160a01b0319166001600160a01b039091161781559101516001909101558651879082908110610948576109486127ad565b6020026020010151602001515f01516001600160a01b0316878281518110610972576109726127ad565b60200260200101515f01516001600160401b03167feecd6a61e94efcd580322a7a91a9f91a33779286dbf5867e270852e1631309758984815181106109b9576109b96127ad565b602002602001015160200151602001516040516109d891815260200190565b60405180910390a36001016108af565b508315610a2f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b5f9081525f80516020612a9b833981519152602052604090206001015490565b81610a7857604051631fe1e13d60e11b815260040160405180910390fd5b610a828282611306565b5050565b5f80516020612a7b83398151915282158015610aba5750610aa5610d52565b6001600160a01b0316826001600160a01b0316145b15610b39575f80610ac961100f565b90925090506001600160a01b038216151580610aeb575065ffffffffffff8116155b80610afe57504265ffffffffffff821610155b15610b26576040516319ca5ebb60e01b815265ffffffffffff821660048201526024016106fa565b5050805465ffffffffffff60a01b191681555b610b438383611328565b505050565b600154610b60906001600160a01b031633308561135b565b6001600160401b0384165f90815260036020908152604091829020825180840190935280546001600160a01b031680845260019091015491830191909152610bc65760405163172ced9d60e11b81526001600160401b03861660048201526024016106fa565b5f610bdb825f0151868686866020015161114e565b6002546040516320487ded60e01b81529192505f916001600160a01b03909116906320487ded90610c12908a9086906004016126bc565b602060405180830381865afa158015610c2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c519190612796565b600254909150610c6c906001600160a01b03168884846113c2565b600454610c7986826127d5565b6004819055604080518881526020810183905291925033916001600160401b038b16917f79693722326b1227136c740942253ebcc8e42075891ea841e96ba353310c8e15910160405180910390a35050505050505050565b610cd961147c565b610ce282611520565b610a82828261152a565b5f610cf56115e6565b505f80516020612a5b83398151915290565b5f610d118161128c565b610a828261162f565b5f610d248161128c565b610a82826116a1565b5f610d4884848460405180602001604052805f815250610698565b90505b9392505050565b5f80516020612abb833981519152546001600160a01b031690565b5f546001600160a01b03163314610d99576040516335fdcccd60e21b81523360048201526024016106fa565b6107a7610da582612858565b611710565b5f610db3610d52565b905090565b60045415610dd95760405163f92ee8a960e01b815260040160405180910390fd5b604080516744ae84d8e9a374446020820152600491810191909152610e14906060016040516020818303038152906040528051906020012090565b54600455565b5f9182525f80516020612a9b833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f80516020612abb833981519152545f90600160d01b900465ffffffffffff165f80516020612a7b8339815191528115801590610e9557504265ffffffffffff831610155b610ea0575f80610eb6565b6001810154600160a01b900465ffffffffffff16825b92509250509091565b5f610ec98161128c565b6040805180820182526001600160a01b0385811680835260208084018781526001600160401b038a165f81815260038452879020955186546001600160a01b031916951694909417855551600190940193909355925185815290917feecd6a61e94efcd580322a7a91a9f91a33779286dbf5867e270852e163130975910160405180910390a350505050565b5f80516020612abb833981519152545f905f80516020612a7b83398151915290600160d01b900465ffffffffffff168015801590610f9a57504265ffffffffffff8216105b610fb4578154600160d01b900465ffffffffffff16610fc9565b6001820154600160a01b900465ffffffffffff165b9250505090565b5f610fd961100f565b509050336001600160a01b0382161461100757604051636116401160e11b81523360048201526024016106fa565b6107a7611880565b5f80516020612a7b833981519152546001600160a01b03811691600160a01b90910465ffffffffffff1690565b5f6110468161128c565b6001600160401b0383165f818152600360209081526040918290206001810186905591518581529192917f4f825f32bbfe3dcb94da70b8d07661eba574a31aa6fa6f2b271a1ad546009f68910160405180910390a250505050565b816110bf57604051631fe1e13d60e11b815260040160405180910390fd5b610a828282611919565b5f6110d38161128c565b6107a7611935565b610b4383838360405180602001604052805f815250610b48565b5f6001600160e01b031982166385572ffb60e01b148061069257506001600160e01b031982166301ffc9a760e01b1492915050565b5f6001600160e01b031982166318a4c3c360e11b148061069257506106928261193f565b6111886040518060a001604052806060815260200160608152602001606081526020015f6001600160a01b03168152602001606081525090565b5f85858560405160200161119e939291906128ff565b60408051601f1981840301815260a0830182526001600160a01b038a1660c0808501919091528251808503909101815260e0840183528352602080840182905282515f80825291810184529194509183019161121b565b604080518082019091525f80825260208201528152602001906001900390816111f55790505b5081526020015f6001600160a01b0316815260200161127f60405180602001604052808781525060408051915160248084019190915281518084039091018152604490920190526020810180516001600160e01b03166397a657c960e01b17905290565b9052979650505050505050565b6107a78133611973565b6112a05f806119ac565b565b6112aa611a84565b610a828282611acd565b6112a0611a84565b6001600160a01b0381166112e5576040516335fdcccd60e21b81525f60048201526024016106fa565b5f80546001600160a01b0319166001600160a01b0392909216919091179055565b61130f82610a3a565b6113188161128c565b6113228383611b2f565b50505050565b6001600160a01b03811633146113515760405163334bd91960e11b815260040160405180910390fd5b610b438282611ba3565b6040516001600160a01b0384811660248301528381166044830152606482018390526113229186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611bfa565b348111156113e657604051638419dbf560e01b8152600481018290526024016106fa565b6040516396f4e9f960e01b81526001600160a01b038516906396f4e9f990839061141690879087906004016126bc565b60206040518083038185885af1158015611432573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906114579190612796565b505f6114638234612925565b90508015611475576114753382611c5b565b5050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061150257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114f65f80516020612a5b833981519152546001600160a01b031690565b6001600160a01b031614155b156112a05760405163703e46dd60e11b815260040160405180910390fd5b5f610a828161128c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611584575060408051601f3d908101601f1916820190925261158191810190612796565b60015b6115ac57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016106fa565b5f80516020612a5b83398151915281146115dc57604051632a87526960e21b8152600481018290526024016106fa565b610b438383611cee565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112a05760405163703e46dd60e11b815260040160405180910390fd5b5f611638610f55565b61164142611d43565b61164b9190612938565b90506116578282611d79565b60405165ffffffffffff821681526001600160a01b038316907f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed69060200160405180910390a25050565b5f6116ab82611e03565b6116b442611d43565b6116be9190612938565b90506116ca82826119ac565b6040805165ffffffffffff8085168252831660208201527ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b910160405180910390a15050565b6020808201516001600160401b03165f908152600390915260409020546001600160a01b03168061176557602082015160405163172ced9d60e11b81526001600160401b0390911660048201526024016106fa565b5f826040015180602001905181019061177e9190612957565b9050806001600160a01b0316826001600160a01b0316146117b25760405163c724b77560e01b815260040160405180910390fd5b5f805f85606001518060200190518101906117cd9190612972565b60045492955090935091506117e28382612925565b6004819055600154909150611801906001600160a01b03168585611e4a565b81511561181d5761181b6001600160a01b03851683611e7b565b505b836001600160a01b031687602001516001600160401b03167f022f3901226664c449cf8514077aa5096557318182faebd091850c9b6c54c601858460405161186f929190918252602082015260400190565b60405180910390a350505050505050565b5f80516020612a7b8339815191525f8061189861100f565b915091506118ad8165ffffffffffff16151590565b15806118c157504265ffffffffffff821610155b156118e9576040516319ca5ebb60e01b815265ffffffffffff821660048201526024016106fa565b6118fa5f6118f5610d52565b611ba3565b506119055f83611b2f565b505081546001600160d01b03191690915550565b61192282610a3a565b61192b8161128c565b6113228383611ba3565b6112a05f80611d79565b5f6001600160e01b03198216637965db0b60e01b148061069257506301ffc9a760e01b6001600160e01b0319831614610692565b61197d8282610e1a565b610a825760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016106fa565b5f80516020612abb833981519152545f80516020612a7b83398151915290600160d01b900465ffffffffffff168015611a46574265ffffffffffff82161015611a1d57600182015482546001600160d01b0316600160a01b90910465ffffffffffff16600160d01b02178255611a46565b6040517f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec5905f90a15b5060010180546001600160a01b0316600160a01b65ffffffffffff948516026001600160d01b031617600160d01b9290931691909102919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166112a057604051631afcd79f60e31b815260040160405180910390fd5b611ad5611a84565b5f80516020612a7b8339815191526001600160a01b038216611b0c57604051636116401160e11b81525f60048201526024016106fa565b80546001600160d01b0316600160d01b65ffffffffffff8516021781556113225f835b5f5f80516020612a7b83398151915283611b91575f611b4c610d52565b6001600160a01b031614611b7357604051631fe1e13d60e11b815260040160405180910390fd5b6001810180546001600160a01b0319166001600160a01b0385161790555b611b9b8484611e88565b949350505050565b5f5f80516020612a7b83398151915283158015611bd85750611bc3610d52565b6001600160a01b0316836001600160a01b0316145b15611bf0576001810180546001600160a01b03191690555b611b9b8484611f30565b5f611c0e6001600160a01b03841683611e7b565b905080515f14158015611c32575080806020019051810190611c309190612a01565b155b15610b4357604051635274afe760e01b81526001600160a01b03841660048201526024016106fa565b80471015611c7e5760405163cd78605960e01b81523060048201526024016106fa565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611cc7576040519150601f19603f3d011682016040523d82523d5f602084013e611ccc565b606091505b5050905080610b4357604051630a12f52160e11b815260040160405180910390fd5b611cf782611fa9565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611d3b57610b43828261200c565b610a8261207e565b5f65ffffffffffff821115611d75576040516306dfcc6560e41b815260306004820152602481018390526044016106fa565b5090565b5f80516020612a7b8339815191525f611d9061100f565b835465ffffffffffff8616600160a01b026001600160d01b03199091166001600160a01b038816171784559150611dd090508165ffffffffffff16151590565b15611322576040517f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a9605109905f90a150505050565b5f80611e0d610f55565b90508065ffffffffffff168365ffffffffffff1611611e3557611e308382612a20565b610d4b565b610d4b65ffffffffffff84166206978061209d565b6040516001600160a01b03838116602483015260448201839052610b4391859182169063a9059cbb90606401611390565b6060610d4b83835f6120b2565b5f5f80516020612a9b833981519152611ea18484610e1a565b611f20575f848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055611ed63390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610692565b5f915050610692565b5092915050565b5f5f80516020612a9b833981519152611f498484610e1a565b15611f20575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610692565b806001600160a01b03163b5f03611fde57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016106fa565b5f80516020612a5b83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516120289190612a3f565b5f60405180830381855af49150503d805f8114612060576040519150601f19603f3d011682016040523d82523d5f602084013e612065565b606091505b509150915061207585838361214b565b95945050505050565b34156112a05760405163b398979f60e01b815260040160405180910390fd5b5f8183106120ab5781610d4b565b5090919050565b6060814710156120d75760405163cd78605960e01b81523060048201526024016106fa565b5f80856001600160a01b031684866040516120f29190612a3f565b5f6040518083038185875af1925050503d805f811461212c576040519150601f19603f3d011682016040523d82523d5f602084013e612131565b606091505b509150915061214186838361214b565b9695505050505050565b60608261215b57611e30826121a2565b815115801561217257506001600160a01b0384163b155b1561219b57604051639996b31560e01b81526001600160a01b03851660048201526024016106fa565b5080610d4b565b8051156121b25780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f602082840312156121db575f80fd5b81356001600160e01b031981168114610d4b575f80fd5b80356001600160401b0381168114612208575f80fd5b919050565b6001600160a01b03811681146107a7575f80fd5b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b038111828210171561225757612257612221565b60405290565b60405160a081016001600160401b038111828210171561225757612257612221565b604051601f8201601f191681016001600160401b03811182821017156122a7576122a7612221565b604052919050565b5f6001600160401b038211156122c7576122c7612221565b50601f01601f191660200190565b5f82601f8301126122e4575f80fd5b81356122f76122f2826122af565b61227f565b81815284602083860101111561230b575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f806080858703121561233a575f80fd5b612343856121f2565b935060208501356123538161220d565b92506040850135915060608501356001600160401b03811115612374575f80fd5b612380878288016122d5565b91505092959194509250565b5f6001600160401b038211156123a4576123a4612221565b5060051b60200190565b5f604082840312156123be575f80fd5b6123c6612235565b905081356123d38161220d565b808252506020820135602082015292915050565b5f805f80608085870312156123fa575f80fd5b84356124058161220d565b93506020858101356124168161220d565b935060408601356124268161220d565b92506060868101356001600160401b03811115612441575f80fd5b8701601f81018913612451575f80fd5b803561245f6122f28261238c565b81815260609091028201840190848101908b83111561247c575f80fd5b928501925b828410156124c95784848d031215612497575f80fd5b61249f612235565b6124a8856121f2565b81526124b68d8887016123ae565b8188015282529284019290850190612481565b989b979a50959850505050505050565b5f602082840312156124e9575f80fd5b5035919050565b5f8060408385031215612501575f80fd5b8235915060208301356125138161220d565b809150509250929050565b5f806040838503121561252f575f80fd5b823561253a8161220d565b915060208301356001600160401b03811115612554575f80fd5b612560858286016122d5565b9150509250929050565b5f6020828403121561257a575f80fd5b8135610d4b8161220d565b5f60208284031215612595575f80fd5b813565ffffffffffff81168114610d4b575f80fd5b5f805f606084860312156125bc575f80fd5b6125c5846121f2565b925060208401356125d58161220d565b929592945050506040919091013590565b5f602082840312156125f6575f80fd5b81356001600160401b0381111561260b575f80fd5b820160a08185031215610d4b575f80fd5b5f5b8381101561263657818101518382015260200161261e565b50505f910152565b5f815180845261265581602086016020860161261c565b601f01601f19169290920160200192915050565b602081525f610d4b602083018461263e565b5f806040838503121561268c575f80fd5b612695836121f2565b946020939093013593505050565b5f602082840312156126b3575f80fd5b610d4b826121f2565b5f60406001600160401b03851683526020604081850152845160a060408601526126e960e086018261263e565b905081860151603f1980878403016060880152612706838361263e565b6040890151888203830160808a0152805180835290860194505f9350908501905b8084101561275957845180516001600160a01b0316835286015186830152938501936001939093019290860190612727565b5060608901516001600160a01b031660a08901526080890151888203830160c08a01529550612788818761263e565b9a9950505050505050505050565b5f602082840312156127a6575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610692576106926127c1565b5f82601f8301126127f7575f80fd5b813560206128076122f28361238c565b8083825260208201915060208460061b870101935086841115612828575f80fd5b602086015b8481101561284d5761283f88826123ae565b83529183019160400161282d565b509695505050505050565b5f60a08236031215612868575f80fd5b61287061225d565b82358152612880602084016121f2565b602082015260408301356001600160401b038082111561289e575f80fd5b6128aa368387016122d5565b604084015260608501359150808211156128c2575f80fd5b6128ce368387016122d5565b606084015260808501359150808211156128e6575f80fd5b506128f3368286016127e8565b60808301525092915050565b60018060a01b0384168152826020820152606060408201525f612075606083018461263e565b81810381811115610692576106926127c1565b65ffffffffffff818116838216019080821115611f2957611f296127c1565b5f60208284031215612967575f80fd5b8151610d4b8161220d565b5f805f60608486031215612984575f80fd5b835161298f8161220d565b6020850151604086015191945092506001600160401b038111156129b1575f80fd5b8401601f810186136129c1575f80fd5b80516129cf6122f2826122af565b8181528760208385010111156129e3575f80fd5b6129f482602083016020860161261c565b8093505050509250925092565b5f60208284031215612a11575f80fd5b81518015158114610d4b575f80fd5b65ffffffffffff828116828216039080821115611f2957611f296127c1565b5f8251612a5081846020870161261c565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbceef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d869840002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800eef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698401a2646970667358221220c4dafe055c210778f7eb81bd3894cf17258d8510d52f9c4cf410a0a2aaab101c64736f6c63430008180033