0 txs
0 calls
constructor
constructor()
functions
_epochTimestamp
viewfunction _epochTimestamp() view returns (uint256)
_factories
viewfunction _factories() view returns (address[])
_gaugeFactories
viewfunction _gaugeFactories() view returns (address[])
_ve
viewfunction _ve() view returns (address)
bribefactory
viewfunction bribefactory() view returns (address)
claimable
viewfunction claimable(address) view returns (uint256)
external_bribes
viewfunction external_bribes(address) view returns (address)
factories
viewfunction factories(uint256) view returns (address)
factory
viewfunction factory() view returns (address)
factoryLength
viewfunction factoryLength() view returns (uint256)
gaugeFactories
viewfunction gaugeFactories(uint256) view returns (address)
gaugeFactoriesLength
viewfunction gaugeFactoriesLength() view returns (uint256)
gaugefactory
viewfunction gaugefactory() view returns (address)
gauges
viewfunction gauges(address) view returns (address)
gaugesDistributionTimestmap
viewfunction gaugesDistributionTimestmap(address) view returns (uint256)
internal_bribes
viewfunction internal_bribes(address) view returns (address)
isAlive
viewfunction isAlive(address) view returns (bool)
isFactory
viewfunction isFactory(address) view returns (bool)
isGauge
viewfunction isGauge(address) view returns (bool)
isGaugeFactory
viewfunction isGaugeFactory(address) view returns (bool)
isWhitelisted
viewfunction isWhitelisted(address) view returns (bool)
lastVoted
viewfunction lastVoted(uint256) view returns (uint256)
length
viewfunction length() view returns (uint256)
MAX_VOTE_DELAY
viewfunction MAX_VOTE_DELAY() view returns (uint256)
minter
viewfunction minter() view returns (address)
owner
viewfunction owner() view returns (address)
permissionRegistry
viewfunction permissionRegistry() view returns (address)
poolForGauge
viewfunction poolForGauge(address) view returns (address)
pools
viewfunction pools(uint256) view returns (address)
poolVote
viewfunction poolVote(uint256, uint256) view returns (address)
poolVoteLength
viewfunction poolVoteLength(uint256 tokenId) view returns (uint256)
totalWeight
viewfunction totalWeight() view returns (uint256)
totalWeightAt
viewfunction totalWeightAt(uint256 _time) view returns (uint256)
usedWeights
viewfunction usedWeights(uint256) view returns (uint256)
VOTE_DELAY
viewfunction VOTE_DELAY() view returns (uint256)
votes
viewfunction votes(uint256, address) view returns (uint256)
weights
viewfunction weights(address _pool) view returns (uint256)
weightsAt
viewfunction weightsAt(address _pool, uint256 _time) view returns (uint256)
_init
nonpayablefunction _init(address[] _tokens, address _permissionsRegistry, address _minter)
addFactory
nonpayablefunction addFactory(address _pairFactory, address _gaugeFactory)
attachTokenToGauge
nonpayablefunction attachTokenToGauge(uint256 tokenId, address account)
blacklist
nonpayablefunction blacklist(address[] _token)
claimBribes
nonpayablefunction claimBribes(address[] _bribes, address[][] _tokens, uint256 _tokenId)
claimBribes
nonpayablefunction claimBribes(address[] _bribes, address[][] _tokens)
claimFees
nonpayablefunction claimFees(address[] _bribes, address[][] _tokens)
claimFees
nonpayablefunction claimFees(address[] _fees, address[][] _tokens, uint256 _tokenId)
claimRewards
nonpayablefunction claimRewards(address[] _gauges)
createGauge
nonpayablefunction createGauge(address _pool, uint256 _gaugeType) returns (address _gauge, address _internal_bribe, address _external_bribe)
createGauges
nonpayablefunction createGauges(address[] _pool, uint256[] _gaugeTypes) returns (address[], address[], address[])
detachTokenFromGauge
nonpayablefunction detachTokenFromGauge(uint256 tokenId, address account)
distribute
nonpayablefunction distribute(address[] _gauges)
distribute
nonpayablefunction distribute(uint256 start, uint256 finish)
distributeAll
nonpayablefunction distributeAll()
distributeFees
nonpayablefunction distributeFees(address[] _gauges)
forceResetTo
nonpayablefunction forceResetTo(uint256 _tokenId)
increaseGaugeApprovals
nonpayablefunction increaseGaugeApprovals(address _gauge)
initialize
nonpayablefunction initialize(address __ve, address _factory, address _gauges, address _bribes)
killGauge
nonpayablefunction killGauge(address _gauge)
killGaugeTotally
nonpayablefunction killGaugeTotally(address _gauge)
notifyRewardAmount
nonpayablefunction notifyRewardAmount(uint256 amount)
poke
nonpayablefunction poke(uint256 _tokenId)
removeFactory
nonpayablefunction removeFactory(uint256 _pos)
renounceOwnership
nonpayablefunction renounceOwnership()
replaceFactory
nonpayablefunction replaceFactory(address _pairFactory, address _gaugeFactory, uint256 _pos)
reset
nonpayablefunction reset(uint256 _tokenId)
reviveGauge
nonpayablefunction reviveGauge(address _gauge)
setBribeFactory
nonpayablefunction setBribeFactory(address _bribeFactory)
setExternalBribeFor
nonpayablefunction setExternalBribeFor(address _gauge, address _external)
setGaugeFactory
nonpayablefunction setGaugeFactory(address _gaugeFactory)
setInternalBribeFor
nonpayablefunction setInternalBribeFor(address _gauge, address _internal)
setMinter
nonpayablefunction setMinter(address _minter)
setNewBribes
nonpayablefunction setNewBribes(address _gauge, address _internal, address _external)
setPairFactory
nonpayablefunction setPairFactory(address _factory)
setPermissionsRegistry
nonpayablefunction setPermissionsRegistry(address _permissionRegistry)
setVoteDelay
nonpayablefunction setVoteDelay(uint256 _delay)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
vote
nonpayablefunction vote(uint256 _tokenId, address[] _poolVote, uint256[] _weights)
whitelist
nonpayablefunction whitelist(address[] _token)
events
Abstained
event Abstained(uint256 tokenId, uint256 weight)
Attach
event Attach(address indexed owner, address indexed gauge, uint256 tokenId)
Blacklisted
event Blacklisted(address indexed blacklister, address indexed token)
Detach
event Detach(address indexed owner, address indexed gauge, uint256 tokenId)
DistributeReward
event DistributeReward(address indexed sender, address indexed gauge, uint256 amount)
GaugeCreated
event GaugeCreated(address indexed gauge, address creator, address internal_bribe, address indexed external_bribe, address indexed pool)
GaugeKilled
event GaugeKilled(address indexed gauge)
GaugeRevived
event GaugeRevived(address indexed gauge)
Initialized
event Initialized(uint8 version)
NotifyReward
event NotifyReward(address indexed sender, address indexed reward, uint256 amount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Voted
event Voted(address indexed voter, uint256 tokenId, uint256 weight)
Whitelisted
event Whitelisted(address indexed whitelister, address indexed token)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b50615db680620000216000396000f3fe608060405234801561001057600080fd5b506004361061046a5760003560e01c80638b6fc2471161024c578063b7c89f9c11610146578063dcd9e47a116100c3578063f8803bb611610087578063f8803bb614610b2b578063f8c8765e14610b33578063f9f031df14610b46578063fca3b5aa14610b59578063ffe5195b14610b6c57600080fd5b8063dcd9e47a14610a8a578063e9f6adfa14610ac7578063eae40f2614610acf578063f2fde38b14610af8578063f3594be014610b0b57600080fd5b8063c45a01551161010a578063c45a015514610a13578063c527ee1f14610a26578063c991866d14610a39578063d23254b414610a4c578063daa168bd14610a7757600080fd5b8063b7c89f9c14610991578063b9a09fd5146109a4578063bd8aa780146109cd578063c2b79e98146109e0578063c445d88a146109f357600080fd5b8063a7cac846116101d4578063ae21c4cb11610198578063ae21c4cb14610927578063b0f5027814610950578063b15db79c14610963578063b52a315114610976578063b55a5c1c1461097e57600080fd5b8063a7cac846146108b8578063a86a366d146108cb578063a9b5aa7e146108de578063aa79979b146108f1578063ac4afa381461091457600080fd5b80639772e18f1161021b5780639772e18f14610857578063992a79331461086a5780639edfd4601461087d5780639f06247b146108905780639fb5dc05146108a357600080fd5b80638b6fc247146108135780638da5cb5b146108265780638dd598fb1461083757806396c82e571461084f57600080fd5b80634d68ce4411610368578063672383c4116102e55780637625391a116102a95780637625391a146107a75780637715ee75146107ba5780637964bac9146107cd57806379e93824146107e05780637ac09bf71461080057600080fd5b8063672383c41461075c57806368c3acb31461076f578063698473e3146107825780636c4f2e3814610795578063715018a61461079f57600080fd5b8063636056f21161032c578063636056f2146106be5780636447e7da146106f35780636566afad14610713578063657021fb14610726578063666256aa1461074957600080fd5b80634d68ce441461064357806353be568d14610665578063556e091d14610685578063577387b5146106985780636138889b146106ab57600080fd5b8063310bd74b116103f65780633c6b16ab116103ba5780633c6b16ab146105ed578063402914f514610600578063411b1f7714610620578063436596c414610633578063470f49851461063b57600080fd5b8063310bd74b1461057e57806332145f901461059157806333832a6a146105a457806338752a9d146105b75780633af32abf146105ca57600080fd5b80631703e5f91161043d5780631703e5f9146105105780631f7b6d321461053357806323130d111461054557806323e1af421461055857806327e5c8231461056b57600080fd5b8063041f173f1461046f57806306d6a1b21461048457806307546172146104ca5780630f04ba67146104dd575b600080fd5b61048261047d366004615390565b610b75565b005b6104ad6104923660046153cc565b60a7602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b609e546104ad906001600160a01b031681565b6105006104eb3660046153cc565b60b36020526000908152604090205460ff1681565b60405190151581526020016104c1565b61050061051e3660046153cc565b60b26020526000908152604090205460ff1681565b60a0545b6040519081526020016104c1565b6104826105533660046153cc565b610c4f565b6104ad6105663660046153f0565b610cfe565b610482610579366004615409565b610d28565b61048261058c3660046153f0565b610ff7565b61048261059f3660046153f0565b611125565b6104826105b23660046153cc565b61132e565b609d546104ad906001600160a01b031681565b6105006105d83660046153cc565b60b16020526000908152604090205460ff1681565b6104826105fb3660046153f0565b6113dd565b61053761060e3660046153cc565b60a46020526000908152604090205481565b61048261062e36600461544a565b6114b8565b610482611582565b609954610537565b61065661065136600461547a565b61167d565b6040516104c193929190615578565b6105376106733660046153f0565b600090815260ad602052604090205490565b6104826106933660046153cc565b611855565b6104826106a63660046153f0565b6119f7565b6104826106b9366004615390565b611c37565b6105376106cc3660046155bb565b600090815260ac602090815260408083206001600160a01b03949094168352929052205490565b6105376107013660046153f0565b600090815260ab602052604090205490565b6104826107213660046155e7565b611d04565b6105006107343660046153cc565b60b46020526000908152604090205460ff1681565b610482610757366004615694565b611f46565b6104ad61076a3660046153f0565b61207d565b609b546104ad906001600160a01b031681565b61048261079036600461544a565b61208d565b61053762093a8081565b61048261216b565b6104826107b5366004615700565b61217d565b6104826107c8366004615694565b612240565b6104826107db3660046153cc565b612371565b6105376107ee3660046153f0565b60ae6020526000908152604090205481565b61048261080e36600461576d565b612420565b6104826108213660046153f0565b61255e565b6033546001600160a01b03166104ad565b6097546104ad9061010090046001600160a01b031681565b61053761260e565b6104826108653660046157e6565b61262e565b6104826108783660046153cc565b61274c565b61048261088b3660046153cc565b61288c565b61048261089e3660046153cc565b612a34565b6108ab612bdc565b6040516104c19190615849565b6105376108c63660046153cc565b612c3e565b6104ad6108d9366004615700565b612c75565b6104826108ec3660046153cc565b612cad565b6105006108ff3660046153cc565b60b06020526000908152604090205460ff1681565b6104ad6109223660046153f0565b612d5c565b6104ad6109353660046153cc565b60a9602052600090815260409020546001600160a01b031681565b61048261095e36600461585c565b612d6c565b6104826109713660046153f0565b612e3c565b609c54610537565b609f546104ad906001600160a01b031681565b61048261099f3660046155e7565b612ef1565b6104ad6109b23660046153cc565b60a5602052600090815260409020546001600160a01b031681565b6104826109db366004615390565b612fad565b6104826109ee36600461588c565b61306d565b610537610a013660046153cc565b60a66020526000908152604090205481565b6098546104ad906001600160a01b031681565b610482610a34366004615390565b61311e565b610482610a4736600461588c565b613242565b610537610a5a36600461544a565b60aa60209081526000928352604080842090915290825290205481565b610482610a853660046155e7565b6132f3565b610a9d610a983660046155bb565b6133af565b604080516001600160a01b03948516815292841660208401529216918101919091526060016104c1565b6108ab6133d7565b6104ad610add3660046153cc565b60a8602052600090815260409020546001600160a01b031681565b610482610b063660046153cc565b613437565b610537610b193660046153f0565b60af6020526000908152604090205481565b6105376134ad565b610482610b413660046158ef565b613520565b610482610b54366004615390565b6137d9565b610482610b673660046153cc565b61386f565b61053760a25481565b609f54604051634448e1eb60e01b81526001600160a01b0390911690634448e1eb90610ba590339060040161594b565b602060405180830381865afa158015610bc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be69190615980565b610c0b5760405162461bcd60e51b8152600401610c02906159a2565b60405180910390fd5b60005b8151811015610c4b57610c39828281518110610c2c57610c2c6159cb565b6020026020010151613931565b80610c43816159f7565b915050610c0e565b5050565b609f54604051634448e1eb60e01b81526001600160a01b0390911690634448e1eb90610c7f903390600401615a10565b602060405180830381865afa158015610c9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc09190615980565b610cdc5760405162461bcd60e51b8152600401610c0290615a46565b609b80546001600160a01b0319166001600160a01b0392909216919091179055565b609c8181548110610d0e57600080fd5b6000918252602090912001546001600160a01b0316905081565b609f54604051634448e1eb60e01b81526001600160a01b0390911690634448e1eb90610d58903390600401615a10565b602060405180830381865afa158015610d75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d999190615980565b610db55760405162461bcd60e51b8152600401610c0290615a46565b6001600160a01b038316610ddb5760405162461bcd60e51b8152600401610c0290615a70565b6001600160a01b038216610e015760405162461bcd60e51b8152600401610c0290615a70565b6001600160a01b038316600090815260b3602052604090205460ff16610e595760405162461bcd60e51b815260206004820152600d60248201526c666163746f72792066616c736560981b6044820152606401610c02565b6001600160a01b038216600090815260b4602052604090205460ff16610eb05760405162461bcd60e51b815260206004820152600c60248201526b672e666163742066616c736560a01b6044820152606401610c02565b600060998281548110610ec557610ec56159cb565b6000918252602082200154609c80546001600160a01b0390921693509084908110610ef257610ef26159cb565b60009182526020808320909101546001600160a01b03858116845260b383526040808520805460ff199081169091559190921680855260b49093529220805490921690915560998054919250869185908110610f5057610f506159cb565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555083609c8481548110610f9257610f926159cb565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055968216815260b387526040808220805460ff19908116600190811790925597909316825260b4909752959095208054909416909417909255505050565b610fff6139a0565b611008816139f9565b60975460405163430c208160e01b8152336004820152602481018390526101009091046001600160a01b03169063430c208190604401602060405180830381865afa15801561105b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107f9190615980565b61108857600080fd5b61109181613a55565b60405163c1f0fb9f60e01b815260048101829052738aebed1f28a8ae1eb6479ddd8b1148da0e05b58d9063c1f0fb9f90602401600060405180830381600087803b1580156110de57600080fd5b505af11580156110f2573d6000803e3d6000fd5b505050506110fe6134ad565b611109906001615a90565b600082815260af60205260409020556111226001606555565b50565b61112d6139a0565b611136816139f9565b60975460405163430c208160e01b8152336004820152602481018390526101009091046001600160a01b03169063430c208190604401602060405180830381865afa158015611189573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ad9190615980565b6111b657600080fd5b600081815260ab602090815260408083208054825181850281018501909352808352919290919083018282801561121657602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116111f8575b505050505090506000815190506000816001600160401b0381111561123d5761123d61529e565b604051908082528060200260200182016040528015611266578160200160208202803683370190505b50905060005b828110156112f35760aa6000868152602001908152602001600020600085838151811061129b5761129b6159cb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020548282815181106112d6576112d66159cb565b6020908102919091010152806112eb816159f7565b91505061126c565b506112ff848483613d15565b6113076134ad565b611312906001615a90565b600085815260af6020526040902055506111229150613d0e9050565b609f54604051634448e1eb60e01b81526001600160a01b0390911690634448e1eb9061135e903390600401615a10565b602060405180830381865afa15801561137b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139f9190615980565b6113bb5760405162461bcd60e51b8152600401610c0290615a46565b609f80546001600160a01b0319166001600160a01b0392909216919091179055565b609e546001600160a01b031633146113f457600080fd5b609a5461140c906001600160a01b03163330846141aa565b600061142762093a8061141d6134ad565b6106739190615aa8565b905060008115611451578161144484670de0b6b3a7640000615abf565b61144e9190615ade565b90505b801561146f578060a160008282546114699190615a90565b90915550505b609a546040518481526001600160a01b039091169033907ff70d5c697de7ea828df48e5c4573cb2194c659f1901f70110c52b066dcf508269060200160405180910390a3505050565b33600090815260b0602052604090205460ff166114d457600080fd5b811561153d57609754604051634c35bec560e11b8152600481018490526101009091046001600160a01b03169063986b7d8a90602401600060405180830381600087803b15801561152457600080fd5b505af1158015611538573d6000803e3d6000fd5b505050505b60405182815233906001600160a01b038316907fae268d9aab12f3605f58efd74fd3801fa812b03fdb44317eb70f46dff0e19e22906020015b60405180910390a35050565b61158a6139a0565b609e60009054906101000a90046001600160a01b03166001600160a01b031663ed29fc116040518163ffffffff1660e01b81526004016020604051808303816000875af11580156115df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116039190615b00565b5060a0546000905b8082101561166f5761165d60a5600060a0858154811061162d5761162d6159cb565b60009182526020808320909101546001600160a01b0390811684529083019390935260409091019020541661429a565b81611667816159f7565b92505061160b565b505061167b6001606555565b565b606080606061168a6139a0565b835185511461169857600080fd5b600a855111156116a757600080fd5b600085516001600160401b038111156116c2576116c261529e565b6040519080825280602002602001820160405280156116eb578160200160208202803683370190505b509050600086516001600160401b038111156117095761170961529e565b604051908082528060200260200182016040528015611732578160200160208202803683370190505b509050600087516001600160401b038111156117505761175061529e565b604051908082528060200260200182016040528015611779578160200160208202803683370190505b50905060005b885181101561183c576117c489828151811061179d5761179d6159cb565b60200260200101518983815181106117b7576117b76159cb565b60200260200101516143de565b8684815181106117d6576117d66159cb565b602002602001018685815181106117ef576117ef6159cb565b60200260200101868681518110611808576118086159cb565b6001600160a01b03948516602091820292909201015292821690925291909116905280611834816159f7565b91505061177f565b509194509250905061184e6001606555565b9250925092565b609f54604051634448e1eb60e01b81526001600160a01b0390911690634448e1eb90611885903390600401615a10565b602060405180830381865afa1580156118a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c69190615980565b6118e25760405162461bcd60e51b8152600401610c0290615a46565b6001600160a01b038116600090815260b0602052604090205460ff1661190757600080fd5b609a5460405163095ea7b360e01b81526001600160a01b038381166004830152600060248301529091169063095ea7b3906044016020604051808303816000875af115801561195a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197e9190615980565b50609a5460405163095ea7b360e01b81526001600160a01b03838116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af11580156119d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4b9190615980565b609f54604051634448e1eb60e01b81526001600160a01b0390911690634448e1eb90611a27903390600401615a10565b602060405180830381865afa158015611a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a689190615980565b611a845760405162461bcd60e51b8152600401610c0290615a46565b600060998281548110611a9957611a996159cb565b6000918252602082200154609c80546001600160a01b0390921693509084908110611ac657611ac66159cb565b60009182526020808320909101546001600160a01b03858116845260b39092526040909220549116915060ff16611b2f5760405162461bcd60e51b815260206004820152600d60248201526c666163746f72792066616c736560981b6044820152606401610c02565b6001600160a01b038116600090815260b4602052604090205460ff16611b865760405162461bcd60e51b815260206004820152600c60248201526b672e666163742066616c736560a01b6044820152606401610c02565b600060998481548110611b9b57611b9b6159cb565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000609c8481548110611bde57611bde6159cb565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055938216815260b384526040808220805460ff1990811690915593909216815260b49093529091208054909116905550565b611c3f6139a0565b609e60009054906101000a90046001600160a01b03166001600160a01b031663ed29fc116040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611c94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb89190615b00565b5060005b8151811015611cf957611ce7828281518110611cda57611cda6159cb565b602002602001015161429a565b80611cf1816159f7565b915050611cbc565b506111226001606555565b609f54604051634448e1eb60e01b81526001600160a01b0390911690634448e1eb90611d34903390600401615a10565b602060405180830381865afa158015611d51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d759190615980565b611d915760405162461bcd60e51b8152600401610c0290615a46565b6001600160a01b038216611db75760405162461bcd60e51b8152600401610c0290615a70565b6001600160a01b038116611ddd5760405162461bcd60e51b8152600401610c0290615a70565b6001600160a01b038216600090815260b3602052604090205460ff1615611e355760405162461bcd60e51b815260206004820152600c60248201526b666163746f7279207472756560a01b6044820152606401610c02565b6001600160a01b038116600090815260b4602052604090205460ff1615611e8c5760405162461bcd60e51b815260206004820152600b60248201526a672e66616374207472756560a81b6044820152606401610c02565b6099805460018181019092557f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000180546001600160a01b039485166001600160a01b03199182168117909255609c80548085019091557faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c0180549490951693168317909355600092835260b360209081526040808520805460ff19908116851790915593855260b490915290922080549091169091179055565b60975460405163430c208160e01b8152336004820152602481018390526101009091046001600160a01b03169063430c208190604401602060405180830381865afa158015611f99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fbd9190615980565b611fc657600080fd5b60005b835181101561207757838181518110611fe457611fe46159cb565b60200260200101516001600160a01b031663a7852afa8385848151811061200d5761200d6159cb565b60200260200101516040518363ffffffff1660e01b8152600401612032929190615b19565b600060405180830381600087803b15801561204c57600080fd5b505af1158015612060573d6000803e3d6000fd5b50505050808061206f906159f7565b915050611fc9565b50505050565b60998181548110610d0e57600080fd5b33600090815260b0602052604090205460ff166120a957600080fd5b33600090815260b2602052604090205460ff166120c557600080fd5b811561212e5760975460405163fbd3a29d60e01b8152600481018490526101009091046001600160a01b03169063fbd3a29d90602401600060405180830381600087803b15801561211557600080fd5b505af1158015612129573d6000803e3d6000fd5b505050505b60405182815233906001600160a01b038316907f60940192810a6fb3bce3fd3e2e3a13fd6ccc7605e963fb87ee971aba829989bd90602001611576565b612173614f0b565b61167b6000614f65565b6121856139a0565b609e60009054906101000a90046001600160a01b03166001600160a01b031663ed29fc116040518163ffffffff1660e01b81526004016020604051808303816000875af11580156121da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fe9190615b00565b50815b818110156122355761222360a5600060a0848154811061162d5761162d6159cb565b8061222d816159f7565b915050612201565b50610c4b6001606555565b60975460405163430c208160e01b8152336004820152602481018390526101009091046001600160a01b03169063430c208190604401602060405180830381865afa158015612293573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b79190615980565b6122c057600080fd5b60005b8351811015612077578381815181106122de576122de6159cb565b60200260200101516001600160a01b031663a7852afa83858481518110612307576123076159cb565b60200260200101516040518363ffffffff1660e01b815260040161232c929190615b19565b600060405180830381600087803b15801561234657600080fd5b505af115801561235a573d6000803e3d6000fd5b505050508080612369906159f7565b9150506122c3565b609f54604051634448e1eb60e01b81526001600160a01b0390911690634448e1eb906123a1903390600401615a10565b602060405180830381865afa1580156123be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e29190615980565b6123fe5760405162461bcd60e51b8152600401610c0290615a46565b609880546001600160a01b0319166001600160a01b0392909216919091179055565b6124286139a0565b612431856139f9565b60975460405163430c208160e01b8152336004820152602481018790526101009091046001600160a01b03169063430c208190604401602060405180830381865afa158015612484573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a89190615980565b6124b157600080fd5b8281146124bd57600080fd5b61252b8585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808902828101820190935288825290935088925087918291850190849080828437600092019190915250613d1592505050565b6125336134ad565b61253e906001615a90565b600086815260af60205260409020556125576001606555565b5050505050565b609f54604051634448e1eb60e01b81526001600160a01b0390911690634448e1eb9061258e903390600401615a10565b602060405180830381865afa1580156125ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cf9190615980565b6125eb5760405162461bcd60e51b8152600401610c0290615a46565b60a25481036125f957600080fd5b62093a8081111561260957600080fd5b60a255565b6000806126196134ad565b600090815260ad602052604090205492915050565b609e546001600160a01b03163314806126b35750609f54604051634448e1eb60e01b81526001600160a01b0390911690634448e1eb90612672903390600401615a10565b602060405180830381865afa15801561268f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b39190615980565b6126bc57600080fd5b60975460ff16156126cc57600080fd5b60005b835181101561270c576126fa8482815181106126ed576126ed6159cb565b6020026020010151614fb7565b80612704816159f7565b9150506126cf565b50609e80546001600160a01b039283166001600160a01b031991821617909155609f8054939092169216919091179055506097805460ff19166001179055565b609f54604051634448e1eb60e01b81526001600160a01b0390911690634448e1eb9061277c90339060040161594b565b602060405180830381865afa158015612799573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127bd9190615980565b6127d95760405162461bcd60e51b8152600401610c02906159a2565b6001600160a01b038116600090815260b2602052604090205460ff166128365760405162461bcd60e51b815260206004820152601260248201527119d85d59d948185b1c9958591e481919585960721b6044820152606401610c02565b6001600160a01b038116600081815260b260209081526040808320805460ff1916905560a4909152808220829055517f04a5d3f5d80d22d9345acc80618f4a4e7e663cf9e1aed23b57d975acec002ba79190a250565b609f54604051634448e1eb60e01b81526001600160a01b0390911690634448e1eb906128bc90339060040161594b565b602060405180830381865afa1580156128d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128fd9190615980565b6129195760405162461bcd60e51b8152600401610c02906159a2565b6001600160a01b038116600090815260b2602052604090205460ff166129765760405162461bcd60e51b815260206004820152601260248201527119d85d59d948185b1c9958591e481919585960721b6044820152606401610c02565b6001600160a01b03808216600081815260b260209081526040808320805460ff1990811690915560a8835281842080546001600160a01b031990811690915560a9845282852080548216905560a7845282852080548216815560b08552838620805490931690925560a4845282852085905560a38452828520859055905490951680845260a5909252808320805490951690945592517f04a5d3f5d80d22d9345acc80618f4a4e7e663cf9e1aed23b57d975acec002ba79190a25050565b609f54604051634448e1eb60e01b81526001600160a01b0390911690634448e1eb90612a6490339060040161594b565b602060405180830381865afa158015612a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aa59190615980565b612ac15760405162461bcd60e51b8152600401610c02906159a2565b6001600160a01b038116600090815260b2602052604090205460ff1615612b205760405162461bcd60e51b8152602060048201526013602482015272676175676520616c726561647920616c69766560681b6044820152606401610c02565b6001600160a01b038116600090815260b0602052604090205460ff16612b7f5760405162461bcd60e51b81526020600482015260146024820152736761756765206b696c6c656420746f74616c6c7960601b6044820152606401610c02565b6001600160a01b038116600081815260b260209081526040808320805460ff1916600117905560a15460a390925280832091909155517fed18e9faa3dccfd8aa45f69c4de40546b2ca9cccc4538a2323531656516db1aa9190a250565b6060609c805480602002602001604051908101604052809291908181526020018280548015612c3457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612c16575b5050505050905090565b600080612c496134ad565b600090815260ac602090815260408083206001600160a01b039096168352949052929092205492915050565b60ab6020528160005260406000208181548110612c9157600080fd5b6000918252602090912001546001600160a01b03169150829050565b609f54604051634448e1eb60e01b81526001600160a01b0390911690634448e1eb90612cdd903390600401615a10565b602060405180830381865afa158015612cfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d1e9190615980565b612d3a5760405162461bcd60e51b8152600401610c0290615a46565b609d80546001600160a01b0319166001600160a01b0392909216919091179055565b60a08181548110610d0e57600080fd5b609f54604051634448e1eb60e01b81526001600160a01b0390911690634448e1eb90612d9c903390600401615a10565b602060405180830381865afa158015612db9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ddd9190615980565b612df95760405162461bcd60e51b8152600401610c0290615a46565b6001600160a01b038316600090815260b0602052604090205460ff161515600114612e2357600080fd5b612e2d838361502a565b612e378382615058565b505050565b609f54604051634448e1eb60e01b81526001600160a01b0390911690634448e1eb90612e6c903390600401615a10565b602060405180830381865afa158015612e89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ead9190615980565b612ec95760405162461bcd60e51b8152600401610c0290615a46565b62015180612ed56134ad565b612edf9190615aa8565b600091825260af602052604090912055565b609f54604051634448e1eb60e01b81526001600160a01b0390911690634448e1eb90612f21903390600401615a10565b602060405180830381865afa158015612f3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f629190615980565b612f7e5760405162461bcd60e51b8152600401610c0290615a46565b6001600160a01b038216600090815260b0602052604090205460ff16612fa357600080fd5b610c4b828261502a565b609f54604051634448e1eb60e01b81526001600160a01b0390911690634448e1eb90612fdd90339060040161594b565b602060405180830381865afa158015612ffa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061301e9190615980565b61303a5760405162461bcd60e51b8152600401610c02906159a2565b60005b8151811015610c4b5761305b8282815181106126ed576126ed6159cb565b80613065816159f7565b91505061303d565b60005b8251811015612e375782818151811061308b5761308b6159cb565b60200260200101516001600160a01b031663db0ea984338484815181106130b4576130b46159cb565b60200260200101516040518363ffffffff1660e01b81526004016130d9929190615b32565b600060405180830381600087803b1580156130f357600080fd5b505af1158015613107573d6000803e3d6000fd5b505050508080613116906159f7565b915050613070565b60005b8151811015610c4b5760b06000838381518110613140576131406159cb565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1680156131ac575060b26000838381518110613184576131846159cb565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff165b15613230578181815181106131c3576131c36159cb565b60200260200101516001600160a01b031663d294f0936040518163ffffffff1660e01b815260040160408051808303816000875af1158015613209573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061322d9190615b56565b50505b8061323a816159f7565b915050613121565b60005b8251811015612e3757828181518110613260576132606159cb565b60200260200101516001600160a01b031663db0ea98433848481518110613289576132896159cb565b60200260200101516040518363ffffffff1660e01b81526004016132ae929190615b32565b600060405180830381600087803b1580156132c857600080fd5b505af11580156132dc573d6000803e3d6000fd5b5050505080806132eb906159f7565b915050613245565b609f54604051634448e1eb60e01b81526001600160a01b0390911690634448e1eb90613323903390600401615a10565b602060405180830381865afa158015613340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133649190615980565b6133805760405162461bcd60e51b8152600401610c0290615a46565b6001600160a01b038216600090815260b0602052604090205460ff166133a557600080fd5b610c4b8282615058565b60008060006133bc6139a0565b6133c685856143de565b9194509250905061184e6001606555565b60606099805480602002602001604051908101604052809291908181526020018280548015612c34576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311612c16575050505050905090565b61343f614f0b565b6001600160a01b0381166134a45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c02565b61112281614f65565b609e5460408051631a2732c160e31b815290516000926001600160a01b03169163d13996089160048083019260209291908290030181865afa1580156134f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061351b9190615b00565b905090565b600054610100900460ff16158080156135405750600054600160ff909116105b8061355a5750303b15801561355a575060005460ff166001145b6135bd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610c02565b6000805460ff1916600117905580156135e0576000805461ff0019166101001790555b6135e8615086565b6135f06150b5565b84609760016101000a8154816001600160a01b0302191690836001600160a01b03160217905550846001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613655573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136799190615b7a565b609a80546001600160a01b03199081166001600160a01b039384161790915560988054821687841690811782556099805460018181019092557f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00018054851690921790915590548316600090815260b360209081526040808320805460ff199081168617909155609b805487168b8916908117909155609c80548088019091557faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c018054881682179055845260b4909252822080548216909317909255609d8054841694871694909417909355609e8054339084168117909155609f80549093161790915560a2919091556097805490911690558015612557576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b60005b8151811015610c4b578181815181106137f7576137f76159cb565b6020908102919091010151604051630c00007b60e41b81523360048201526001600160a01b039091169063c00007b090602401600060405180830381600087803b15801561384457600080fd5b505af1158015613858573d6000803e3d6000fd5b505050508080613867906159f7565b9150506137dc565b609f54604051634448e1eb60e01b81526001600160a01b0390911690634448e1eb9061389f903390600401615a10565b602060405180830381865afa1580156138bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138e09190615980565b6138fc5760405162461bcd60e51b8152600401610c0290615a46565b6001600160a01b03811661390f57600080fd5b609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038116600090815260b1602052604090205460ff1661395657600080fd5b6001600160a01b038116600081815260b16020526040808220805460ff191690555133917fd36871fdf6981136f3ac0564927005901eda06f7a9dff1e8b2a1d7846b8ebb5091a350565b6002606554036139f25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c02565b6002606555565b60a254600082815260af6020526040902054613a159190615a90565b42116111225760405162461bcd60e51b815260206004820152600f60248201526e4552523a20564f54455f44454c415960881b6044820152606401610c02565b600081815260ab602052604081208054909180613a706134ad565b600086815260af60205260408120549192505b84811015613cb1576000868281548110613a9f57613a9f6159cb565b60009182526020808320909101548a835260aa825260408084206001600160a01b03909216808552919092529120549091508015613c9c57600089815260aa602090815260408083206001600160a01b038616845290915281208054839290613b09908490615aa8565b909155505084841115613c6257600085815260ac602090815260408083206001600160a01b038616845290915281208054839290613b48908490615aa8565b90915550506001600160a01b03828116600090815260a560209081526040808320548416835260a89091529081902054905163278afc8b60e21b815260048101849052602481018c9052911690639e2bf22c90604401600060405180830381600087803b158015613bb857600080fd5b505af1158015613bcc573d6000803e3d6000fd5b505050506001600160a01b03828116600090815260a560209081526040808320548416835260a99091529081902054905163278afc8b60e21b815260048101849052602481018c9052911690639e2bf22c90604401600060405180830381600087803b158015613c3b57600080fd5b505af1158015613c4f573d6000803e3d6000fd5b505050508086613c5f9190615a90565b95505b604080518a8152602081018390527fa9f3ca5f8a9e1580edb2741e0ba560084ec72e0067ba3423f9e9327a176882db910160405180910390a15b50508080613ca9906159f7565b915050613a83565b5081811015613cbf57600092505b600082815260ad602052604081208054859290613cdd908490615aa8565b9091555050600086815260ae6020908152604080832083905560ab9091528120613d069161526c565b505050505050565b6001606555565b613d1e83613a55565b81516097546040516339f890b560e21b81526004810186905260009161010090046001600160a01b03169063e7e242d490602401602060405180830381865afa158015613d6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d939190615b00565b9050600080600080613da36134ad565b905060005b86811015613de957878181518110613dc257613dc26159cb565b602002602001015185613dd59190615a90565b945080613de1816159f7565b915050613da8565b5060005b86811015614101576000898281518110613e0957613e096159cb565b6020908102919091018101516001600160a01b03808216600090815260a5845260408082205490921680825260b0909452205490925060ff16156140ec57600087898c8681518110613e5d57613e5d6159cb565b6020026020010151613e6f9190615abf565b613e799190615ade565b60008e815260aa602090815260408083206001600160a01b038816845290915290205490915015613ea957600080fd5b80600003613eb657600080fd5b60008d815260ab6020908152604080832080546001810182559084528284200180546001600160a01b0319166001600160a01b03881690811790915588845260ac835281842090845290915281208054839290613f14908490615a90565b909155505060008d815260aa602090815260408083206001600160a01b038716845290915281208054839290613f4b908490615a90565b9250508190555060a86000836001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b031663f3207723828f6040518363ffffffff1660e01b8152600401613fc1929190918252602082015260400190565b600060405180830381600087803b158015613fdb57600080fd5b505af1158015613fef573d6000803e3d6000fd5b5050505060a96000836001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b031663f3207723828f6040518363ffffffff1660e01b8152600401614062929190918252602082015260400190565b600060405180830381600087803b15801561407c57600080fd5b505af1158015614090573d6000803e3d6000fd5b5050505080866140a09190615a90565b95506140ac8188615a90565b604080518f81526020810184905291985033917fea66f58e474bc09f580000e81f31b334d171db387d0c6098ba47bd897741679b910160405180910390a2505b505080806140f9906159f7565b915050613ded565b50811561416b5760975460405163fd4a77f160e01b8152600481018b90526101009091046001600160a01b03169063fd4a77f190602401600060405180830381600087803b15801561415257600080fd5b505af1158015614166573d6000803e3d6000fd5b505050505b600081815260ad602052604081208054859290614189908490615a90565b909155505050600097885260ae602052604090972096909655505050505050565b6000846001600160a01b03163b116141c157600080fd5b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291516000928392908816916142259190615bc3565b6000604051808303816000865af19150503d8060008114614262576040519150601f19603f3d011682016040523d82523d6000602084013e614267565b606091505b50915091508180156142915750805115806142915750808060200190518101906142919190615980565b613d0657600080fd5b6001600160a01b038116600090815260a66020526040812054906142bc6134ad565b905080821015612e37576142cf836150e4565b6001600160a01b038316600090815260a46020526040902054801580159061430f57506001600160a01b038416600090815260b2602052604090205460ff165b15612077576001600160a01b03848116600081815260a46020908152604080832083905560a690915290819020859055609a54905163b66503cf60e01b815292166004830152602482018390529063b66503cf90604401600060405180830381600087803b15801561438057600080fd5b505af1158015614394573d6000803e3d6000fd5b50506040518381526001600160a01b03871692503391507f4fa9693cae526341d334e2862ca2413b2e503f1266255f9e0869fb36e6d89b179060200160405180910390a350505050565b600080600060998054905084106144235760405162461bcd60e51b815260206004820152600960248201526867617567657479706560b81b6044820152606401610c02565b6001600160a01b03858116600090815260a5602052604090205416156144755760405162461bcd60e51b81526020600482015260076024820152662165786973747360c81b6044820152606401610c02565b6000806099868154811061448b5761448b6159cb565b6000918252602082200154609c80546001600160a01b03909216935090889081106144b8576144b86159cb565b6000918252602090912001546001600160a01b03908116915082166144dc57600080fd5b6001600160a01b0381166144ef57600080fd5b600080896001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015614530573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145549190615b7a565b9150896001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015614594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145b89190615b7a565b90508860000361462f5760405163e5e31b1360e01b81526001600160a01b038b8116600483015285169063e5e31b1390602401602060405180830381865afa158015614608573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061462c9190615980565b94505b8860010361476c5760405163d9a641e160e01b81526001600160a01b03838116600483015282811660248301526000919086169063d9a641e190604401602060405180830381865afa158015614689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146ad9190615b7a565b905060008b6001600160a01b03166316f0115b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156146ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147139190615b7a565b9050816001600160a01b0316816001600160a01b0316146147655760405162461bcd60e51b815260206004820152600c60248201526b77726f6e6720746f6b656e7360a01b6044820152606401610c02565b6001965050505b609f54604051634448e1eb60e01b81526001600160a01b0390911690634448e1eb9061479c90339060040161594b565b602060405180830381865afa1580156147b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147dd9190615980565b6148ed57846148175760405162461bcd60e51b81526020600482015260066024820152650857dc1bdbdb60d21b6044820152606401610c02565b6001600160a01b038216600090815260b1602052604090205460ff16801561485757506001600160a01b038116600090815260b1602052604090205460ff165b6148925760405162461bcd60e51b815260206004820152600c60248201526b085dda1a5d195b1a5cdd195960a21b6044820152606401610c02565b6001600160a01b038216158015906148b257506001600160a01b03811615155b6148ed5760405162461bcd60e51b815260206004820152600c60248201526b21706169722e746f6b656e7360a01b6044820152606401610c02565b609f546040805163083371c160e31b815290516000926001600160a01b03169163419b8e089160048083019260209291908290030181865afa158015614937573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061495b9190615b7a565b905060008b6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801561499d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526149c59190810190615bdf565b6040516020016149d59190615c72565b60408051601f1981840301815290829052609d5461e66b60e01b83529092506001600160a01b03169061e66b90614a16908590889088908790600401615ca9565b6020604051808303816000875af1158015614a35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a599190615b7a565b98508b6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015614a99573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614ac19190810190615bdf565b604051602001614ad19190615cff565b60408051601f1981840301815290829052609d5461e66b60e01b83529092506001600160a01b03169061e66b90614b12908590889088908790600401615ca9565b6020604051808303816000875af1158015614b31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b559190615b7a565b609a546097546040516307379e7760e41b81526001600160a01b039283166004820152610100909104821660248201528e821660448201523060648201528b8216608482015281831660a482015289151560c4820152919950861690637379e7709060e4016020604051808303816000875af1158015614bd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614bfd9190615b7a565b609a5460405163095ea7b360e01b81526001600160a01b0380841660048301526000196024830152929c5091169063095ea7b3906044016020604051808303816000875af1158015614c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c779190615980565b508860a860008c6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508760a960008c6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508960a560008e6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b60a760008c6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600160b060008c6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600160b260008c6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555060a08c9080600181540180825580915050600190039060005260206000200160009091909190916101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a15460a360008c6001600160a01b03166001600160a01b03168152602001908152602001600020819055508b6001600160a01b0316886001600160a01b03168b6001600160a01b03167fa4d97e9e7c65249b4cd01acb82add613adea98af32daf092366982f0a0d4e453338d604051614ef59291906001600160a01b0392831681529116602082015260400190565b60405180910390a4505050505050509250925092565b6033546001600160a01b0316331461167b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c02565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038116600090815260b1602052604090205460ff1615614fdd57600080fd5b6001600160a01b038116600081815260b16020526040808220805460ff191660011790555133917f6661a7108aecd07864384529117d96c319c1163e3010c01390f6b704726e07de91a350565b6001600160a01b03918216600090815260a86020526040902080546001600160a01b03191691909216179055565b6001600160a01b03918216600090815260a96020526040902080546001600160a01b03191691909216179055565b600054610100900460ff166150ad5760405162461bcd60e51b8152600401610c0290615d35565b61167b615215565b600054610100900460ff166150dc5760405162461bcd60e51b8152600401610c0290615d35565b61167b615245565b6001600160a01b03808216600090815260a760205260408120549091169062093a8061510e6134ad565b6151189190615aa8565b600081815260ac602090815260408083206001600160a01b038716845290915290205490915080156151f3576001600160a01b038416600090815260a360205260408120805460a15491829055916151708383615aa8565b905080156151eb576000670de0b6b3a764000061518d8387615abf565b6151979190615ade565b6001600160a01b038916600090815260b2602052604090205490915060ff16156151e9576001600160a01b038816600090815260a46020526040812080548392906151e3908490615a90565b90915550505b505b505050612077565b60a1546001600160a01b038516600090815260a3602052604090205550505050565b600054610100900460ff1661523c5760405162461bcd60e51b8152600401610c0290615d35565b61167b33614f65565b600054610100900460ff16613d0e5760405162461bcd60e51b8152600401610c0290615d35565b508054600082559060005260206000209081019061112291905b8082111561529a5760008155600101615286565b5090565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156152dc576152dc61529e565b604052919050565b60006001600160401b038211156152fd576152fd61529e565b5060051b60200190565b6001600160a01b038116811461112257600080fd5b600082601f83011261532d57600080fd5b8135602061534261533d836152e4565b6152b4565b82815260059290921b8401810191818101908684111561536157600080fd5b8286015b8481101561538557803561537881615307565b8352918301918301615365565b509695505050505050565b6000602082840312156153a257600080fd5b81356001600160401b038111156153b857600080fd5b6153c48482850161531c565b949350505050565b6000602082840312156153de57600080fd5b81356153e981615307565b9392505050565b60006020828403121561540257600080fd5b5035919050565b60008060006060848603121561541e57600080fd5b833561542981615307565b9250602084013561543981615307565b929592945050506040919091013590565b6000806040838503121561545d57600080fd5b82359150602083013561546f81615307565b809150509250929050565b6000806040838503121561548d57600080fd5b82356001600160401b03808211156154a457600080fd5b6154b08683870161531c565b93506020915081850135818111156154c757600080fd5b85019050601f810186136154da57600080fd5b80356154e861533d826152e4565b81815260059190911b8201830190838101908883111561550757600080fd5b928401925b828410156155255783358252928401929084019061550c565b80955050505050509250929050565b600081518084526020808501945080840160005b8381101561556d5781516001600160a01b031687529582019590820190600101615548565b509495945050505050565b60608152600061558b6060830186615534565b828103602084015261559d8186615534565b905082810360408401526155b18185615534565b9695505050505050565b600080604083850312156155ce57600080fd5b82356155d981615307565b946020939093013593505050565b600080604083850312156155fa57600080fd5b823561560581615307565b9150602083013561546f81615307565b600082601f83011261562657600080fd5b8135602061563661533d836152e4565b82815260059290921b8401810191818101908684111561565557600080fd5b8286015b848110156153855780356001600160401b038111156156785760008081fd5b6156868986838b010161531c565b845250918301918301615659565b6000806000606084860312156156a957600080fd5b83356001600160401b03808211156156c057600080fd5b6156cc8783880161531c565b945060208601359150808211156156e257600080fd5b506156ef86828701615615565b925050604084013590509250925092565b6000806040838503121561571357600080fd5b50508035926020909101359150565b60008083601f84011261573457600080fd5b5081356001600160401b0381111561574b57600080fd5b6020830191508360208260051b850101111561576657600080fd5b9250929050565b60008060008060006060868803121561578557600080fd5b8535945060208601356001600160401b03808211156157a357600080fd5b6157af89838a01615722565b909650945060408801359150808211156157c857600080fd5b506157d588828901615722565b969995985093965092949392505050565b6000806000606084860312156157fb57600080fd5b83356001600160401b0381111561581157600080fd5b61581d8682870161531c565b935050602084013561582e81615307565b9150604084013561583e81615307565b809150509250925092565b6020815260006153e96020830184615534565b60008060006060848603121561587157600080fd5b833561587c81615307565b9250602084013561582e81615307565b6000806040838503121561589f57600080fd5b82356001600160401b03808211156158b657600080fd5b6158c28683870161531c565b935060208501359150808211156158d857600080fd5b506158e585828601615615565b9150509250929050565b6000806000806080858703121561590557600080fd5b843561591081615307565b9350602085013561592081615307565b9250604085013561593081615307565b9150606085013561594081615307565b939692955090935050565b6040808252600a9082015269474f5645524e414e434560b01b60608201526001600160a01b0391909116602082015260800190565b60006020828403121561599257600080fd5b815180151581146153e957600080fd5b6020808252600f908201526e4552523a20474f5645524e414e434560881b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201615a0957615a096159e1565b5060010190565b6040808252600b908201526a2b27aa22a92fa0a226a4a760a91b60608201526001600160a01b0391909116602082015260800190565b60208082526010908201526f22a9291d102b27aa22a92fa0a226a4a760811b604082015260600190565b60208082526006908201526506164647220360d41b604082015260600190565b60008219821115615aa357615aa36159e1565b500190565b600082821015615aba57615aba6159e1565b500390565b6000816000190483118215151615615ad957615ad96159e1565b500290565b600082615afb57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215615b1257600080fd5b5051919050565b8281526040602082015260006153c46040830184615534565b6001600160a01b03831681526040602082018190526000906153c490830184615534565b60008060408385031215615b6957600080fd5b505080516020909101519092909150565b600060208284031215615b8c57600080fd5b81516153e981615307565b60005b83811015615bb2578181015183820152602001615b9a565b838111156120775750506000910152565b60008251615bd5818460208701615b97565b9190910192915050565b600060208284031215615bf157600080fd5b81516001600160401b0380821115615c0857600080fd5b818401915084601f830112615c1c57600080fd5b815181811115615c2e57615c2e61529e565b615c41601f8201601f19166020016152b4565b9150808252856020828501011115615c5857600080fd5b615c69816020840160208601615b97565b50949350505050565b6e02a3432b730902628102332b2b99d1608d1b815260008251615c9c81600f850160208701615b97565b91909101600f0192915050565b600060018060a01b0380871683528086166020840152808516604084015250608060608301528251806080840152615ce88160a0850160208701615b97565b601f01601f19169190910160a00195945050505050565b6d02a3432b73090213934b132b99d160951b815260008251615d2881600e850160208701615b97565b91909101600e0192915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea2646970667358221220b7d2ed6573f92d2dbae69f92ca7f334203cffbfca57d4add833875197d571ea464736f6c634300080d0033