UNPKG

@vechain/vebetterdao-contracts

Version:

Open-source repository that houses the smart contracts powering the decentralized VeBetterDAO on the VeChain Thor blockchain.

867 lines (866 loc) 37.2 kB
{ "_format": "hh-sol-artifact-1", "contractName": "ProtocolStakerMock", "sourceName": "contracts/mocks/Stargate/ProtocolStakerMock.sol", "abi": [ { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "validator", "type": "address" }, { "indexed": false, "internalType": "address", "name": "beneficiary", "type": "address" } ], "name": "BeneficiarySet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "validator", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "delegationID", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "stake", "type": "uint256" }, { "indexed": false, "internalType": "uint8", "name": "multiplier", "type": "uint8" } ], "name": "DelegationAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "delegationID", "type": "uint256" } ], "name": "DelegationSignaledExit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "delegationID", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "stake", "type": "uint256" } ], "name": "DelegationWithdrawn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "validator", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "removed", "type": "uint256" } ], "name": "StakeDecreased", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "validator", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "added", "type": "uint256" } ], "name": "StakeIncreased", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "validator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "endorser", "type": "address" }, { "indexed": false, "internalType": "uint32", "name": "period", "type": "uint32" }, { "indexed": false, "internalType": "uint256", "name": "stake", "type": "uint256" } ], "name": "ValidationQueued", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "validator", "type": "address" } ], "name": "ValidationSignaledExit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "validator", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "stake", "type": "uint256" } ], "name": "ValidationWithdrawn", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "_validator", "type": "address" }, { "internalType": "uint8", "name": "_multiplier", "type": "uint8" } ], "name": "addDelegation", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_validator", "type": "address" }, { "internalType": "uint32", "name": "_period", "type": "uint32" } ], "name": "addValidation", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_validator", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "decreaseStake", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "delegations", "outputs": [ { "internalType": "address", "name": "validator", "type": "address" }, { "internalType": "uint256", "name": "stake", "type": "uint256" }, { "internalType": "uint8", "name": "multiplier", "type": "uint8" }, { "internalType": "bool", "name": "isLocked", "type": "bool" }, { "internalType": "uint32", "name": "startPeriod", "type": "uint32" }, { "internalType": "uint32", "name": "endPeriod", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "firstActive", "outputs": [ { "internalType": "address", "name": "firstActive", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "firstQueued", "outputs": [ { "internalType": "address", "name": "firstQueued", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_delegationID", "type": "uint256" } ], "name": "getDelegation", "outputs": [ { "internalType": "address", "name": "validator", "type": "address" }, { "internalType": "uint256", "name": "stake", "type": "uint256" }, { "internalType": "uint8", "name": "multiplier", "type": "uint8" }, { "internalType": "bool", "name": "isLocked", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_delegationID", "type": "uint256" } ], "name": "getDelegationPeriodDetails", "outputs": [ { "internalType": "uint32", "name": "startPeriod", "type": "uint32" }, { "internalType": "uint32", "name": "endPeriod", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_validator", "type": "address" }, { "internalType": "uint32", "name": "_stakingPeriod", "type": "uint32" } ], "name": "getDelegatorsRewards", "outputs": [ { "internalType": "uint256", "name": "rewards", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_validator", "type": "address" } ], "name": "getValidation", "outputs": [ { "internalType": "address", "name": "_endorser", "type": "address" }, { "internalType": "uint256", "name": "_stake", "type": "uint256" }, { "internalType": "uint256", "name": "_weight", "type": "uint256" }, { "internalType": "uint256", "name": "_queuedStake", "type": "uint256" }, { "internalType": "uint8", "name": "_status", "type": "uint8" }, { "internalType": "uint32", "name": "_offlineBlock", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_validator", "type": "address" } ], "name": "getValidationPeriodDetails", "outputs": [ { "internalType": "uint32", "name": "period", "type": "uint32" }, { "internalType": "uint32", "name": "startBlock", "type": "uint32" }, { "internalType": "uint32", "name": "exitBlock", "type": "uint32" }, { "internalType": "uint32", "name": "completedPeriods", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_validator", "type": "address" } ], "name": "getValidationTotals", "outputs": [ { "internalType": "uint256", "name": "lockedVET", "type": "uint256" }, { "internalType": "uint256", "name": "lockedWeight", "type": "uint256" }, { "internalType": "uint256", "name": "queuedVET", "type": "uint256" }, { "internalType": "uint256", "name": "exitingVET", "type": "uint256" }, { "internalType": "uint256", "name": "nextPeriodWeight", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getValidationsNum", "outputs": [ { "internalType": "uint64", "name": "activeCount", "type": "uint64" }, { "internalType": "uint64", "name": "queuedCount", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_id", "type": "address" } ], "name": "getWithdrawable", "outputs": [ { "internalType": "uint256", "name": "withdrawableVET", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_delegationID", "type": "uint256" }, { "internalType": "bool", "name": "_isLocked", "type": "bool" } ], "name": "helper__setDelegationIsLocked", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_delegationID", "type": "uint256" }, { "internalType": "uint32", "name": "_startPeriod", "type": "uint32" } ], "name": "helper__setDelegationStartPeriod", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_delegationID", "type": "uint256" }, { "internalType": "address", "name": "_validator", "type": "address" } ], "name": "helper__setDelegationValidator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_stargate", "type": "address" } ], "name": "helper__setStargate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_validator", "type": "address" }, { "internalType": "uint32", "name": "_completedPeriods", "type": "uint32" } ], "name": "helper__setValidationCompletedPeriods", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_validator", "type": "address" }, { "internalType": "uint32", "name": "_exitBlock", "type": "uint32" } ], "name": "helper__setValidationExitBlock", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_validator", "type": "address" }, { "internalType": "enum ProtocolStakerMock.ValidatorStatus", "name": "_validatorStatus", "type": "uint8" } ], "name": "helper__setValidatorStatus", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_validator", "type": "address" } ], "name": "increaseStake", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "issuance", "outputs": [ { "internalType": "uint256", "name": "issued", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_prev", "type": "address" } ], "name": "next", "outputs": [ { "internalType": "address", "name": "nextValidation", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "queuedStake", "outputs": [ { "internalType": "uint256", "name": "_queuedStake", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_validator", "type": "address" }, { "internalType": "address", "name": "_beneficiary", "type": "address" } ], "name": "setBeneficiary", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_delegationID", "type": "uint256" } ], "name": "signalDelegationExit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_validator", "type": "address" } ], "name": "signalExit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "totalStake", "outputs": [ { "internalType": "uint256", "name": "_totalStake", "type": "uint256" }, { "internalType": "uint256", "name": "_totalWeight", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "validations", "outputs": [ { "internalType": "uint32", "name": "startBlock", "type": "uint32" }, { "internalType": "uint32", "name": "period", "type": "uint32" }, { "internalType": "enum ProtocolStakerMock.ValidatorStatus", "name": "status", "type": "uint8" }, { "internalType": "uint32", "name": "exitBlock", "type": "uint32" }, { "internalType": "uint32", "name": "completedPeriods", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_delegationID", "type": "uint256" } ], "name": "withdrawDelegation", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_validator", "type": "address" } ], "name": "withdrawStake", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": "0x608060405234801561001057600080fd5b506111e5806100206000396000f3fe6080604052600436106101735760003560e01c80630dd35701146101785780630f4b6c661461020757806314ca9ae41461026b5780631a73ba01146102b65780631a9e215a146102d557806327cd4de11461032557806332cc6ae61461038557806337d07860146103b45780633b26ac221461040557806343b0de9a146104425780634981530c146104535780634bf9842c146104ab578063863623bb146104be5780638b0e9f3f146104d2578063ab73e316146104f3578063af8fef4e146104d2578063bdf36d4314610526578063c23a5cea1461056b578063c3c4b13814610586578063c4336c1c14610599578063cb652cef1461064c578063ce88abbd1461066c578063d6138ffe1461068c578063d719835c146106ac578063df0e307a146106c0578063e8e1a8b8146104be578063ebe3a069146106ac578063f4479fc8146106e0578063f52564ec1461072f578063f71553451461074a578063fddff039146107b9578063fdf20f81146107d9575b600080fd5b34801561018457600080fd5b506101ce610193366004610eef565b60009081526001602081905260409091208054918101546002909101546001600160a01b0390921692909160ff808216926101009092041690565b604080516001600160a01b039095168552602085019390935260ff90911691830191909152151560608201526080015b60405180910390f35b34801561021357600080fd5b5061024e610222366004610eef565b60009081526001602052604090206002015463ffffffff620100008204811692600160301b9092041690565b6040805163ffffffff9384168152929091166020830152016101fe565b34801561027757600080fd5b506102b4610286366004610f24565b60009182526001602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b005b3480156102c257600080fd5b506102b46102d1366004610f50565b5050565b3480156102e157600080fd5b506102f56102f0366004610f7a565b610831565b6040805163ffffffff958616815293851660208501529184169183019190915290911660608201526080016101fe565b34801561033157600080fd5b50610345610340366004610f7a565b6108f4565b604080516001600160a01b039097168752602087019590955293850192909252606084015260ff16608083015263ffffffff1660a082015260c0016101fe565b34801561039157600080fd5b506103a66103a0366004610f7a565b50600090565b6040519081526020016101fe565b3480156103c057600080fd5b506103dd6103cf366004610f7a565b506000908190819081908190565b604080519586526020860194909452928401919091526060830152608082015260a0016101fe565b34801561041157600080fd5b506102b4610420366004610f7a565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6102b4610450366004610f7a565b50565b34801561045f57600080fd5b506102b461046e366004610fb0565b6001600160a01b039091166000908152602081905260409020805463ffffffff909216600160681b0263ffffffff60681b19909216919091179055565b6103a66104b9366004610fda565b6109cb565b3480156104ca57600080fd5b5060006103a6565b3480156104de57600080fd5b506040805160008082526020820152016101fe565b3480156104ff57600080fd5b5061050e6103a0366004610f7a565b6040516001600160a01b0390911681526020016101fe565b34801561053257600080fd5b506102b4610541366004611017565b60009182526001602052604090912060020180549115156101000261ff0019909216919091179055565b34801561057757600080fd5b506102b4610450366004610f7a565b6102b4610594366004610fb0565b610b2e565b3480156105a557600080fd5b506106056105b4366004610eef565b60016020819052600091825260409091208054918101546002909101546001600160a01b039092169160ff8082169161010081049091169063ffffffff620100008204811691600160301b90041686565b604080516001600160a01b039097168752602087019590955260ff909316938501939093521515606084015263ffffffff91821660808401521660a082015260c0016101fe565b34801561065857600080fd5b506102b4610667366004610f7a565b610c13565b34801561067857600080fd5b506102b4610687366004610eef565b610d1b565b34801561069857600080fd5b506102b46106a7366004611041565b610d8f565b3480156106b857600080fd5b50600061050e565b3480156106cc57600080fd5b506102b46106db366004610eef565b610dd3565b3480156106ec57600080fd5b506102b46106fb366004611071565b600091825260016020526040909120600201805463ffffffff909216620100000265ffffffff000019909216919091179055565b34801561073b57600080fd5b506102b46102d1366004611094565b34801561075657600080fd5b506107a8610765366004610f7a565b60006020819052908152604090205463ffffffff80821691600160201b810482169160ff600160401b83041691600160481b8104821691600160681b9091041685565b6040516101fe9594939291906110d4565b3480156107c557600080fd5b506103a66107d4366004610fb0565b610e93565b3480156107e557600080fd5b506102b46107f4366004610fb0565b6001600160a01b039091166000908152602081905260409020805463ffffffff909216600160481b0263ffffffff60481b19909216919091179055565b6001600160a01b038116600090815260208181526040808320815160a081018352815463ffffffff8082168352600160201b820416948201949094528493849384938493929091830190600160401b900460ff166003811115610896576108966110be565b60038111156108a7576108a76110be565b8152905463ffffffff600160481b82048116602080850191909152600160681b90920416604090920191909152810151815160608301516080909301519199909850919650945092505050565b6001600160a01b038116600090815260208181526040808320815160a081018352815463ffffffff8082168352600160201b82041694820194909452849384938493849384938493919291830190600160401b900460ff16600381111561095d5761095d6110be565b600381111561096e5761096e6110be565b8152905463ffffffff600160481b820481166020840152600160681b9091041660409182015281015190915060009081908190819060038111156109b4576109b46110be565b939c929b5090995097509095506000945092505050565b60028054600091600160a01b90910463ffffffff169060146109ec83611140565b82546101009290920a63ffffffff8181021990931691831602179091556040805160c0810182526001600160a01b0387168082523460208084019190915260ff88168385015260006060840181905291825281905291909120549092506080830191610a6191600160681b9004166002611163565b63ffffffff9081168252602091820181905260028054600160a01b90819004831660009081526001808652604091829020875181546001600160a01b0319166001600160a01b03909116178155958701519086015585015193820180546060870151608088015160a09098015160ff90971661ffff1990921691909117610100911515919091021762010000600160501b031916620100009685169690960263ffffffff60301b191695909517600160301b94841694909402939093179093559154041690505b92915050565b6040805160a08101825263ffffffff4381168252831660208201529081016001815263ffffffff6020808301829052600060409384018190526001600160a01b038716815280825283902084518154928601518416600160201b026001600160401b031990931693169290921717808255918301519091829060ff60401b1916600160401b836003811115610bc557610bc56110be565b021790555060608201518154608090930151600160481b600160881b0319909316600160481b63ffffffff9283160263ffffffff60681b191617600160681b91909316029190911790555050565b6001600160a01b038116600090815260208181526040808320815160a081018352815463ffffffff8082168352600160201b82041694820194909452929091830190600160401b900460ff166003811115610c7057610c706110be565b6003811115610c8157610c816110be565b8152905463ffffffff600160481b82048116602080850191909152600160681b90920416604090920191909152810151608082015191925090610cc5906001611163565b610ccf9190611187565b8151610cdb9190611163565b6001600160a01b039092166000908152602081905260409020805463ffffffff93909316600160481b0263ffffffff60481b199093169290921790915550565b6000818152600160208181526040808420546001600160a01b031684529083905290912054610d5891600160681b90910463ffffffff1690611163565b600091825260016020526040909120600201805463ffffffff92909216600160301b0263ffffffff60301b19909216919091179055565b6001600160a01b0382166000908152602081905260409020805482919060ff60401b1916600160401b836003811115610dca57610dca6110be565b02179055505050565b600081815260016020819052604080832090910180549083905560025491519092916001600160a01b03169083908381818185875af1925050503d8060008114610e39576040519150601f19603f3d011682016040523d82523d6000602084013e610e3e565b606091505b5050905080610e8e5760405162461bcd60e51b815260206004820152601860248201527715da5d1a191c985dd1195b1959d85d1a5bdb91985a5b195960421b604482015260640160405180910390fd5b505050565b6001600160a01b038216600090815260208190526040812054610ec490600160681b900463ffffffff166001611163565b63ffffffff168263ffffffff161115610edf57506000610b28565b5067016345785d8a000092915050565b600060208284031215610f0157600080fd5b5035919050565b80356001600160a01b0381168114610f1f57600080fd5b919050565b60008060408385031215610f3757600080fd5b82359150610f4760208401610f08565b90509250929050565b60008060408385031215610f6357600080fd5b610f6c83610f08565b946020939093013593505050565b600060208284031215610f8c57600080fd5b610f9582610f08565b9392505050565b803563ffffffff81168114610f1f57600080fd5b60008060408385031215610fc357600080fd5b610fcc83610f08565b9150610f4760208401610f9c565b60008060408385031215610fed57600080fd5b610ff683610f08565b9150602083013560ff8116811461100c57600080fd5b809150509250929050565b6000806040838503121561102a57600080fd5b823591506020830135801515811461100c57600080fd5b6000806040838503121561105457600080fd5b61105d83610f08565b915060208301356004811061100c57600080fd5b6000806040838503121561108457600080fd5b82359150610f4760208401610f9c565b600080604083850312156110a757600080fd5b6110b083610f08565b9150610f4760208401610f08565b634e487b7160e01b600052602160045260246000fd5b63ffffffff8681168252858116602083015260a08201906004861061110957634e487b7160e01b600052602160045260246000fd5b85604084015280851660608401528084166080840152509695505050505050565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff8083168181036111595761115961112a565b6001019392505050565b63ffffffff8181168382160190808211156111805761118061112a565b5092915050565b63ffffffff8181168382160280821691908281146111a7576111a761112a565b50509291505056fea264697066735822122002e6d5a647b591b8a537ef897196e2ef2590d00d27569b72632aa3aaf50e053f64736f6c63430008140033", "deployedBytecode": "0x6080604052600436106101735760003560e01c80630dd35701146101785780630f4b6c661461020757806314ca9ae41461026b5780631a73ba01146102b65780631a9e215a146102d557806327cd4de11461032557806332cc6ae61461038557806337d07860146103b45780633b26ac221461040557806343b0de9a146104425780634981530c146104535780634bf9842c146104ab578063863623bb146104be5780638b0e9f3f146104d2578063ab73e316146104f3578063af8fef4e146104d2578063bdf36d4314610526578063c23a5cea1461056b578063c3c4b13814610586578063c4336c1c14610599578063cb652cef1461064c578063ce88abbd1461066c578063d6138ffe1461068c578063d719835c146106ac578063df0e307a146106c0578063e8e1a8b8146104be578063ebe3a069146106ac578063f4479fc8146106e0578063f52564ec1461072f578063f71553451461074a578063fddff039146107b9578063fdf20f81146107d9575b600080fd5b34801561018457600080fd5b506101ce610193366004610eef565b60009081526001602081905260409091208054918101546002909101546001600160a01b0390921692909160ff808216926101009092041690565b604080516001600160a01b039095168552602085019390935260ff90911691830191909152151560608201526080015b60405180910390f35b34801561021357600080fd5b5061024e610222366004610eef565b60009081526001602052604090206002015463ffffffff620100008204811692600160301b9092041690565b6040805163ffffffff9384168152929091166020830152016101fe565b34801561027757600080fd5b506102b4610286366004610f24565b60009182526001602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b005b3480156102c257600080fd5b506102b46102d1366004610f50565b5050565b3480156102e157600080fd5b506102f56102f0366004610f7a565b610831565b6040805163ffffffff958616815293851660208501529184169183019190915290911660608201526080016101fe565b34801561033157600080fd5b50610345610340366004610f7a565b6108f4565b604080516001600160a01b039097168752602087019590955293850192909252606084015260ff16608083015263ffffffff1660a082015260c0016101fe565b34801561039157600080fd5b506103a66103a0366004610f7a565b50600090565b6040519081526020016101fe565b3480156103c057600080fd5b506103dd6103cf366004610f7a565b506000908190819081908190565b604080519586526020860194909452928401919091526060830152608082015260a0016101fe565b34801561041157600080fd5b506102b4610420366004610f7a565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6102b4610450366004610f7a565b50565b34801561045f57600080fd5b506102b461046e366004610fb0565b6001600160a01b039091166000908152602081905260409020805463ffffffff909216600160681b0263ffffffff60681b19909216919091179055565b6103a66104b9366004610fda565b6109cb565b3480156104ca57600080fd5b5060006103a6565b3480156104de57600080fd5b506040805160008082526020820152016101fe565b3480156104ff57600080fd5b5061050e6103a0366004610f7a565b6040516001600160a01b0390911681526020016101fe565b34801561053257600080fd5b506102b4610541366004611017565b60009182526001602052604090912060020180549115156101000261ff0019909216919091179055565b34801561057757600080fd5b506102b4610450366004610f7a565b6102b4610594366004610fb0565b610b2e565b3480156105a557600080fd5b506106056105b4366004610eef565b60016020819052600091825260409091208054918101546002909101546001600160a01b039092169160ff8082169161010081049091169063ffffffff620100008204811691600160301b90041686565b604080516001600160a01b039097168752602087019590955260ff909316938501939093521515606084015263ffffffff91821660808401521660a082015260c0016101fe565b34801561065857600080fd5b506102b4610667366004610f7a565b610c13565b34801561067857600080fd5b506102b4610687366004610eef565b610d1b565b34801561069857600080fd5b506102b46106a7366004611041565b610d8f565b3480156106b857600080fd5b50600061050e565b3480156106cc57600080fd5b506102b46106db366004610eef565b610dd3565b3480156106ec57600080fd5b506102b46106fb366004611071565b600091825260016020526040909120600201805463ffffffff909216620100000265ffffffff000019909216919091179055565b34801561073b57600080fd5b506102b46102d1366004611094565b34801561075657600080fd5b506107a8610765366004610f7a565b60006020819052908152604090205463ffffffff80821691600160201b810482169160ff600160401b83041691600160481b8104821691600160681b9091041685565b6040516101fe9594939291906110d4565b3480156107c557600080fd5b506103a66107d4366004610fb0565b610e93565b3480156107e557600080fd5b506102b46107f4366004610fb0565b6001600160a01b039091166000908152602081905260409020805463ffffffff909216600160481b0263ffffffff60481b19909216919091179055565b6001600160a01b038116600090815260208181526040808320815160a081018352815463ffffffff8082168352600160201b820416948201949094528493849384938493929091830190600160401b900460ff166003811115610896576108966110be565b60038111156108a7576108a76110be565b8152905463ffffffff600160481b82048116602080850191909152600160681b90920416604090920191909152810151815160608301516080909301519199909850919650945092505050565b6001600160a01b038116600090815260208181526040808320815160a081018352815463ffffffff8082168352600160201b82041694820194909452849384938493849384938493919291830190600160401b900460ff16600381111561095d5761095d6110be565b600381111561096e5761096e6110be565b8152905463ffffffff600160481b820481166020840152600160681b9091041660409182015281015190915060009081908190819060038111156109b4576109b46110be565b939c929b5090995097509095506000945092505050565b60028054600091600160a01b90910463ffffffff169060146109ec83611140565b82546101009290920a63ffffffff8181021990931691831602179091556040805160c0810182526001600160a01b0387168082523460208084019190915260ff88168385015260006060840181905291825281905291909120549092506080830191610a6191600160681b9004166002611163565b63ffffffff9081168252602091820181905260028054600160a01b90819004831660009081526001808652604091829020875181546001600160a01b0319166001600160a01b03909116178155958701519086015585015193820180546060870151608088015160a09098015160ff90971661ffff1990921691909117610100911515919091021762010000600160501b031916620100009685169690960263ffffffff60301b191695909517600160301b94841694909402939093179093559154041690505b92915050565b6040805160a08101825263ffffffff4381168252831660208201529081016001815263ffffffff6020808301829052600060409384018190526001600160a01b038716815280825283902084518154928601518416600160201b026001600160401b031990931693169290921717808255918301519091829060ff60401b1916600160401b836003811115610bc557610bc56110be565b021790555060608201518154608090930151600160481b600160881b0319909316600160481b63ffffffff9283160263ffffffff60681b191617600160681b91909316029190911790555050565b6001600160a01b038116600090815260208181526040808320815160a081018352815463ffffffff8082168352600160201b82041694820194909452929091830190600160401b900460ff166003811115610c7057610c706110be565b6003811115610c8157610c816110be565b8152905463ffffffff600160481b82048116602080850191909152600160681b90920416604090920191909152810151608082015191925090610cc5906001611163565b610ccf9190611187565b8151610cdb9190611163565b6001600160a01b039092166000908152602081905260409020805463ffffffff93909316600160481b0263ffffffff60481b199093169290921790915550565b6000818152600160208181526040808420546001600160a01b031684529083905290912054610d5891600160681b90910463ffffffff1690611163565b600091825260016020526040909120600201805463ffffffff92909216600160301b0263ffffffff60301b19909216919091179055565b6001600160a01b0382166000908152602081905260409020805482919060ff60401b1916600160401b836003811115610dca57610dca6110be565b02179055505050565b600081815260016020819052604080832090910180549083905560025491519092916001600160a01b03169083908381818185875af1925050503d8060008114610e39576040519150601f19603f3d011682016040523d82523d6000602084013e610e3e565b606091505b5050905080610e8e5760405162461bcd60e51b815260206004820152601860248201527715da5d1a191c985dd1195b1959d85d1a5bdb91985a5b195960421b604482015260640160405180910390fd5b505050565b6001600160a01b038216600090815260208190526040812054610ec490600160681b900463ffffffff166001611163565b63ffffffff168263ffffffff161115610edf57506000610b28565b5067016345785d8a000092915050565b600060208284031215610f0157600080fd5b5035919050565b80356001600160a01b0381168114610f1f57600080fd5b919050565b60008060408385031215610f3757600080fd5b82359150610f4760208401610f08565b90509250929050565b60008060408385031215610f6357600080fd5b610f6c83610f08565b946020939093013593505050565b600060208284031215610f8c57600080fd5b610f9582610f08565b9392505050565b803563ffffffff81168114610f1f57600080fd5b60008060408385031215610fc357600080fd5b610fcc83610f08565b9150610f4760208401610f9c565b60008060408385031215610fed57600080fd5b610ff683610f08565b9150602083013560ff8116811461100c57600080fd5b809150509250929050565b6000806040838503121561102a57600080fd5b823591506020830135801515811461100c57600080fd5b6000806040838503121561105457600080fd5b61105d83610f08565b915060208301356004811061100c57600080fd5b6000806040838503121561108457600080fd5b82359150610f4760208401610f9c565b600080604083850312156110a757600080fd5b6110b083610f08565b9150610f4760208401610f08565b634e487b7160e01b600052602160045260246000fd5b63ffffffff8681168252858116602083015260a08201906004861061110957634e487b7160e01b600052602160045260246000fd5b85604084015280851660608401528084166080840152509695505050505050565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff8083168181036111595761115961112a565b6001019392505050565b63ffffffff8181168382160190808211156111805761118061112a565b5092915050565b63ffffffff8181168382160280821691908281146111a7576111a761112a565b50509291505056fea264697066735822122002e6d5a647b591b8a537ef897196e2ef2590d00d27569b72632aa3aaf50e053f64736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} }