0 txs
1 call
constructor
No constructor.
functions
getPair
viewfunction getPair(address rock) view returns (address pair)
getRock
viewfunction getRock(address pair) view returns (address rock)
owner
viewfunction owner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
totalPairs
viewfunction totalPairs() view returns (uint256)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
wETH
viewfunction wETH() view returns (address)
create
nonpayablefunction create(string name, string symbol, address creator, address platformWallet, uint256 platformFee, uint256 evolveLiquidity) returns (address rock, address pair, uint256 total)
initialize
nonpayablefunction initialize(address positionManager_, address liquidityLocker_, address factoryV3_, address swapRouter_, address weth_, address router_)
renounceOwnership
nonpayablefunction renounceOwnership()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
InitializeAuthority
event InitializeAuthority(address authority)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PairCreated
event PairCreated(address indexed rock, address pair, uint256 totalPairs)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
CallerNotAuthority
error CallerNotAuthority()
CallerNotPendingAuthority
error CallerNotPendingAuthority()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedCall
error FailedCall()
InvalidAddress
error InvalidAddress()
InvalidAuthorityAssignment
error InvalidAuthorityAssignment()
InvalidInitialization
error InvalidInitialization()
InvalidString
error InvalidString()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a0604052306080523480156012575f5ffd5b50608051615fd96100395f395f8181610a2e01528181610a570152610c0c0152615fd95ff3fe6080604052600436106100c3575f3560e01c806374dcc7a411610071578063cc2a9a5b1161004c578063cc2a9a5b14610282578063f2428621146102a1578063f2fde38b146102c0575f5ffd5b806374dcc7a4146101ac5780638da5cb5b146101f1578063ad3cb1cc1461022d575f5ffd5b806352d1902d116100a157806352d1902d146101615780635d8c32a914610183578063715018a614610198575f5ffd5b806310240c1c146100c75780631a788a02146101185780634f1ef2861461014c575b5f5ffd5b3480156100d2575f5ffd5b506100fb6100e136600461123e565b603a6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610123575f5ffd5b506100fb61013236600461123e565b60396020525f90815260409020546001600160a01b031681565b61015f61015a366004611284565b6102df565b005b34801561016c575f5ffd5b506101756102fe565b60405190815260200161010f565b34801561018e575f5ffd5b5061017560385481565b3480156101a3575f5ffd5b5061015f61032c565b3480156101b7575f5ffd5b506101cb6101c636600461138e565b61033f565b604080516001600160a01b0394851681529390921660208401529082015260600161010f565b3480156101fc575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166100fb565b348015610238575f5ffd5b506102756040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161010f9190611430565b34801561028d575f5ffd5b5061015f61029c366004611465565b610733565b3480156102ac575f5ffd5b506037546100fb906001600160a01b031681565b3480156102cb575f5ffd5b5061015f6102da36600461123e565b6109c8565b6102e7610a23565b6102f082610af3565b6102fa8282610afb565b5050565b5f610307610c01565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610334610c63565b61033d5f610cd7565b565b5f5f5f61034a610d5f565b61039a60405180602001604052805f8152508c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509293925050610d999050565b806103f057506103f060405180602001604052805f8152508a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509293925050610d999050565b1561041e5761041e7f3b00c96400000000000000000000000000000000000000000000000000000000610dbf565b8a8a8a8a60335f9054906101000a90046001600160a01b03166b033b2e3c9fd0803ce800000060405161045090611209565b61045f969594939291906114fe565b604051809103905ff080158015610478573d5f5f3e3d5ffd5b5092505f6040518060200161048c90611216565b818103601f199081018352601f9091011660408190526037547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606091821b811660208401529087901b1660348201529091505f90604801604051602081830303815290604052805190602001209050808251602084015ff5935061052a9150506001600160a01b038416836b033b2e3c9fd0803ce8000000610dc7565b5f546033546034546035546036546037546040517fc2f6c6640000000000000000000000000000000000000000000000000000000081526001600160a01b038e811660048301529687166024820152948616604486015292851660648501529084166084840152831660a4830152821660c482015284821660e4820152878216610104820152610124810187905261014481018690529083169063c2f6c66490610164015f604051808303815f87803b1580156105e5575f5ffd5b505af11580156105f7573d5f5f3e3d5ffd5b50506040517f99fb809e0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152861692506399fb809e91506024015f604051808303815f87803b158015610654575f5ffd5b505af1158015610666573d5f5f3e3d5ffd5b5050506001600160a01b038085165f81815260396020908152604080832080549589167fffffffffffffffffffffffff000000000000000000000000000000000000000096871681179091558352603a90915281208054909316909117909155603880549092506106d690611543565b9182905550604080516001600160a01b03858116825260208201849052929350918516917fc1db9ba7c4b7ce660fe8d17bbcf07167549381df2abd694a970bd1402d86d313910160405180910390a2985098509895505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f8115801561077d5750825b90505f8267ffffffffffffffff1660011480156107995750303b155b9050811580156107a7575080155b156107de576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166001178555831561083f5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b61084833610e47565b610850610e58565b61085986610e60565b6001600160a01b038b16158061087657506001600160a01b038a16155b8061088857506001600160a01b038916155b8061089a57506001600160a01b038816155b806108ac57506001600160a01b038716155b806108be57506001600160a01b038616155b156108ec576108ec7fe6c4247b00000000000000000000000000000000000000000000000000000000610dbf565b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b038e8116919091179092556034805482168d84161790556035805482168c84161790556036805482168b84161790556037805490911691891691909117905583156109bb5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b6109d0610c63565b6001600160a01b038116610a17576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b610a2081610cd7565b50565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610abc57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610ab07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561033d576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a20610c63565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b55575060408051601f3d908101601f19168201909252610b529181019061159f565b60015b610b96576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610a0e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610bf2576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610a0e565b610bfc8383610e71565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461033d576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33610c957f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161461033d576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610a0e565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f546001600160a01b0316331461033d5761033d7f35f3f29800000000000000000000000000000000000000000000000000000000610dbf565b5f81518351148015610db8575081805190602001208380519060200120145b9392505050565b805f5260045ffd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610bfc908490610ec6565b610e4f610f51565b610a2081610fb8565b61033d610f51565b610e68610f51565b610a2081610fc0565b610e7a82611001565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115610ebe57610bfc82826110a8565b6102fa61111a565b5f5f60205f8451602086015f885af180610ee5576040513d5f823e3d81fd5b50505f513d91508115610efc578060011415610f09565b6001600160a01b0384163b155b15610f4b576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610a0e565b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661033d576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109d0610f51565b610fc8610f51565b5f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b806001600160a01b03163b5f0361104f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401610a0e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516110c491906115b6565b5f60405180830381855af49150503d805f81146110fc576040519150601f19603f3d011682016040523d82523d5f602084013e611101565b606091505b5091509150611111858383611152565b95945050505050565b341561033d576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261116757611162826111c7565b610db8565b815115801561117e57506001600160a01b0384163b155b156111c0576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610a0e565b5092915050565b8051156111d75780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b4b806115cd83390190565b612e8c8061311883390190565b80356001600160a01b0381168114611239575f5ffd5b919050565b5f6020828403121561124e575f5ffd5b610db882611223565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f5f60408385031215611295575f5ffd5b61129e83611223565b9150602083013567ffffffffffffffff8111156112b9575f5ffd5b8301601f810185136112c9575f5ffd5b803567ffffffffffffffff8111156112e3576112e3611257565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff8211171561131357611313611257565b60405281815282820160200187101561132a575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f83601f840112611359575f5ffd5b50813567ffffffffffffffff811115611370575f5ffd5b602083019150836020828501011115611387575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b0312156113a5575f5ffd5b883567ffffffffffffffff8111156113bb575f5ffd5b6113c78b828c01611349565b909950975050602089013567ffffffffffffffff8111156113e6575f5ffd5b6113f28b828c01611349565b9097509550611405905060408a01611223565b935061141360608a01611223565b979a969950949793969295929450505060808201359160a0013590565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f5f5f5f60c0878903121561147a575f5ffd5b61148387611223565b955061149160208801611223565b945061149f60408801611223565b93506114ad60608801611223565b92506114bb60808801611223565b91506114c960a08801611223565b90509295509295509295565b81835281816020850137505f602082840101525f6020601f19601f840116840101905092915050565b608081525f61151160808301888a6114d5565b82810360208401526115248187896114d5565b6001600160a01b03959095166040840152505060600152949350505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611598577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5060010190565b5f602082840312156115af575f5ffd5b5051919050565b5f82518060208501845e5f92019182525091905056fe610180604052348015610010575f5ffd5b50604051611b4b380380611b4b83398101604081905261002f9161041b565b6040805180820190915260018152603160f81b602082015284908190818660036100598382610529565b5060046100668282610529565b5061007691508390506005610151565b61012052610085816006610151565b61014052815160208084019190912060e052815190820120610100524660a05261011160e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c05250600880546001600160a01b031916339081179091556001600160a01b038316610160526101489082610183565b5050505061065a565b5f60208351101561016c57610165836101c0565b905061017d565b816101778482610529565b5060ff90505b92915050565b6001600160a01b0382166101b15760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b6101bc5f83836101fd565b5050565b5f5f829050601f815111156101ea578260405163305a27a960e01b81526004016101a891906105e3565b80516101f582610618565b179392505050565b600954600160a01b900460ff1615801561022b5750610160516001600160a01b0316336001600160a01b0316145b1561024057610240631eb49d6d60e11b610250565b61024b838383610258565b505050565b805f5260045ffd5b6001600160a01b038316610282578060025f828254610277919061063b565b909155506102f29050565b6001600160a01b0383165f90815260208190526040902054818110156102d45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016101a8565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661030e5760028054829003905561032c565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161037191815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126103a1575f5ffd5b81516001600160401b038111156103ba576103ba61037e565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103e8576103e861037e565b6040528181528382016020018510156103ff575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f5f6080858703121561042e575f5ffd5b84516001600160401b03811115610443575f5ffd5b61044f87828801610392565b602087015190955090506001600160401b0381111561046c575f5ffd5b61047887828801610392565b604087015190945090506001600160a01b0381168114610496575f5ffd5b6060959095015193969295505050565b600181811c908216806104ba57607f821691505b6020821081036104d857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561024b57805f5260205f20601f840160051c810160208510156105035750805b601f840160051c820191505b81811015610522575f815560010161050f565b5050505050565b81516001600160401b038111156105425761054261037e565b6105568161055084546104a6565b846104de565b6020601f821160018114610588575f83156105715750848201515b5f19600385901b1c1916600184901b178455610522565b5f84815260208120601f198516915b828110156105b75787850151825560209485019460019092019101610597565b50848210156105d457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156104d8575f1960209190910360031b1b16919050565b8082018082111561017d57634e487b7160e01b5f52601160045260245ffd5b60805160a05160c05160e051610100516101205161014051610160516114966106b55f395f610c9f01525f6109af01525f61098201525f6108de01525f6108b601525f61081101525f61083b01525f61086501526114965ff3fe608060405234801561000f575f5ffd5b506004361061012f575f3560e01c806379cc6790116100ad57806399fb809e1161007d578063b1b3d3f611610063578063b1b3d3f614610281578063d505accf14610289578063dd62ed3e1461029c575f5ffd5b806399fb809e1461025b578063a9059cbb1461026e575f5ffd5b806379cc6790146102125780637ecebe001461022557806384b0196e1461023857806395d89b4114610253575f5ffd5b806323b872dd116101025780633644e515116100e85780633644e515146101cd57806342966c68146101d557806370a08231146101ea575f5ffd5b806323b872dd146101ab578063313ce567146101be575f5ffd5b806306fdde0314610133578063095ea7b31461015157806318160ddd1461017457806319e1fca414610186575b5f5ffd5b61013b6102d4565b6040516101489190611194565b60405180910390f35b61016461015f3660046111c8565b610364565b6040519015158152602001610148565b6002545b604051908152602001610148565b6009546101649074010000000000000000000000000000000000000000900460ff1681565b6101646101b93660046111f0565b61037d565b60405160128152602001610148565b6101786103a0565b6101e86101e336600461122a565b6103ae565b005b6101786101f8366004611241565b6001600160a01b03165f9081526020819052604090205490565b6101e86102203660046111c8565b6103bb565b610178610233366004611241565b6103d4565b6102406103f1565b604051610148979695949392919061125a565b61013b61044f565b6101e8610269366004611241565b61045e565b61016461027c3660046111c8565b6104a2565b6101e86104af565b6101e861029736600461130c565b610544565b6101786102aa366004611379565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6060600380546102e3906113aa565b80601f016020809104026020016040519081016040528092919081815260200182805461030f906113aa565b801561035a5780601f106103315761010080835404028352916020019161035a565b820191905f5260205f20905b81548152906001019060200180831161033d57829003601f168201915b5050505050905090565b5f336103718185856106b1565b60019150505b92915050565b5f3361038a8582856106c3565b610395858585610776565b506001949350505050565b5f6103a9610805565b905090565b6103b8338261092e565b50565b6103c68233836106c3565b6103d0828261092e565b5050565b6001600160a01b0381165f90815260076020526040812054610377565b5f6060805f5f5f606061040261097b565b61040a6109a8565b604080515f808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b6060600480546102e3906113aa565b6008546001600160a01b03163314610499576104997f1c90b191000000000000000000000000000000000000000000000000000000006109d5565b6103b8816109dd565b5f33610371818585610776565b6104b7610aba565b60095474010000000000000000000000000000000000000000900460ff1615610503576105037f6a4648d7000000000000000000000000000000000000000000000000000000006109d5565b600980547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b83421115610586576040517f62791302000000000000000000000000000000000000000000000000000000008152600481018590526024015b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886105d18c6001600160a01b03165f90815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f61062b82610af7565b90505f61063a82878787610b3e565b9050896001600160a01b0316816001600160a01b03161461069a576040517f4b800e460000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301528b16602482015260440161057d565b6106a58a8a8a6106b1565b50505050505050505050565b6106be8383836001610b6a565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107705781811015610762576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602481018290526044810183905260640161057d565b61077084848484035f610b6a565b50505050565b6001600160a01b0383166107b8576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f600482015260240161057d565b6001600160a01b0382166107fa576040517fec442f050000000000000000000000000000000000000000000000000000000081525f600482015260240161057d565b6106be838383610c6e565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561085d57507f000000000000000000000000000000000000000000000000000000000000000046145b1561088757507f000000000000000000000000000000000000000000000000000000000000000090565b6103a9604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b6001600160a01b038216610970576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f600482015260240161057d565b6103d0825f83610c6e565b60606103a97f00000000000000000000000000000000000000000000000000000000000000006005610cfa565b60606103a97f00000000000000000000000000000000000000000000000000000000000000006006610cfa565b805f5260045ffd5b6001600160a01b038116610a1457610a147f12e62911000000000000000000000000000000000000000000000000000000006109d5565b6008546001600160a01b031615610a4e57600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555b600980547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527fac1f812621b6c406f47d89f077576cabc56e1309dc67429449723f66ad0dd2269060200160405180910390a150565b6009546001600160a01b03163314610af557610af57f35f3f298000000000000000000000000000000000000000000000000000000006109d5565b565b5f610377610b03610805565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b5f5f5f5f610b4e88888888610da3565b925092509250610b5e8282610e89565b50909695505050505050565b6001600160a01b038416610bac576040517fe602df050000000000000000000000000000000000000000000000000000000081525f600482015260240161057d565b6001600160a01b038316610bee576040517f94280d620000000000000000000000000000000000000000000000000000000081525f600482015260240161057d565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561077057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c6091815260200190565b60405180910390a350505050565b60095474010000000000000000000000000000000000000000900460ff16158015610cc15750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b15610cef57610cef7f3d693ada000000000000000000000000000000000000000000000000000000006109d5565b6106be838383610f8c565b606060ff8314610d1457610d0d836110cb565b9050610377565b818054610d20906113aa565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4c906113aa565b8015610d975780601f10610d6e57610100808354040283529160200191610d97565b820191905f5260205f20905b815481529060010190602001808311610d7a57829003601f168201915b50505050509050610377565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610ddc57505f91506003905082610e7f565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610e2d573d5f5f3e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116610e7657505f925060019150829050610e7f565b92505f91508190505b9450945094915050565b5f826003811115610e9c57610e9c6113fb565b03610ea5575050565b6001826003811115610eb957610eb96113fb565b03610ef0576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002826003811115610f0457610f046113fb565b03610f3e576040517ffce698f70000000000000000000000000000000000000000000000000000000081526004810182905260240161057d565b6003826003811115610f5257610f526113fb565b036103d0576040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004810182905260240161057d565b6001600160a01b038316610fb6578060025f828254610fab9190611428565b9091555061103f9050565b6001600160a01b0383165f9081526020819052604090205481811015611021576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602481018290526044810183905260640161057d565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661105b57600280548290039055611079565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516110be91815260200190565b60405180910390a3505050565b60605f6110d783611108565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f811115610377576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6111a66020830184611148565b9392505050565b80356001600160a01b03811681146111c3575f5ffd5b919050565b5f5f604083850312156111d9575f5ffd5b6111e2836111ad565b946020939093013593505050565b5f5f5f60608486031215611202575f5ffd5b61120b846111ad565b9250611219602085016111ad565b929592945050506040919091013590565b5f6020828403121561123a575f5ffd5b5035919050565b5f60208284031215611251575f5ffd5b6111a6826111ad565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61129460e0830189611148565b82810360408401526112a68189611148565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156112fb5783518352602093840193909201916001016112dd565b50909b9a5050505050505050505050565b5f5f5f5f5f5f5f60e0888a031215611322575f5ffd5b61132b886111ad565b9650611339602089016111ad565b95506040880135945060608801359350608088013560ff8116811461135c575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f6040838503121561138a575f5ffd5b611393836111ad565b91506113a1602084016111ad565b90509250929050565b600181811c908216806113be57607f821691505b6020821081036113f5577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b80820180821115610377577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffdfea26469706673582212201f1f4834f52f96a0e7a6dfe2915c093392f701e072b37c0e7c36e67c2c22bac064736f6c634300081c003360a06040526729a2241af62c00006007556310e352d56007546305f5e100610027919061009a565b61003191906100c3565b6008556103e86007546046610046919061009a565b61005091906100c3565b6009556103e8600754601e610065919061009a565b61006f91906100c3565b600a5534801561007d575f5ffd5b505f80546001600160a01b031916339081179091556080526100e2565b80820281158282048414176100bd57634e487b7160e01b5f52601160045260245ffd5b92915050565b5f826100dd57634e487b7160e01b5f52601260045260245ffd5b500490565b608051612d8b6101015f395f81816102c00152610b820152612d8b5ff3fe608060405260043610610140575f3560e01c806399fb809e116100bb578063be9a655511610071578063d8fd1ed911610057578063d8fd1ed9146103d7578063fa2af9da146103ec578063fff6cae91461040b575f5ffd5b8063be9a6555146103a4578063c2f6c664146103b8575f5ffd5b8063b01388ea116100a1578063b01388ea1461035b578063bc22593e14610370578063bc25cf7714610385575f5ffd5b806399fb809e14610316578063ad5c464814610337575f5ffd5b8063135f0f85116101105780632dd31000116100f65780632dd31000146102af5780636da6bad0146102e25780638120192c14610301575f5ffd5b8063135f0f851461024557806326232a2e1461029a575f5ffd5b806302a4a8901461014b57806302d05d3f146101735780630902f1ac146101aa5780630d8d7f141461021c575f5ffd5b3661014757005b5f5ffd5b348015610156575f5ffd5b5061016060115481565b6040519081526020015b60405180910390f35b34801561017e575f5ffd5b50600d54610192906001600160a01b031681565b6040516001600160a01b03909116815260200161016a565b3480156101b5575f5ffd5b50600654604080516dffffffffffffffffffffffffffff80841682526e01000000000000000000000000000084041660208201527c010000000000000000000000000000000000000000000000000000000090920463ffffffff169082015260600161016a565b348015610227575f5ffd5b50600b546102359060ff1681565b604051901515815260200161016a565b348015610250575f5ffd5b5061026461025f366004612668565b61041f565b6040805194855260208501939093526dffffffffffffffffffffffffffff9182169284019290925216606082015260800161016a565b3480156102a5575f5ffd5b50610160600f5481565b3480156102ba575f5ffd5b506101927f000000000000000000000000000000000000000000000000000000000000000081565b3480156102ed575f5ffd5b50600c54610192906001600160a01b031681565b34801561030c575f5ffd5b5061016060095481565b348015610321575f5ffd5b506103356103303660046126c3565b6108f8565b005b348015610342575f5ffd5b50600b546101929061010090046001600160a01b031681565b348015610366575f5ffd5b5061016060105481565b34801561037b575f5ffd5b5061016060075481565b348015610390575f5ffd5b5061033561039f3660046126c3565b61093e565b3480156103af575f5ffd5b50610335610a28565b3480156103c3575f5ffd5b506103356103d23660046126de565b610b80565b3480156103e2575f5ffd5b50610160600a5481565b3480156103f7575f5ffd5b50600e54610192906001600160a01b031681565b348015610416575f5ffd5b50610335610dfd565b5f5f5f5f61042b610e8d565b610433610f13565b600b5460ff1615610467576104677fb5dcde8c00000000000000000000000000000000000000000000000000000000610f4a565b881580610472575087155b156104a0576104a07f5945ea5600000000000000000000000000000000000000000000000000000000610f4a565b600b546001600160a01b038681166101009092041614806104ce5750600c546001600160a01b038681169116145b156104fc576104fc7f1e4ec46b00000000000000000000000000000000000000000000000000000000610f4a565b50506006546dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004165f8080891561058457600c54600f546dffffffffffffffffffffffffffff861694506001600160a01b0390911692506103e890610564908e6127d5565b61056e9190612819565b905061057a818d61282c565b96508a95506105dc565b846dffffffffffffffffffffffffffff169250600b60019054906101000a90046001600160a01b031691506103e8600f548c6105c091906127d5565b6105ca9190612819565b8c975090506105d9818c61282c565b95505b828b111561060d5761060d7f713654fb00000000000000000000000000000000000000000000000000000000610f4a565b881561069a576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b03831690632e1a7d4d906024015f604051808303815f87803b15801561066b575f5ffd5b505af115801561067d573d5f5f3e3d5ffd5b50610695925050506001600160a01b03891687610f52565b6106ae565b6106ae6001600160a01b0383168988611028565b600e54600b546106d0916001600160a01b036101009092048216911683611028565b5050505f5f6106dd61109c565b91509150826dffffffffffffffffffffffffffff16846dffffffffffffffffffffffffffff1661070d91906127d5565b61071a90620f42406127d5565b61072482846127d5565b61073190620f42406127d5565b1015610760576107607fa932492f00000000000000000000000000000000000000000000000000000000610f4a565b61076c828286866111a3565b600b546040516370a0823160e01b81523060048201529296509094505f935061010090046001600160a01b031691506370a0823190602401602060405180830381865afa1580156107bf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107e3919061283f565b90506007548110610895576103e86107fc8260466127d5565b6108069190612819565b6009556103e861081782601e6127d5565b6108219190612819565b600a55600e54600954600b5461084a926001600160a01b03610100909204821692911690611028565b600d54600a54600b54610870926001600160a01b03610100909204821692911690611028565b600a546009546108809190612856565b61088a908261282c565b905061089581611483565b60408051868152602081018690528915158183015290516001600160a01b0388169133917f15df6b17ebbe8381abae058b80360eb98bd18ff544a05e3661ffbed247b47e689181900360600190a3506108ec611dcf565b95509550955095915050565b5f546001600160a01b03163314610932576109327f1c90b19100000000000000000000000000000000000000000000000000000000610f4a565b61093b81611df9565b50565b610946610e8d565b5f5f61095061109c565b915091505f5f6109af6006546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b5090925090506109eb856109d36dffffffffffffffffffffffffffff85168761282c565b600b5461010090046001600160a01b03169190611028565b610a1c85610a096dffffffffffffffffffffffffffff84168661282c565b600c546001600160a01b03169190611028565b5050505061093b611dcf565b610a30610e8d565b610a38610f13565b5f5f610a4261109c565b915091505f5f610aa16006546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b5090925090505f610ac26dffffffffffffffffffffffffffff84168661282c565b90505f610adf6dffffffffffffffffffffffffffff84168661282c565b90505f610af4610aef83856127d5565b611ed4565b9050805f03610b2657610b267fd226f9d400000000000000000000000000000000000000000000000000000000610f4a565b610b32878787876111a3565b5050604080518481526020810184905233917f9bd12ff361235cfc00ce4754dc56d7091bb0a6a4db278a4e8b2f23d84a14c5d4910160405180910390a250505050505050610b7e611dcf565b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314610bd957610bd97fee90c46800000000000000000000000000000000000000000000000000000000610f4a565b6001600160a01b038b161580610bf657506001600160a01b038916155b80610c0857506001600160a01b038816155b80610c1a57506001600160a01b038716155b80610c2c57506001600160a01b038616155b80610c3e57506001600160a01b038516155b80610c5057506001600160a01b038416155b80610c6257506001600160a01b038316155b15610c9057610c907fe6c4247b00000000000000000000000000000000000000000000000000000000610f4a565b811580610c9b575080155b15610cc957610cc97f5945ea5600000000000000000000000000000000000000000000000000000000610f4a565b600d80547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b038e8116919091179092556002805482168c84161790556003805482168b84161790556004805482168a8416179055600580548216898416179055600b80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010089851602179055600c80548216878416179055600e8054909116918516919091179055600f82905560078190556310e352d5610d9c826305f5e1006127d5565b610da69190612819565b6008556007546103e890610dbb9060466127d5565b610dc59190612819565b6009556007546103e890610dda90601e6127d5565b610de49190612819565b600a55610df08a611df9565b5050505050505050505050565b610e05610e8d565b5f5f610e0f61109c565b915091505f5f610e6e6006546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b5091509150610e7f848484846111a3565b505050505050610b7e611dcf565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c15610ee6576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b7e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b90612039565b6001546001600160a01b03163314610b7e57610b7e7f35f3f298000000000000000000000000000000000000000000000000000000005b805f5260045ffd5b80471015610f9a576040517fcf479181000000000000000000000000000000000000000000000000000000008152476004820152602481018290526044015b60405180910390fd5b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114610fe3576040519150601f19603f3d011682016040523d82523d5f602084013e610fe8565b606091505b5050905080611023576040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6040516001600160a01b0383811660248301526044820183905261102391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612040565b600854600b546040516370a0823160e01b81523060048201525f92839290916101009091046001600160a01b0316906370a0823190602401602060405180830381865afa1580156110ef573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611113919061283f565b61111d9190612856565b600c546040516370a0823160e01b81523060048201529193506001600160a01b0316906370a0823190602401602060405180830381865afa158015611164573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611188919061283f565b61119d906a3c626448a0bfcccc9c0000612856565b90509091565b600b545f90819060ff16156111db576111db7fb5dcde8c00000000000000000000000000000000000000000000000000000000610f4a565b6dffffffffffffffffffffffffffff86118061120457506dffffffffffffffffffffffffffff85115b15611232576112327f35278d1200000000000000000000000000000000000000000000000000000000610f4a565b5f61124264010000000042612869565b6006549091505f9061127a907c0100000000000000000000000000000000000000000000000000000000900463ffffffff168361287c565b90505f8163ffffffff161180156112a057506dffffffffffffffffffffffffffff861615155b80156112bb57506dffffffffffffffffffffffffffff851615155b15611387578063ffffffff166112f8876112d4886120cb565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906120fb565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661132091906127d5565b60105f8282546113309190612856565b909155505063ffffffff8116611349866112d4896120cb565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661137191906127d5565b60115f8282546113819190612856565b90915550505b6006805463ffffffff84167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff8b81166e0100000000000000000000000000009081027fffffffff000000000000000000000000000000000000000000000000000000009095168e83161794909417918216831794859055604080519382169282169290921780845293909404909316602082018190529196509094507f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1910160405180910390a1505094509492505050565b600c546040516370a0823160e01b81523060048201525f91829182918291829182916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156114d5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114f9919061283f565b600c54600b549192506001600160a01b03908116610100909204161061154357600c54600b546001600160a01b039182169161010090910416828961153e818361211d565b611567565b600b54600c546001600160a01b03610100909204821691168883611567818361211d565b60408051610160810182526001600160a01b03808816825286166020820152610bb891810191909152949a50929850909650945092505f9060608101603c6115cf817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618612898565b6115d991906128ec565b60020b8152602001603c8061160d7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618612912565b6116179190612898565b61162191906128ec565b600290810b825260208201889052604082018790525f6060830181905260808301523060a08301524260c09092019190915254600b549192506116769161010090046001600160a01b0390811691168a612146565b600c5f9054906101000a90046001600160a01b03166001600160a01b031663b1b3d3f66040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156116c2575f5ffd5b505af11580156116d4573d5f5f3e3d5ffd5b5050600254600c546116f593506001600160a01b0390811692501684612146565b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556002546040517f13ead5620000000000000000000000000000000000000000000000000000000081526001600160a01b0389811660048301528881166024830152610bb860448301528581166064830152909116906313ead562906084016020604051808303815f875af115801561179a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117be919061294e565b506002546040517f883164560000000000000000000000000000000000000000000000000000000081525f916001600160a01b031690638831645690611808908590600401612969565b6080604051808303815f875af1158015611824573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118489190612a2d565b505060408051610140810182526002546001600160a01b0390811682526020808301869052600e54909116828401819052606083018190526080830181905260a08301525f1960c0830152606d60e083015282518084018452600781527f44454641554c54000000000000000000000000000000000000000000000000008183015261010083015282515f808252918101909352939450915061012082019083611902565b60608152602001906001900390816118ed5790505b5090526002546003546040517fa22cb4650000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260016024820152929350169063a22cb465906044015f604051808303815f87803b15801561196d575f5ffd5b505af115801561197f573d5f5f3e3d5ffd5b50506003546040517fa35a96b80000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063a35a96b891506119cc908490600401612b05565b6020604051808303815f875af11580156119e8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a0c919061283f565b50600b546040516370a0823160e01b81523060048201525f9161010090046001600160a01b0316906370a0823190602401602060405180830381865afa158015611a58573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a7c919061283f565b600c546040516370a0823160e01b81523060048201529192505f916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611ac7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aeb919061283f565b600554600b54919250611b109161010090046001600160a01b03908116911684612146565b600b54600c54604051610100909204606090811b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090811660208501527e0bb80000000000000000000000000000000000000000000000000000000000603485015291901b1660378201525f90604b0160408051601f19818403018152608083018252808352600e546001600160a01b0390811660208501528383018790525f606085015260055492517fb858183f000000000000000000000000000000000000000000000000000000008152919450919091169063b858183f90611bf9908490600401612bea565b6020604051808303815f875af1158015611c15573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c39919061283f565b5050600b546040516370a0823160e01b81523060048201526101009091046001600160a01b031691506370a0823190602401602060405180830381865afa158015611c86573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611caa919061283f565b91508115611d4857600b54600e546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101859052610100909204169063a9059cbb906044016020604051808303815f875af1158015611d22573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d469190612c38565b505b8015611dc157600c546040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b03909116906342966c68906024015f604051808303815f87803b158015611daa575f5ffd5b505af1158015611dbc573d5f5f3e3d5ffd5b505050505b505050505050505050505050565b610b7e5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00610f0d565b6001600160a01b038116611e3057611e307f12e6291100000000000000000000000000000000000000000000000000000000610f4a565b5f546001600160a01b031615611e68575f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527fac1f812621b6c406f47d89f077576cabc56e1309dc67429449723f66ad0dd2269060200160405180910390a150565b5f60018211611ee1575090565b8160017001000000000000000000000000000000008210611f075760809190911c9060401b5b680100000000000000008210611f225760409190911c9060201b5b6401000000008210611f395760209190911c9060101b5b620100008210611f4e5760109190911c9060081b5b6101008210611f625760089190911c9060041b5b60108210611f755760049190911c9060021b5b60048210611f815760011b5b600302600190811c90818581611f9957611f996127ec565b048201901c90506001818581611fb157611fb16127ec565b048201901c90506001818581611fc957611fc96127ec565b048201901c90506001818581611fe157611fe16127ec565b048201901c90506001818581611ff957611ff96127ec565b048201901c90506001818581612011576120116127ec565b048201901c905061203081858161202a5761202a6127ec565b04821190565b90039392505050565b80825d5050565b5f5f60205f8451602086015f885af18061205f576040513d5f823e3d81fd5b50505f513d91508115612076578060011415612083565b6001600160a01b0384163b155b156120c5576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610f91565b50505050565b5f6120f56e0100000000000000000000000000006dffffffffffffffffffffffffffff8416612c53565b92915050565b5f6121166dffffffffffffffffffffffffffff831684612cd1565b9392505050565b5f61211661213361212e8585612203565b61224a565b6c0100000000000000000000000061226a565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526121c584826122e4565b6120c5576040516001600160a01b0384811660248301525f60448301526121f991869182169063095ea7b390606401611055565b6120c58482612040565b5f815f0361220f575f5ffd5b5f61221a848461232d565b90506f7fffffffffffffffffffffffffffffff6fffffffffffffffffffffffffffffffff82161115612116575f5ffd5b5f5f82600f0b121561225a575f5ffd5b6120f5604083600f0b901b6124b8565b5f815f0361227557505f5b5f83600f0b1215612284575f5ffd5b600f83900b6fffffffffffffffffffffffffffffffff8316810260401c90608084901c0277ffffffffffffffffffffffffffffffffffffffffffffffff8111156122cc575f5ffd5b60401b81198111156122dc575f5ffd5b019392505050565b5f5f5f5f60205f8651602088015f8a5af192503d91505f519050828015612323575081156123155780600114612323565b5f866001600160a01b03163b115b9695505050505050565b5f815f03612339575f5ffd5b5f77ffffffffffffffffffffffffffffffffffffffffffffffff84116123745782604085901b8161236c5761236c6127ec565b04905061249c565b60c084811c640100000000811061238d576020918201911c5b62010000811061239f576010918201911c5b61010081106123b0576008918201911c5b601081106123c0576004918201911c5b600481106123d0576002918201911c5b600281106123df576001820191505b60bf820360018603901c6001018260ff0387901b81612400576124006127ec565b0492506fffffffffffffffffffffffffffffffff83111561241f575f5ffd5b608085901c83026fffffffffffffffffffffffffffffffff8616840260c088901c604089901b82811015612454576001820391505b608084901b9290038281101561246b576001820391505b829003608084901c821461248157612481612d28565b888181612490576124906127ec565b04870196505050505050505b6fffffffffffffffffffffffffffffffff811115612116575f5ffd5b5f815f036124c757505f919050565b81600170010000000000000000000000000000000082106124ed5760809190911c9060401b5b6801000000000000000082106125085760409190911c9060201b5b640100000000821061251f5760209190911c9060101b5b6201000082106125345760109190911c9060081b5b61010082106125485760089190911c9060041b5b6010821061255b5760049190911c9060021b5b600882106125675760011b5b6001818581612578576125786127ec565b048201901c90506001818581612590576125906127ec565b048201901c905060018185816125a8576125a86127ec565b048201901c905060018185816125c0576125c06127ec565b048201901c905060018185816125d8576125d86127ec565b048201901c905060018185816125f0576125f06127ec565b048201901c90506001818581612608576126086127ec565b048201901c90505f81858161261f5761261f6127ec565b04905080821061262f5780612631565b815b93505050505b919050565b801515811461093b575f5ffd5b6001600160a01b038116811461093b575f5ffd5b803561263781612649565b5f5f5f5f5f60a0868803121561267c575f5ffd5b853594506020860135935060408601356126958161263c565b925060608601356126a58161263c565b915060808601356126b581612649565b809150509295509295909350565b5f602082840312156126d3575f5ffd5b813561211681612649565b5f5f5f5f5f5f5f5f5f5f5f6101608c8e0312156126f9575f5ffd5b8b3561270481612649565b9a5060208c013561271481612649565b995060408c013561272481612649565b985060608c013561273481612649565b975060808c013561274481612649565b965060a08c013561275481612649565b955060c08c013561276481612649565b945061277260e08d0161265d565b93506127816101008d0161265d565b9a9d999c50979a969995989497509295919493610120830135935061014090920135919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820281158282048414176120f5576120f56127a8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82612827576128276127ec565b500490565b818103818111156120f5576120f56127a8565b5f6020828403121561284f575f5ffd5b5051919050565b808201808211156120f5576120f56127a8565b5f82612877576128776127ec565b500690565b63ffffffff82811682821603908111156120f5576120f56127a8565b5f8160020b8360020b806128ae576128ae6127ec565b5f1981147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000831416156128e3576128e36127a8565b90059392505050565b5f8260020b8260020b028060020b915080821461290b5761290b6127a8565b5092915050565b5f8160020b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008103612946576129466127a8565b5f0392915050565b5f6020828403121561295e575f5ffd5b815161211681612649565b81516001600160a01b031681526101608101602083015161299560208401826001600160a01b03169052565b5060408301516129ac604084018262ffffff169052565b5060608301516129c1606084018260020b9052565b5060808301516129d6608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e0830152610100830151610100830152610120830151612a1d6101208401826001600160a01b03169052565b5061014092830151919092015290565b5f5f5f5f60808587031215612a40575f5ffd5b845160208601519094506fffffffffffffffffffffffffffffffff81168114612a67575f5ffd5b6040860151606090960151949790965092505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f82825180855260208501945060208160051b830101602085015f5b83811015612af957601f19858403018852612ae3838351612a7d565b6020988901989093509190910190600101612ac7565b50909695505050505050565b60208152612b1f6020820183516001600160a01b03169052565b602082015160408201525f6040830151612b4460608401826001600160a01b03169052565b5060608301516001600160a01b03811660808401525060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e083015260e0830151612ba461010084018261ffff169052565b50610100830151610140610120840152612bc2610160840182612a7d565b9050610120840151601f1984830301610140850152612be18282612aab565b95945050505050565b602081525f825160806020840152612c0560a0840182612a7d565b90506001600160a01b03602085015116604084015260408401516060840152606084015160808401528091505092915050565b5f60208284031215612c48575f5ffd5b81516121168161263c565b5f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff84167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183021692508183048114821517612cc957612cc96127a8565b505092915050565b5f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff831680612cfe57612cfe6127ec565b807bffffffffffffffffffffffffffffffffffffffffffffffffffffffff84160491505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffdfea2646970667358221220b6957769e4ed73306e92d1d21c46e064c19f4b42fc19ecde2de13291a17d9a5164736f6c634300081c0033a26469706673582212204ec429480c26bcb235a2dedb969788321ae4dc8c08548571f52b8d46911b714964736f6c634300081c0033