0 txs
2 calls
constructor
constructor()
functions
approxDstExecutionGas
viewfunction approxDstExecutionGas() view returns (uint256)
balanceOf
viewfunction balanceOf(address user) view returns (uint128)
balanceOfAt
viewfunction balanceOfAt(address user, uint128 timestamp) view returns (uint128)
factorMsgSendEndpoint
viewfunction factorMsgSendEndpoint() view returns (address)
fctr
viewfunction fctr() view returns (address)
getAllDestinationContracts
viewfunction getAllDestinationContracts() view returns (uint256[] chainIds, address[] addrs)
getBroadcastPositionFee
viewfunction getBroadcastPositionFee(uint256[] chainIds) view returns (uint256 fee)
getBroadcastSupplyFee
viewfunction getBroadcastSupplyFee(uint256[] chainIds) view returns (uint256 fee)
getUserHistoryAt
viewfunction getUserHistoryAt(address user, uint256 index) view returns (tuple)
getUserHistoryLength
viewfunction getUserHistoryLength(address user) view returns (uint256)
lastSlopeChangeAppliedAt
viewfunction lastSlopeChangeAppliedAt() view returns (uint128)
MAX_LOCK_TIME
viewfunction MAX_LOCK_TIME() view returns (uint128)
MIN_LOCK_TIME
viewfunction MIN_LOCK_TIME() view returns (uint128)
owner
viewfunction owner() view returns (address)
positionData
viewfunction positionData(address user) view returns (uint128 amount, uint128 expiry)
slopeChanges
viewfunction slopeChanges(uint128) view returns (uint128)
totalSupplyAt
viewfunction totalSupplyAt(uint128) view returns (uint128)
totalSupplyStored
viewfunction totalSupplyStored() view returns (uint128)
addDestinationContract
payablefunction addDestinationContract(address _address, uint256 _chainId) payable
broadcastTotalSupply
payablefunction broadcastTotalSupply(uint256[] chainIds) payable
broadcastUserPosition
payablefunction broadcastUserPosition(address user, uint256[] chainIds) payable
increaseLockPosition
nonpayablefunction increaseLockPosition(uint128 additionalAmountToLock, uint128 newExpiry) returns (uint128 newVeBalance)
increaseLockPositionAndBroadcast
payablefunction increaseLockPositionAndBroadcast(uint128 additionalAmountToLock, uint128 newExpiry, uint256[] chainIds) payable returns (uint128 newVeBalance)
initialize
nonpayablefunction initialize(address _fctr, address _factorMsgSendEndpoint, uint256 initialApproxDestinationGas)
renounceOwnership
nonpayablefunction renounceOwnership()
setApproxDstExecutionGas
nonpayablefunction setApproxDstExecutionGas(uint256 gas)
totalSupplyAndBalanceCurrent
nonpayablefunction totalSupplyAndBalanceCurrent(address user) returns (uint128, uint128)
totalSupplyCurrent
nonpayablefunction totalSupplyCurrent() returns (uint128)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdraw
nonpayablefunction withdraw() returns (uint128 amount)
events
BroadcastTotalSupply
event BroadcastTotalSupply((uint128 bias, uint128 slope) newTotalSupply, uint256[] chainIds)
BroadcastUserPosition
event BroadcastUserPosition(address indexed user, uint256[] chainIds)
Initialized
event Initialized(uint64 version)
NewLockPosition
event NewLockPosition(address indexed user, uint128 amount, uint128 expiry)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Withdraw
event Withdraw(address indexed user, uint128 amount)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
ArrayEmpty
error ArrayEmpty()
ChainNotSupported
error ChainNotSupported(uint256 chainId)
EnumerableMapNonexistentKey
error EnumerableMapNonexistentKey(bytes32 key)
ExpiryInThePast
error ExpiryInThePast(uint256 expiry)
FailedInnerCall
error FailedInnerCall()
InsufficientFeeToSendMsg
error InsufficientFeeToSendMsg(uint256 currentFee, uint256 requiredFee)
InvalidInitialization
error InvalidInitialization()
InvalidWTime
error InvalidWTime(uint256 wTime)
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
VEExceededMaxLockTime
error VEExceededMaxLockTime()
VEInsufficientLockTime
error VEInsufficientLockTime()
VENotAllowedReduceExpiry
error VENotAllowedReduceExpiry()
VEPositionNotExpired
error VEPositionNotExpired()
VEZeroAmountLocked
error VEZeroAmountLocked()
VEZeroPosition
error VEZeroPosition()
ZeroAddress
error ZeroAddress()
creation bytecode
0x608060405234801562000010575f80fd5b506200001b62000021565b620000d5565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d25780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b61294880620000e35f395ff3fe6080604052600436106101c5575f3560e01c8063b92e106a116100f2578063df42fff811610092578063f2fde38b11610062578063f2fde38b1461055f578063f772a0921461057e578063fa78668f1461059d578063fc367c61146105b4575f80fd5b8063df42fff8146104d1578063e139a48d1461050d578063e268b3a41461052c578063ef1c243a1461054b575f80fd5b8063cc471bb8116100cd578063cc471bb81461044d578063d1ab64ec14610460578063d45f5e211461047e578063d88e92a91461049d575f80fd5b8063b92e106a146103dc578063c8121ec2146103ef578063cb6b4f3c1461040e575f80fd5b80633ff0320711610168578063814b2cac11610138578063814b2cac146103195780638da5cb5b14610338578063947975d9146103885780639efc7575146103bc575f80fd5b80633ff03207146102a457806370a08231146102ba578063715018a6146102d95780637c386c71146102ed575f80fd5b806330d981af116101a357806330d981af146102105780633b16c126146102415780633ccfd60b1461026e5780633e39b65014610282575f80fd5b80630b9efa22146101c95780631794bb3c146101de57806321049028146101fd575b5f80fd5b6101dc6101d7366004612247565b6105d3565b005b3480156101e9575f80fd5b506101dc6101f8366004612296565b610680565b6101dc61020b3660046122cf565b6107dc565b34801561021b575f80fd5b506102246107fc565b6040516001600160801b0390911681526020015b60405180910390f35b34801561024c575f80fd5b5061026061025b3660046122f7565b610818565b604051908152602001610238565b348015610279575f80fd5b506102246108a7565b34801561028d575f80fd5b5061029661098c565b604051610238929190612336565b3480156102af575f80fd5b5061022462093a8081565b3480156102c5575f80fd5b506102246102d43660046123b8565b610abd565b3480156102e4575f80fd5b506101dc610b21565b3480156102f8575f80fd5b5061030c6103073660046122cf565b610b34565b60405161023891906123d1565b348015610324575f80fd5b50600154610224906001600160801b031681565b348015610343575f80fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b039091168152602001610238565b348015610393575f80fd5b506102246103a2366004612421565b60036020525f90815260409020546001600160801b031681565b3480156103c7575f80fd5b505f8051602061289383398151915254610260565b6101dc6103ea3660046122f7565b610b64565b3480156103fa575f80fd5b5061022461040936600461243a565b610bde565b348015610419575f80fd5b5061042d6104283660046123b8565b610dd6565b604080516001600160801b03938416815292909116602083015201610238565b61022461045b36600461246b565b610e11565b34801561046b575f80fd5b505f54610370906001600160a01b031681565b348015610489575f80fd5b506101dc6104983660046124c8565b610e9e565b3480156104a8575f80fd5b506102246104b7366004612421565b60026020525f90815260409020546001600160801b031681565b3480156104dc575f80fd5b507fcfd85fa27c9444f5482bcadcd5a08c33291e70aa7a38635bf9e607832835c03e546001600160a01b0316610370565b348015610518575f80fd5b506102606105273660046122f7565b610eb7565b348015610537575f80fd5b5061042d6105463660046123b8565b610f7c565b348015610556575f80fd5b50610224610f98565b34801561056a575f80fd5b506101dc6105793660046123b8565b610fdb565b348015610589575f80fd5b506102246105983660046124df565b611018565b3480156105a8575f80fd5b506102246303bfc40081565b3480156105bf575f80fd5b506102606105ce3660046123b8565b611079565b6001600160a01b0383166105fa5760405163d92e233d60e01b815260040160405180910390fd5b610605838383611096565b471561067b576040515f90339047908381818185875af1925050503d805f811461064a576040519150601f19603f3d011682016040523d82523d5f602084013e61064f565b606091505b50509050806106795760405162461bcd60e51b8152600401610670906124f9565b60405180910390fd5b505b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f811580156106c55750825b90505f8267ffffffffffffffff1660011480156106e15750303b155b9050811580156106ef575080155b1561070d5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561073757845460ff60401b1916600160401b1785555b6107418787611295565b61074a336112ee565b5f80546001600160a01b0319166001600160a01b038a1617905561076c6112ff565b600180546001600160801b0319166001600160801b039290921691909117905583156107d257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b6107e4611309565b61067b5f805160206128b38339815191528284611364565b5f80610806611379565b509050610812816114d6565b91505090565b5f805b828110156108a05761088284848381811061083857610838612556565b6040805180820182525f808252602082810182905283518281528082018552940295909501359461086e945092909181016125b7565b6040516020818303038152906040526114f6565b61088c9083612612565b91508061089881612625565b91505061081b565b5092915050565b5f336108b2816115b5565b6108cf576040516339ba104360e01b815260040160405180910390fd5b6108d881610dd6565b5091506001600160801b0382165f0361090457604051631e95654360e11b815260040160405180910390fd5b6001600160a01b038181165f9081525f805160206128f383398151915260205260408120819055546109419116826001600160801b0385166115f1565b6040516001600160801b03831681526001600160a01b038216907f0e1bb0545c1ebb9fb680bde73514e572831de93b479c087ec1ef6c35c3a19fd69060200160405180910390a25090565b6060805f805160206128938339815191525f6109b45f805160206128b3833981519152611650565b90508067ffffffffffffffff8111156109cf576109cf61263d565b6040519080825280602002602001820160405280156109f8578160200160208202803683370190505b5093508067ffffffffffffffff811115610a1457610a1461263d565b604051908082528060200260200182016040528015610a3d578160200160208202803683370190505b5092505f5b81811015610ab657610a57600284018261165a565b868381518110610a6957610a69612556565b60200260200101868481518110610a8257610a82612556565b60200260200101826001600160a01b03166001600160a01b031681525082815250505080610aaf90612625565b9050610a42565b5050509091565b6001600160a01b0381165f9081525f805160206128f3833981519152602090815260408083208151808301909252546001600160801b038082168352600160801b9091041691810191909152610b1b90610b1690611677565b6114d6565b92915050565b610b29611309565b610b325f6116c8565b565b610b3c6121b3565b6001600160a01b0383165f908152600460205260409020610b5d9083611738565b9392505050565b610b6f5f8383611096565b4715610bda576040515f90339047908381818185875af1925050503d805f8114610bb4576040519150601f19603f3d011682016040523d82523d5f602084013e610bb9565b606091505b505090508061067b5760405162461bcd60e51b8152600401610670906124f9565b5050565b5f338180610beb83610dd6565b91509150610c01856001600160801b03166117ac565b610c2957604051637bf16ce960e11b81526001600160801b0386166004820152602401610670565b6001600160801b0385164210610c5d5760405163d928003560e01b81526001600160801b0386166004820152602401610670565b806001600160801b0316856001600160801b03161015610c9057604051631f8b0c5960e21b815260040160405180910390fd5b610c9e6303bfc40042612612565b856001600160801b03161115610cc757604051632739a01960e11b815260040160405180910390fd5b610cd462093a8042612612565b856001600160801b03161015610cfd57604051630def6af560e21b815260040160405180910390fd5b5f610d088388612651565b9050806001600160801b03165f03610d33576040516323fbc14f60e11b815260040160405180910390fd5b5f610d3e8388612671565b90506001600160801b03881615610d6f575f54610d6f906001600160a01b031686306001600160801b038c166117c0565b610d7a8589836117f9565b604080516001600160801b0380861682528a1660208201529197506001600160a01b038716917fb1a3371956c54dc1d83695b4a006b051c8313ee986e533b6b964e77c9066fc2c910160405180910390a2505050505092915050565b6001600160a01b03165f9081525f805160206128f383398151915260205260409020546001600160801b0380821692600160801b9092041690565b5f610e1c8585610bde565b9050610e293384846105d3565b4715610e96576040515f90339047908381818185875af1925050503d805f8114610e6e576040519150601f19603f3d011682016040523d82523d5f602084013e610e73565b606091505b5050905080610e945760405162461bcd60e51b8152600401610670906124f9565b505b949350505050565b610ea6611309565b5f8051602061289383398151915255565b5f805b828110156108a057610f5e848483818110610ed757610ed7612556565b905060200201355f60405180604001604052805f6001600160801b031681526020015f6001600160801b03168152505f60405180604001604052805f6001600160801b031681526020015f6001600160801b0316815250604051602001610f3f929190612691565b60408051601f198184030181529082905261086e9392916020016125b7565b610f689083612612565b915080610f7481612625565b915050610eba565b5f80610f866107fc565b610f8f84610abd565b91509150915091565b5f610fd65f805160206128d38339815191526040805180820190915290546001600160801b038082168352600160801b9091041660208201526114d6565b905090565b610fe3611309565b6001600160a01b03811661100c57604051631e4fbdf760e01b81525f6004820152602401610670565b611015816116c8565b50565b6001600160a01b0382165f9081525f805160206128f3833981519152602090815260408083208151808301909252546001600160801b038082168352600160801b9091041691810191909152610b5d90839061107390611677565b90611a45565b6001600160a01b0381165f90815260046020526040812054610b1b565b5f8190036110b757604051633c4d929d60e21b815260040160405180910390fd5b5f6110c0611379565b506001600160a01b0385165f8181525f805160206128f3833981519152602090815260408083208151808301909252546001600160801b038082168352600160801b9091041691810191909152929350901561113d578582604051602001611129929190612691565b60405160208183030381529060405261114c565b604080515f8152602081019091525b90505f5b848110156111fe5761119186868381811061116d5761116d612556565b905060200201356111885f8051602061289383398151915290565b60020190611a95565b6111ca578585828181106111a7576111a7612556565b9050602002013560405163264e42cf60e01b815260040161067091815260200190565b6111ee8686838181106111df576111df612556565b90506020020135428685611aa0565b6111f781612625565b9050611150565b506001600160a01b0386161561125257856001600160a01b03167f82e92e1b0568d98f095fc0c76ccb0f2ac5b64534f69a2c706281e223b647768386866040516112499291906126f4565b60405180910390a25b7f5f9e7cb1ed2eca254f75b6e350699887aa8597e3a2ec9e0aa2b3504c211facbd83868660405161128593929190612707565b60405180910390a1505050505050565b61129d611acd565b7fcfd85fa27c9444f5482bcadcd5a08c33291e70aa7a38635bf9e607832835c03e80546001600160a01b0319166001600160a01b0393909316929092179091555f8051602061289383398151915255565b6112f6611acd565b61101581611b16565b5f610fd642611b1e565b3361133b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610b325760405163118cdaa760e01b8152336004820152602401610670565b5f610e9684846001600160a01b038516611b36565b604080518082019091525f80825260208201525f805f805160206128d38339815191526040805180820190915290546001600160801b038082168352600160801b90910481166020830152600154919250165f6113d46112ff565b9050806001600160801b0316826001600160801b0316106113f9575090939092509050565b806001600160801b0316826001600160801b031610156114875761141f61384083612651565b6001600160801b038082165f908152600260205260409020549193506114489185911684611b52565b92506114548383611a45565b6001600160801b038381165f90815260036020526040902080546001600160801b031916929091169190911790556113f9565b50815160208301516001600160801b03918216600160801b91831691909102175f805160206128d383398151915255600180546001600160801b03191691831691909117905590939092509050565b5f6114e082611bab565b156114ec57505f919050565b610b1b8242611a45565b7fcfd85fa27c9444f5482bcadcd5a08c33291e70aa7a38635bf9e607832835c03e545f905f80516020612893833981519152906001600160a01b03166384fe172161154e5f805160206128b383398151915287611bda565b83546040516001600160e01b031960e085901b1681526115769291899189919060040161273d565b602060405180830381865afa158015611591573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e969190612774565b6001600160a01b0381165f9081525f805160206128f38339815191526020526040812054600160801b90046001600160801b0316421015610b1b565b6040516001600160a01b0383811660248301526044820183905261067b91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611be5565b5f610b1b82611c46565b5f8080806116688686611c50565b909450925050505b9250929050565b604080518082019091525f8082526020820152815161169b906303bfc4009061279f565b6001600160801b031660208083018290528301516116b8916127c4565b6001600160801b03168152919050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6117406121b3565b825f01828154811061175457611754612556565b5f918252602091829020604080518082018252600290930290910180546001600160801b03908116845282518084019093526001909101548082168352600160801b9004168184015291810191909152905092915050565b5f6117b9613840836127ef565b1592915050565b6040516001600160a01b0384811660248301528381166044830152606482018390526106799186918216906323b872dd9060840161161e565b6001600160a01b0383165f9081525f805160206128f3833981519152602090815260408083208151808301909252546001600160801b038082168352600160801b90910416918101919091528161184e611379565b50905061186882602001516001600160801b031642101590565b6118e0575f61187683611677565b90506118828282611c79565b602080830151858201516001600160801b039081165f908152600290935260408320805494965091939192916118ba91859116612671565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550505b5f604051806040016040528087855f01516118fb9190612651565b6001600160801b031681526020018685602001516119199190612651565b6001600160801b0316905290505f61193082611677565b905061193c8382611ccd565b602080830151848201516001600160801b039081165f9081526002909352604083208054949750919391929161197491859116612651565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550826119ad5f805160206128d383398151915290565b81516020909201516001600160801b03908116600160801b029216919091179055816119e35f805160206128d383398151915290565b6001600160a01b038a165f908152600191909101602090815260408083208451948301516001600160801b03908116600160801b029516949094179093556004905220611a309082611d0d565b611a39816114d6565b98975050505050505050565b5f825f01516001600160801b0316828460200151611a6391906127c4565b6001600160801b03161115611a7957505f610b1b565b818360200151611a8991906127c4565b8351610b5d9190612671565b5f610b5d8383611e36565b61067984848484604051602001611ab993929190612802565b604051602081830303815290604052611e41565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610b3257604051631afcd79f60e31b815260040160405180910390fd5b610fe3611acd565b5f613840611b2c818461279f565b610b1b91906127c4565b5f8281526002840160205260408120829055610e968484611f9a565b604080518082019091525f8082526020820152828460200151611b759190612671565b6001600160801b03166020820152611b8d82846127c4565b8451611b999190612671565b6001600160801b031681529392505050565b5f815f01516001600160801b0316428360200151611bc991906127c4565b6001600160801b0316101592915050565b5f610b5d8383611fa5565b5f611bf96001600160a01b03841683611feb565b905080515f14158015611c1d575080806020019051810190611c1b9190612831565b155b1561067b57604051635274afe760e01b81526001600160a01b0384166004820152602401610670565b5f610b1b82611ff8565b5f8080611c5d8585612001565b5f81815260029690960160205260409095205494959350505050565b604080518082019091525f808252602082015281518351611c9a9190612671565b6001600160801b0316815260208083015190840151611cb99190612671565b6001600160801b0316602082015292915050565b604080518082019091525f808252602082015281518351611cee9190612651565b6001600160801b0316815260208083015190840151611cb99190612651565b81548015801590611d615750611d216112ff565b6001600160801b031683611d36600184612850565b81548110611d4657611d46612556565b5f9182526020909120600290910201546001600160801b0316145b15611dbf578183611d73600184612850565b81548110611d8357611d83612556565b5f918252602091829020835193909201516001600160801b03908116600160801b02931692909217600160029093029091019190910155505050565b825f016040518060400160405280611dd56112ff565b6001600160801b03908116825260209182018690528354600181810186555f95865294839020845160029092020180549183166001600160801b03199092169190911781559282015180519201518116600160801b02911617910155505050565b5f610b5d838361200c565b5f80516020612893833981519152611e665f805160206128b383398151915284611a95565b611e7257611e72612863565b5f611e806002830185611bda565b825460018401546040516384fe172160e01b815292935090915f916001600160a01b0316906384fe172190611ebf9086908a908a90889060040161273d565b602060405180830381865afa158015611eda573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611efe9190612774565b905080471015611f2a5760405163704c5be560e11b815247600482015260248101829052604401610670565b600184015460405163b2267a7b60e01b81526001600160a01b039091169063b2267a7b908390611f649087908b908b90899060040161273d565b5f604051808303818588803b158015611f7b575f80fd5b505af1158015611f8d573d5f803e3d5ffd5b5050505050505050505050565b5f610b5d8383612023565b5f81815260028301602052604081205480158015611fca5750611fc88484611e36565b155b15610b5d5760405163015ab34360e11b815260048101849052602401610670565b6060610b5d83835f61206f565b5f610b1b825490565b5f610b5d8383612108565b5f8181526001830160205260408120541515610b5d565b5f81815260018301602052604081205461206857508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610b1b565b505f610b1b565b6060814710156120945760405163cd78605960e01b8152306004820152602401610670565b5f80856001600160a01b031684866040516120af9190612877565b5f6040518083038185875af1925050503d805f81146120e9576040519150601f19603f3d011682016040523d82523d5f602084013e6120ee565b606091505b50915091506120fe86838361212e565b9695505050505050565b5f825f01828154811061211d5761211d612556565b905f5260205f200154905092915050565b6060826121435761213e8261218a565b610b5d565b815115801561215a57506001600160a01b0384163b155b1561218357604051639996b31560e01b81526001600160a01b0385166004820152602401610670565b5080610b5d565b80511561219a5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60405180604001604052805f6001600160801b031681526020016121e6604080518082019091525f808252602082015290565b905290565b80356001600160a01b0381168114612201575f80fd5b919050565b5f8083601f840112612216575f80fd5b50813567ffffffffffffffff81111561222d575f80fd5b6020830191508360208260051b8501011115611670575f80fd5b5f805f60408486031215612259575f80fd5b612262846121eb565b9250602084013567ffffffffffffffff81111561227d575f80fd5b61228986828701612206565b9497909650939450505050565b5f805f606084860312156122a8575f80fd5b6122b1846121eb565b92506122bf602085016121eb565b9150604084013590509250925092565b5f80604083850312156122e0575f80fd5b6122e9836121eb565b946020939093013593505050565b5f8060208385031215612308575f80fd5b823567ffffffffffffffff81111561231e575f80fd5b61232a85828601612206565b90969095509350505050565b604080825283519082018190525f906020906060840190828701845b8281101561236e57815184529284019290840190600101612352565b505050838103828501528451808252858301918301905f5b818110156123ab5783516001600160a01b031683529284019291840191600101612386565b5090979650505050505050565b5f602082840312156123c8575f80fd5b610b5d826121eb565b81516001600160801b0316815260208083015160608301916108a09084018280516001600160801b03908116835260209182015116910152565b80356001600160801b0381168114612201575f80fd5b5f60208284031215612431575f80fd5b610b5d8261240b565b5f806040838503121561244b575f80fd5b6124548361240b565b91506124626020840161240b565b90509250929050565b5f805f806060858703121561247e575f80fd5b6124878561240b565b93506124956020860161240b565b9250604085013567ffffffffffffffff8111156124b0575f80fd5b6124bc87828801612206565b95989497509550505050565b5f602082840312156124d8575f80fd5b5035919050565b5f80604083850312156124f0575f80fd5b612454836121eb565b6020808252603a908201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260408201527f6563697069656e74206d61792068617665207265766572746564000000000000606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b5f5b8381101561258457818101518382015260200161256c565b50505f910152565b5f81518084526125a381602086016020860161256a565b601f01601f19169290920160200192915050565b60ff841681526125e0602082018480516001600160801b03908116835260209182015116910152565b608060608201525f6125f5608083018461258c565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610b1b57610b1b6125fe565b5f60018201612636576126366125fe565b5060010190565b634e487b7160e01b5f52604160045260245ffd5b6001600160801b038181168382160190808211156108a0576108a06125fe565b6001600160801b038281168282160390808211156108a0576108a06125fe565b6001600160a01b038316815260608101610b5d602083018480516001600160801b03908116835260209182015116910152565b8183525f6001600160fb1b038311156126db575f80fd5b8260051b80836020870137939093016020019392505050565b602081525f610e966020830184866126c4565b612727818580516001600160801b03908116835260209182015116910152565b606060408201525f6125f56060830184866126c4565b60018060a01b0385168152836020820152608060408201525f612763608083018561258c565b905082606083015295945050505050565b5f60208284031215612784575f80fd5b5051919050565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160801b03808416806127b8576127b861278b565b92169190910492915050565b6001600160801b038181168382160280821691908281146127e7576127e76125fe565b505092915050565b5f826127fd576127fd61278b565b500690565b6001600160801b03841681526125e0602082018480516001600160801b03908116835260209182015116910152565b5f60208284031215612841575f80fd5b81518015158114610b5d575f80fd5b81810381811115610b1b57610b1b6125fe565b634e487b7160e01b5f52600160045260245ffd5b5f825161288881846020870161256a565b919091019291505056fecfd85fa27c9444f5482bcadcd5a08c33291e70aa7a38635bf9e607832835c03dcfd85fa27c9444f5482bcadcd5a08c33291e70aa7a38635bf9e607832835c03f514ef74b1be31ae85a45de0d0edd48aee9e942055498ef74b3d0cb5d754dbae8514ef74b1be31ae85a45de0d0edd48aee9e942055498ef74b3d0cb5d754dbae9a2646970667358221220d189b550e0e480d3cf77c00df037485387413ffff130ff8116300d22c766ceab64736f6c63430008140033