0 txs
2 calls
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 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
0x60a0604052306080523480156012575f5ffd5b50608051615e6b6100395f395f8181610a2401528181610a4d0152610c020152615e6b5ff3fe6080604052600436106100c3575f3560e01c80638da5cb5b11610071578063cc2a9a5b1161004c578063cc2a9a5b14610282578063f2428621146102a1578063f2fde38b146102c0575f5ffd5b80638da5cb5b146101ac578063a0d6bd51146101e8578063ad3cb1cc1461022d575f5ffd5b806352d1902d116100a157806352d1902d146101615780635d8c32a914610183578063715018a614610198575f5ffd5b806310240c1c146100c75780631a788a02146101185780634f1ef2861461014c575b5f5ffd5b3480156100d2575f5ffd5b506100fb6100e1366004611234565b603a6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610123575f5ffd5b506100fb610132366004611234565b60396020525f90815260409020546001600160a01b031681565b61015f61015a36600461127a565b6102df565b005b34801561016c575f5ffd5b506101756102fe565b60405190815260200161010f565b34801561018e575f5ffd5b5061017560385481565b3480156101a3575f5ffd5b5061015f61032c565b3480156101b7575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166100fb565b3480156101f3575f5ffd5b50610207610202366004611384565b61033f565b604080516001600160a01b0394851681529390921660208401529082015260600161010f565b348015610238575f5ffd5b506102756040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161010f9190611417565b34801561028d575f5ffd5b5061015f61029c36600461144c565b610729565b3480156102ac575f5ffd5b506037546100fb906001600160a01b031681565b3480156102cb575f5ffd5b5061015f6102da366004611234565b6109be565b6102e7610a19565b6102f082610ae9565b6102fa8282610af1565b5050565b5f610307610bf7565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610334610c59565b61033d5f610ccd565b565b5f5f5f61034a610d55565b61039a60405180602001604052805f8152508b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509293925050610d8f9050565b806103f057506103f060405180602001604052805f81525089898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509293925050610d8f9050565b1561041e5761041e7f3b00c96400000000000000000000000000000000000000000000000000000000610db5565b8989898960335f9054906101000a90046001600160a01b03166b033b2e3c9fd0803ce8000000604051610450906111ff565b61045f969594939291906114e5565b604051809103905ff080158015610478573d5f5f3e3d5ffd5b5092505f6040518060200161048c9061120c565b818103601f199081018352601f9091011660408190526037547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606091821b811660208401529087901b1660348201529091505f90604801604051602081830303815290604052805190602001209050808251602084015ff5935061052a9150506001600160a01b038416836b033b2e3c9fd0803ce8000000610dbd565b5f546033546034546035546036546037546040517f8494ed610000000000000000000000000000000000000000000000000000000081526001600160a01b03968716600482015294861660248601529285166044850152908416606484015283166084830152821660a482015284821660c482015287821660e48201526101048101879052610124810186905290831690638494ed6190610144015f604051808303815f87803b1580156105dc575f5ffd5b505af11580156105ee573d5f5f3e3d5ffd5b50506040517f99fb809e0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152861692506399fb809e91506024015f604051808303815f87803b15801561064b575f5ffd5b505af115801561065d573d5f5f3e3d5ffd5b5050506001600160a01b038085165f81815260396020908152604080832080549589167fffffffffffffffffffffffff000000000000000000000000000000000000000096871681179091558352603a90915281208054909316909117909155603880549092506106cd9061152a565b9182905550604080516001600160a01b03858116825260208201849052929350918516917fc1db9ba7c4b7ce660fe8d17bbcf07167549381df2abd694a970bd1402d86d313910160405180910390a29750975097945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f811580156107735750825b90505f8267ffffffffffffffff16600114801561078f5750303b155b90508115801561079d575080155b156107d4576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156108355784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b61083e33610e3d565b610846610e4e565b61084f86610e56565b6001600160a01b038b16158061086c57506001600160a01b038a16155b8061087e57506001600160a01b038916155b8061089057506001600160a01b038816155b806108a257506001600160a01b038716155b806108b457506001600160a01b038616155b156108e2576108e27fe6c4247b00000000000000000000000000000000000000000000000000000000610db5565b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b038e8116919091179092556034805482168d84161790556035805482168c84161790556036805482168b84161790556037805490911691891691909117905583156109b15784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b6109c6610c59565b6001600160a01b038116610a0d576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b610a1681610ccd565b50565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610ab257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610aa67f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561033d576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a16610c59565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b4b575060408051601f3d908101601f19168201909252610b4891810190611586565b60015b610b8c576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610a04565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610be8576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610a04565b610bf28383610e67565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461033d576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33610c8b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161461033d576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610a04565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f546001600160a01b0316331461033d5761033d7f35f3f29800000000000000000000000000000000000000000000000000000000610db5565b5f81518351148015610dae575081805190602001208380519060200120145b9392505050565b805f5260045ffd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610bf2908490610ebc565b610e45610f47565b610a1681610fae565b61033d610f47565b610e5e610f47565b610a1681610fb6565b610e7082610ff7565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115610eb457610bf2828261109e565b6102fa611110565b5f5f60205f8451602086015f885af180610edb576040513d5f823e3d81fd5b50505f513d91508115610ef2578060011415610eff565b6001600160a01b0384163b155b15610f41576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610a04565b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661033d576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109c6610f47565b610fbe610f47565b5f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b806001600160a01b03163b5f03611045576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401610a04565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516110ba919061159d565b5f60405180830381855af49150503d805f81146110f2576040519150601f19603f3d011682016040523d82523d5f602084013e6110f7565b606091505b5091509150611107858383611148565b95945050505050565b341561033d576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261115d57611158826111bd565b610dae565b815115801561117457506001600160a01b0384163b155b156111b6576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610a04565b5092915050565b8051156111cd5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b4b806115b483390190565b612d37806130ff83390190565b80356001600160a01b038116811461122f575f5ffd5b919050565b5f60208284031215611244575f5ffd5b610dae82611219565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f5f6040838503121561128b575f5ffd5b61129483611219565b9150602083013567ffffffffffffffff8111156112af575f5ffd5b8301601f810185136112bf575f5ffd5b803567ffffffffffffffff8111156112d9576112d961124d565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff821117156113095761130961124d565b604052818152828201602001871015611320575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f83601f84011261134f575f5ffd5b50813567ffffffffffffffff811115611366575f5ffd5b60208301915083602082850101111561137d575f5ffd5b9250929050565b5f5f5f5f5f5f5f60a0888a03121561139a575f5ffd5b873567ffffffffffffffff8111156113b0575f5ffd5b6113bc8a828b0161133f565b909850965050602088013567ffffffffffffffff8111156113db575f5ffd5b6113e78a828b0161133f565b90965094506113fa905060408901611219565b969995985093969295946060840135945060809093013592915050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f5f5f5f60c08789031215611461575f5ffd5b61146a87611219565b955061147860208801611219565b945061148660408801611219565b935061149460608801611219565b92506114a260808801611219565b91506114b060a08801611219565b90509295509295509295565b81835281816020850137505f602082840101525f6020601f19601f840116840101905092915050565b608081525f6114f860808301888a6114bc565b828103602084015261150b8187896114bc565b6001600160a01b03959095166040840152505060600152949350505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361157f577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5060010190565b5f60208284031215611596575f5ffd5b5051919050565b5f82518060208501845e5f92019182525091905056fe610180604052348015610010575f5ffd5b50604051611b4b380380611b4b83398101604081905261002f9161041b565b6040805180820190915260018152603160f81b602082015284908190818660036100598382610529565b5060046100668282610529565b5061007691508390506005610151565b61012052610085816006610151565b61014052815160208084019190912060e052815190820120610100524660a05261011160e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c05250600880546001600160a01b031916339081179091556001600160a01b038316610160526101489082610183565b5050505061065a565b5f60208351101561016c57610165836101c0565b905061017d565b816101778482610529565b5060ff90505b92915050565b6001600160a01b0382166101b15760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b6101bc5f83836101fd565b5050565b5f5f829050601f815111156101ea578260405163305a27a960e01b81526004016101a891906105e3565b80516101f582610618565b179392505050565b600954600160a01b900460ff1615801561022b5750610160516001600160a01b0316336001600160a01b0316145b1561024057610240631eb49d6d60e11b610250565b61024b838383610258565b505050565b805f5260045ffd5b6001600160a01b038316610282578060025f828254610277919061063b565b909155506102f29050565b6001600160a01b0383165f90815260208190526040902054818110156102d45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016101a8565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661030e5760028054829003905561032c565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161037191815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126103a1575f5ffd5b81516001600160401b038111156103ba576103ba61037e565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103e8576103e861037e565b6040528181528382016020018510156103ff575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f5f6080858703121561042e575f5ffd5b84516001600160401b03811115610443575f5ffd5b61044f87828801610392565b602087015190955090506001600160401b0381111561046c575f5ffd5b61047887828801610392565b604087015190945090506001600160a01b0381168114610496575f5ffd5b6060959095015193969295505050565b600181811c908216806104ba57607f821691505b6020821081036104d857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561024b57805f5260205f20601f840160051c810160208510156105035750805b601f840160051c820191505b81811015610522575f815560010161050f565b5050505050565b81516001600160401b038111156105425761054261037e565b6105568161055084546104a6565b846104de565b6020601f821160018114610588575f83156105715750848201515b5f19600385901b1c1916600184901b178455610522565b5f84815260208120601f198516915b828110156105b75787850151825560209485019460019092019101610597565b50848210156105d457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156104d8575f1960209190910360031b1b16919050565b8082018082111561017d57634e487b7160e01b5f52601160045260245ffd5b60805160a05160c05160e051610100516101205161014051610160516114966106b55f395f610c9f01525f6109af01525f61098201525f6108de01525f6108b601525f61081101525f61083b01525f61086501526114965ff3fe608060405234801561000f575f5ffd5b506004361061012f575f3560e01c806379cc6790116100ad57806399fb809e1161007d578063b1b3d3f611610063578063b1b3d3f614610281578063d505accf14610289578063dd62ed3e1461029c575f5ffd5b806399fb809e1461025b578063a9059cbb1461026e575f5ffd5b806379cc6790146102125780637ecebe001461022557806384b0196e1461023857806395d89b4114610253575f5ffd5b806323b872dd116101025780633644e515116100e85780633644e515146101cd57806342966c68146101d557806370a08231146101ea575f5ffd5b806323b872dd146101ab578063313ce567146101be575f5ffd5b806306fdde0314610133578063095ea7b31461015157806318160ddd1461017457806319e1fca414610186575b5f5ffd5b61013b6102d4565b6040516101489190611194565b60405180910390f35b61016461015f3660046111c8565b610364565b6040519015158152602001610148565b6002545b604051908152602001610148565b6009546101649074010000000000000000000000000000000000000000900460ff1681565b6101646101b93660046111f0565b61037d565b60405160128152602001610148565b6101786103a0565b6101e86101e336600461122a565b6103ae565b005b6101786101f8366004611241565b6001600160a01b03165f9081526020819052604090205490565b6101e86102203660046111c8565b6103bb565b610178610233366004611241565b6103d4565b6102406103f1565b604051610148979695949392919061125a565b61013b61044f565b6101e8610269366004611241565b61045e565b61016461027c3660046111c8565b6104a2565b6101e86104af565b6101e861029736600461130c565b610544565b6101786102aa366004611379565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6060600380546102e3906113aa565b80601f016020809104026020016040519081016040528092919081815260200182805461030f906113aa565b801561035a5780601f106103315761010080835404028352916020019161035a565b820191905f5260205f20905b81548152906001019060200180831161033d57829003601f168201915b5050505050905090565b5f336103718185856106b1565b60019150505b92915050565b5f3361038a8582856106c3565b610395858585610776565b506001949350505050565b5f6103a9610805565b905090565b6103b8338261092e565b50565b6103c68233836106c3565b6103d0828261092e565b5050565b6001600160a01b0381165f90815260076020526040812054610377565b5f6060805f5f5f606061040261097b565b61040a6109a8565b604080515f808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b6060600480546102e3906113aa565b6008546001600160a01b03163314610499576104997f1c90b191000000000000000000000000000000000000000000000000000000006109d5565b6103b8816109dd565b5f33610371818585610776565b6104b7610aba565b60095474010000000000000000000000000000000000000000900460ff1615610503576105037f6a4648d7000000000000000000000000000000000000000000000000000000006109d5565b600980547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b83421115610586576040517f62791302000000000000000000000000000000000000000000000000000000008152600481018590526024015b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886105d18c6001600160a01b03165f90815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f61062b82610af7565b90505f61063a82878787610b3e565b9050896001600160a01b0316816001600160a01b03161461069a576040517f4b800e460000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301528b16602482015260440161057d565b6106a58a8a8a6106b1565b50505050505050505050565b6106be8383836001610b6a565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107705781811015610762576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602481018290526044810183905260640161057d565b61077084848484035f610b6a565b50505050565b6001600160a01b0383166107b8576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f600482015260240161057d565b6001600160a01b0382166107fa576040517fec442f050000000000000000000000000000000000000000000000000000000081525f600482015260240161057d565b6106be838383610c6e565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561085d57507f000000000000000000000000000000000000000000000000000000000000000046145b1561088757507f000000000000000000000000000000000000000000000000000000000000000090565b6103a9604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b6001600160a01b038216610970576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f600482015260240161057d565b6103d0825f83610c6e565b60606103a97f00000000000000000000000000000000000000000000000000000000000000006005610cfa565b60606103a97f00000000000000000000000000000000000000000000000000000000000000006006610cfa565b805f5260045ffd5b6001600160a01b038116610a1457610a147f12e62911000000000000000000000000000000000000000000000000000000006109d5565b6008546001600160a01b031615610a4e57600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555b600980547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527fac1f812621b6c406f47d89f077576cabc56e1309dc67429449723f66ad0dd2269060200160405180910390a150565b6009546001600160a01b03163314610af557610af57f35f3f298000000000000000000000000000000000000000000000000000000006109d5565b565b5f610377610b03610805565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b5f5f5f5f610b4e88888888610da3565b925092509250610b5e8282610e89565b50909695505050505050565b6001600160a01b038416610bac576040517fe602df050000000000000000000000000000000000000000000000000000000081525f600482015260240161057d565b6001600160a01b038316610bee576040517f94280d620000000000000000000000000000000000000000000000000000000081525f600482015260240161057d565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561077057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c6091815260200190565b60405180910390a350505050565b60095474010000000000000000000000000000000000000000900460ff16158015610cc15750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b15610cef57610cef7f3d693ada000000000000000000000000000000000000000000000000000000006109d5565b6106be838383610f8c565b606060ff8314610d1457610d0d836110cb565b9050610377565b818054610d20906113aa565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4c906113aa565b8015610d975780601f10610d6e57610100808354040283529160200191610d97565b820191905f5260205f20905b815481529060010190602001808311610d7a57829003601f168201915b50505050509050610377565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610ddc57505f91506003905082610e7f565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610e2d573d5f5f3e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116610e7657505f925060019150829050610e7f565b92505f91508190505b9450945094915050565b5f826003811115610e9c57610e9c6113fb565b03610ea5575050565b6001826003811115610eb957610eb96113fb565b03610ef0576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002826003811115610f0457610f046113fb565b03610f3e576040517ffce698f70000000000000000000000000000000000000000000000000000000081526004810182905260240161057d565b6003826003811115610f5257610f526113fb565b036103d0576040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004810182905260240161057d565b6001600160a01b038316610fb6578060025f828254610fab9190611428565b9091555061103f9050565b6001600160a01b0383165f9081526020819052604090205481811015611021576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602481018290526044810183905260640161057d565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661105b57600280548290039055611079565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516110be91815260200190565b60405180910390a3505050565b60605f6110d783611108565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f811115610377576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6111a66020830184611148565b9392505050565b80356001600160a01b03811681146111c3575f5ffd5b919050565b5f5f604083850312156111d9575f5ffd5b6111e2836111ad565b946020939093013593505050565b5f5f5f60608486031215611202575f5ffd5b61120b846111ad565b9250611219602085016111ad565b929592945050506040919091013590565b5f6020828403121561123a575f5ffd5b5035919050565b5f60208284031215611251575f5ffd5b6111a6826111ad565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61129460e0830189611148565b82810360408401526112a68189611148565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156112fb5783518352602093840193909201916001016112dd565b50909b9a5050505050505050505050565b5f5f5f5f5f5f5f60e0888a031215611322575f5ffd5b61132b886111ad565b9650611339602089016111ad565b95506040880135945060608801359350608088013560ff8116811461135c575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f6040838503121561138a575f5ffd5b611393836111ad565b91506113a1602084016111ad565b90509250929050565b600181811c908216806113be57607f821691505b6020821081036113f5577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b80820180821115610377577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffdfea26469706673582212201f1f4834f52f96a0e7a6dfe2915c093392f701e072b37c0e7c36e67c2c22bac064736f6c634300081c003360a06040526729a2241af62c00006007556310e352d56007546305f5e100610027919061007b565b61003191906100a4565b6008556103e86007546046610046919061007b565b61005091906100a4565b60095534801561005e575f5ffd5b505f80546001600160a01b031916339081179091556080526100c3565b808202811582820484141761009e57634e487b7160e01b5f52601160045260245ffd5b92915050565b5f826100be57634e487b7160e01b5f52601260045260245ffd5b500490565b608051612c556100e25f395f818161025501526108290152612c555ff3fe60806040526004361061010c575f3560e01c80638494ed61116100a1578063bc22593e11610071578063be9a655511610057578063be9a655514610370578063fa2af9da14610384578063fff6cae9146103a3575f5ffd5b8063bc22593e1461033c578063bc25cf7714610351575f5ffd5b80638494ed61146102c357806399fb809e146102e4578063ad5c464814610303578063b01388ea14610327575f5ffd5b806326232a2e116100dc57806326232a2e1461022f5780632dd31000146102445780636da6bad01461028f5780638120192c146102ae575f5ffd5b806302a4a890146101175780630902f1ac1461013f5780630d8d7f14146101b1578063135f0f85146101da575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b5061012c600f5481565b6040519081526020015b60405180910390f35b34801561014a575f5ffd5b50600654604080516dffffffffffffffffffffffffffff80841682526e01000000000000000000000000000084041660208201527c010000000000000000000000000000000000000000000000000000000090920463ffffffff1690820152606001610136565b3480156101bc575f5ffd5b50600a546101ca9060ff1681565b6040519015158152602001610136565b3480156101e5575f5ffd5b506101f96101f436600461254c565b6103b7565b6040805194855260208501939093526dffffffffffffffffffffffffffff91821692840192909252166060820152608001610136565b34801561023a575f5ffd5b5061012c600d5481565b34801561024f575f5ffd5b506102777f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610136565b34801561029a575f5ffd5b50600b54610277906001600160a01b031681565b3480156102b9575f5ffd5b5061012c60095481565b3480156102ce575f5ffd5b506102e26102dd3660046125a7565b610827565b005b3480156102ef575f5ffd5b506102e26102fe366004612660565b610a66565b34801561030e575f5ffd5b50600a546102779061010090046001600160a01b031681565b348015610332575f5ffd5b5061012c600e5481565b348015610347575f5ffd5b5061012c60075481565b34801561035c575f5ffd5b506102e261036b366004612660565b610aac565b34801561037b575f5ffd5b506102e2610b96565b34801561038f575f5ffd5b50600c54610277906001600160a01b031681565b3480156103ae575f5ffd5b506102e2610cee565b5f5f5f5f6103c3610d7e565b6103cb610e04565b600a5460ff16156103ff576103ff7fb5dcde8c00000000000000000000000000000000000000000000000000000000610e3b565b88158061040a575087155b15610438576104387f5945ea5600000000000000000000000000000000000000000000000000000000610e3b565b600a546001600160a01b038681166101009092041614806104665750600b546001600160a01b038681169116145b15610494576104947f1e4ec46b00000000000000000000000000000000000000000000000000000000610e3b565b50506006546dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004165f8080891561051c57600b54600d546dffffffffffffffffffffffffffff861694506001600160a01b0390911692506103e8906104fc908e6126a8565b61050691906126ec565b9050610512818d6126ff565b96508a9550610574565b846dffffffffffffffffffffffffffff169250600a60019054906101000a90046001600160a01b031691506103e8600d548c61055891906126a8565b61056291906126ec565b8c97509050610571818c6126ff565b95505b828b11156105a5576105a57f713654fb00000000000000000000000000000000000000000000000000000000610e3b565b8815610632576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b03831690632e1a7d4d906024015f604051808303815f87803b158015610603575f5ffd5b505af1158015610615573d5f5f3e3d5ffd5b5061062d925050506001600160a01b03891687610e43565b610646565b6106466001600160a01b0383168988610f19565b600c54600a54610668916001600160a01b036101009092048216911683610f19565b5050505f5f610675610f8d565b91509150826dffffffffffffffffffffffffffff16846dffffffffffffffffffffffffffff166106a591906126a8565b6106b290620f42406126a8565b6106bc82846126a8565b6106c990620f42406126a8565b10156106f8576106f87fa932492f00000000000000000000000000000000000000000000000000000000610e3b565b61070482828686611094565b600a546040516370a0823160e01b81523060048201529296509094505f935061010090046001600160a01b031691506370a0823190602401602060405180830381865afa158015610757573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061077b9190612712565b905060075481106107c457600c54600954600a546107ac926001600160a01b03610100909204821692911690610f19565b6009546107b990826126ff565b90506107c481611374565b60408051868152602081018690528915158183015290516001600160a01b0388169133917f15df6b17ebbe8381abae058b80360eb98bd18ff544a05e3661ffbed247b47e689181900360600190a35061081b611cc0565b95509550955095915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314610880576108807fee90c46800000000000000000000000000000000000000000000000000000000610e3b565b6001600160a01b038916158061089d57506001600160a01b038816155b806108af57506001600160a01b038716155b806108c157506001600160a01b038616155b806108d357506001600160a01b038516155b806108e557506001600160a01b038416155b806108f757506001600160a01b038316155b15610925576109257fe6c4247b00000000000000000000000000000000000000000000000000000000610e3b565b811580610930575080155b1561095e5761095e7f5945ea5600000000000000000000000000000000000000000000000000000000610e3b565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b038c8116919091179092556003805482168b84161790556004805482168a8416179055600580548216898416179055600a80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010089851602179055600b80548216878416179055600c8054909116918516919091179055600d82905560078190556310e352d5610a25826305f5e1006126a8565b610a2f91906126ec565b6008556007546103e890610a449060466126a8565b610a4e91906126ec565b600955610a5a8a611cea565b50505050505050505050565b5f546001600160a01b03163314610aa057610aa07f1c90b19100000000000000000000000000000000000000000000000000000000610e3b565b610aa981611cea565b50565b610ab4610d7e565b5f5f610abe610f8d565b915091505f5f610b1d6006546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b509092509050610b5985610b416dffffffffffffffffffffffffffff8516876126ff565b600a5461010090046001600160a01b03169190610f19565b610b8a85610b776dffffffffffffffffffffffffffff8416866126ff565b600b546001600160a01b03169190610f19565b50505050610aa9611cc0565b610b9e610d7e565b610ba6610e04565b5f5f610bb0610f8d565b915091505f5f610c0f6006546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b5090925090505f610c306dffffffffffffffffffffffffffff8416866126ff565b90505f610c4d6dffffffffffffffffffffffffffff8416866126ff565b90505f610c62610c5d83856126a8565b611dc5565b9050805f03610c9457610c947fd226f9d400000000000000000000000000000000000000000000000000000000610e3b565b610ca087878787611094565b5050604080518481526020810184905233917f9bd12ff361235cfc00ce4754dc56d7091bb0a6a4db278a4e8b2f23d84a14c5d4910160405180910390a250505050505050610cec611cc0565b565b610cf6610d7e565b5f5f610d00610f8d565b915091505f5f610d5f6006546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b5091509150610d7084848484611094565b505050505050610cec611cc0565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c15610dd7576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cec60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b90611f2a565b6001546001600160a01b03163314610cec57610cec7f35f3f298000000000000000000000000000000000000000000000000000000005b805f5260045ffd5b80471015610e8b576040517fcf479181000000000000000000000000000000000000000000000000000000008152476004820152602481018290526044015b60405180910390fd5b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114610ed4576040519150601f19603f3d011682016040523d82523d5f602084013e610ed9565b606091505b5050905080610f14576040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6040516001600160a01b03838116602483015260448201839052610f1491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611f31565b600854600a546040516370a0823160e01b81523060048201525f92839290916101009091046001600160a01b0316906370a0823190602401602060405180830381865afa158015610fe0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110049190612712565b61100e9190612729565b600b546040516370a0823160e01b81523060048201529193506001600160a01b0316906370a0823190602401602060405180830381865afa158015611055573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110799190612712565b61108e906a3c626448a0bfcccc9c0000612729565b90509091565b600a545f90819060ff16156110cc576110cc7fb5dcde8c00000000000000000000000000000000000000000000000000000000610e3b565b6dffffffffffffffffffffffffffff8611806110f557506dffffffffffffffffffffffffffff85115b15611123576111237f35278d1200000000000000000000000000000000000000000000000000000000610e3b565b5f6111336401000000004261273c565b6006549091505f9061116b907c0100000000000000000000000000000000000000000000000000000000900463ffffffff168361274f565b90505f8163ffffffff1611801561119157506dffffffffffffffffffffffffffff861615155b80156111ac57506dffffffffffffffffffffffffffff851615155b15611278578063ffffffff166111e9876111c588611fbc565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690611fec565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661121191906126a8565b600e5f8282546112219190612729565b909155505063ffffffff811661123a866111c589611fbc565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661126291906126a8565b600f5f8282546112729190612729565b90915550505b6006805463ffffffff84167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff8b81166e0100000000000000000000000000009081027fffffffff000000000000000000000000000000000000000000000000000000009095168e83161794909417918216831794859055604080519382169282169290921780845293909404909316602082018190529196509094507f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1910160405180910390a1505094509492505050565b600b546040516370a0823160e01b81523060048201525f91829182918291829182916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156113c6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ea9190612712565b600b54600a549192506001600160a01b03908116610100909204161061143457600b54600a546001600160a01b039182169161010090910416828961142f818361200e565b611458565b600a54600b546001600160a01b03610100909204821691168883611458818361200e565b60408051610160810182526001600160a01b03808816825286166020820152610bb891810191909152949a50929850909650945092505f9060608101603c6114c0817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761861276b565b6114ca91906127bf565b60020b8152602001603c806114fe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186127e5565b611508919061276b565b61151291906127bf565b600290810b825260208201889052604082018790525f6060830181905260808301523060a08301524260c09092019190915254600a549192506115679161010090046001600160a01b0390811691168a612037565b600b5f9054906101000a90046001600160a01b03166001600160a01b031663b1b3d3f66040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156115b3575f5ffd5b505af11580156115c5573d5f5f3e3d5ffd5b5050600254600b546115e693506001600160a01b0390811692501684612037565b600a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556002546040517f13ead5620000000000000000000000000000000000000000000000000000000081526001600160a01b0389811660048301528881166024830152610bb860448301528581166064830152909116906313ead562906084016020604051808303815f875af115801561168b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116af9190612821565b506002546040517f883164560000000000000000000000000000000000000000000000000000000081525f916001600160a01b0316906388316456906116f990859060040161283c565b6080604051808303815f875af1158015611715573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117399190612900565b505060408051610140810182526002546001600160a01b0390811682526020808301869052600c54909116828401819052606083018190526080830181905260a08301525f1960c0830152606d60e083015282518084018452600781527f44454641554c54000000000000000000000000000000000000000000000000008183015261010083015282515f8082529181019093529394509150610120820190836117f3565b60608152602001906001900390816117de5790505b5090526002546003546040517fa22cb4650000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260016024820152929350169063a22cb465906044015f604051808303815f87803b15801561185e575f5ffd5b505af1158015611870573d5f5f3e3d5ffd5b50506003546040517fa35a96b80000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063a35a96b891506118bd9084906004016129d8565b6020604051808303815f875af11580156118d9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118fd9190612712565b50600a546040516370a0823160e01b81523060048201525f9161010090046001600160a01b0316906370a0823190602401602060405180830381865afa158015611949573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061196d9190612712565b600b546040516370a0823160e01b81523060048201529192505f916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156119b8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119dc9190612712565b600554600a54919250611a019161010090046001600160a01b03908116911684612037565b600a54600b54604051610100909204606090811b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090811660208501527e0bb80000000000000000000000000000000000000000000000000000000000603485015291901b1660378201525f90604b0160408051601f19818403018152608083018252808352600c546001600160a01b0390811660208501528383018790525f606085015260055492517fb858183f000000000000000000000000000000000000000000000000000000008152919450919091169063b858183f90611aea908490600401612ab4565b6020604051808303815f875af1158015611b06573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b2a9190612712565b5050600a546040516370a0823160e01b81523060048201526101009091046001600160a01b031691506370a0823190602401602060405180830381865afa158015611b77573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b9b9190612712565b91508115611c3957600a54600c546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101859052610100909204169063a9059cbb906044016020604051808303815f875af1158015611c13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c379190612b02565b505b8015611cb257600b546040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b03909116906342966c68906024015f604051808303815f87803b158015611c9b575f5ffd5b505af1158015611cad573d5f5f3e3d5ffd5b505050505b505050505050505050505050565b610cec5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00610dfe565b6001600160a01b038116611d2157611d217f12e6291100000000000000000000000000000000000000000000000000000000610e3b565b5f546001600160a01b031615611d59575f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527fac1f812621b6c406f47d89f077576cabc56e1309dc67429449723f66ad0dd2269060200160405180910390a150565b5f60018211611dd2575090565b8160017001000000000000000000000000000000008210611df85760809190911c9060401b5b680100000000000000008210611e135760409190911c9060201b5b6401000000008210611e2a5760209190911c9060101b5b620100008210611e3f5760109190911c9060081b5b6101008210611e535760089190911c9060041b5b60108210611e665760049190911c9060021b5b60048210611e725760011b5b600302600190811c90818581611e8a57611e8a6126bf565b048201901c90506001818581611ea257611ea26126bf565b048201901c90506001818581611eba57611eba6126bf565b048201901c90506001818581611ed257611ed26126bf565b048201901c90506001818581611eea57611eea6126bf565b048201901c90506001818581611f0257611f026126bf565b048201901c9050611f21818581611f1b57611f1b6126bf565b04821190565b90039392505050565b80825d5050565b5f5f60205f8451602086015f885af180611f50576040513d5f823e3d81fd5b50505f513d91508115611f67578060011415611f74565b6001600160a01b0384163b155b15611fb6576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610e82565b50505050565b5f611fe66e0100000000000000000000000000006dffffffffffffffffffffffffffff8416612b1d565b92915050565b5f6120076dffffffffffffffffffffffffffff831684612b9b565b9392505050565b5f61200761202461201f85856120f4565b61213b565b6c0100000000000000000000000061215b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526120b684826121d5565b611fb6576040516001600160a01b0384811660248301525f60448301526120ea91869182169063095ea7b390606401610f46565b611fb68482611f31565b5f815f03612100575f5ffd5b5f61210b848461221e565b90506f7fffffffffffffffffffffffffffffff6fffffffffffffffffffffffffffffffff82161115612007575f5ffd5b5f5f82600f0b121561214b575f5ffd5b611fe6604083600f0b901b6123a9565b5f815f0361216657505f5b5f83600f0b1215612175575f5ffd5b600f83900b6fffffffffffffffffffffffffffffffff8316810260401c90608084901c0277ffffffffffffffffffffffffffffffffffffffffffffffff8111156121bd575f5ffd5b60401b81198111156121cd575f5ffd5b019392505050565b5f5f5f5f60205f8651602088015f8a5af192503d91505f519050828015612214575081156122065780600114612214565b5f866001600160a01b03163b115b9695505050505050565b5f815f0361222a575f5ffd5b5f77ffffffffffffffffffffffffffffffffffffffffffffffff84116122655782604085901b8161225d5761225d6126bf565b04905061238d565b60c084811c640100000000811061227e576020918201911c5b620100008110612290576010918201911c5b61010081106122a1576008918201911c5b601081106122b1576004918201911c5b600481106122c1576002918201911c5b600281106122d0576001820191505b60bf820360018603901c6001018260ff0387901b816122f1576122f16126bf565b0492506fffffffffffffffffffffffffffffffff831115612310575f5ffd5b608085901c83026fffffffffffffffffffffffffffffffff8616840260c088901c604089901b82811015612345576001820391505b608084901b9290038281101561235c576001820391505b829003608084901c821461237257612372612bf2565b888181612381576123816126bf565b04870196505050505050505b6fffffffffffffffffffffffffffffffff811115612007575f5ffd5b5f815f036123b857505f919050565b81600170010000000000000000000000000000000082106123de5760809190911c9060401b5b6801000000000000000082106123f95760409190911c9060201b5b64010000000082106124105760209190911c9060101b5b6201000082106124255760109190911c9060081b5b61010082106124395760089190911c9060041b5b6010821061244c5760049190911c9060021b5b600882106124585760011b5b6001818581612469576124696126bf565b048201901c90506001818581612481576124816126bf565b048201901c90506001818581612499576124996126bf565b048201901c905060018185816124b1576124b16126bf565b048201901c905060018185816124c9576124c96126bf565b048201901c905060018185816124e1576124e16126bf565b048201901c905060018185816124f9576124f96126bf565b048201901c90505f818581612510576125106126bf565b0490508082106125205780612522565b815b95945050505050565b8015158114610aa9575f5ffd5b6001600160a01b0381168114610aa9575f5ffd5b5f5f5f5f5f60a08688031215612560575f5ffd5b853594506020860135935060408601356125798161252b565b925060608601356125898161252b565b9150608086013561259981612538565b809150509295509295909350565b5f5f5f5f5f5f5f5f5f5f6101408b8d0312156125c1575f5ffd5b8a356125cc81612538565b995060208b01356125dc81612538565b985060408b01356125ec81612538565b975060608b01356125fc81612538565b965060808b013561260c81612538565b955060a08b013561261c81612538565b945060c08b013561262c81612538565b935060e08b013561263c81612538565b999c989b509699959894979396509194610100810135936101209091013592509050565b5f60208284031215612670575f5ffd5b813561200781612538565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082028115828204841417611fe657611fe661267b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f826126fa576126fa6126bf565b500490565b81810381811115611fe657611fe661267b565b5f60208284031215612722575f5ffd5b5051919050565b80820180821115611fe657611fe661267b565b5f8261274a5761274a6126bf565b500690565b63ffffffff8281168282160390811115611fe657611fe661267b565b5f8160020b8360020b80612781576127816126bf565b5f1981147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000831416156127b6576127b661267b565b90059392505050565b5f8260020b8260020b028060020b91508082146127de576127de61267b565b5092915050565b5f8160020b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000081036128195761281961267b565b5f0392915050565b5f60208284031215612831575f5ffd5b815161200781612538565b81516001600160a01b031681526101608101602083015161286860208401826001600160a01b03169052565b50604083015161287f604084018262ffffff169052565b506060830151612894606084018260020b9052565b5060808301516128a9608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e08301526101008301516101008301526101208301516128f06101208401826001600160a01b03169052565b5061014092830151919092015290565b5f5f5f5f60808587031215612913575f5ffd5b845160208601519094506fffffffffffffffffffffffffffffffff8116811461293a575f5ffd5b6040860151606090960151949790965092505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f82825180855260208501945060208160051b830101602085015f5b838110156129cc57601f198584030188526129b6838351612950565b602098890198909350919091019060010161299a565b50909695505050505050565b602081526129f26020820183516001600160a01b03169052565b602082015160408201525f6040830151612a1760608401826001600160a01b03169052565b5060608301516001600160a01b03811660808401525060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e083015260e0830151612a7761010084018261ffff169052565b50610100830151610140610120840152612a95610160840182612950565b9050610120840151601f1984830301610140850152612522828261297e565b602081525f825160806020840152612acf60a0840182612950565b90506001600160a01b03602085015116604084015260408401516060840152606084015160808401528091505092915050565b5f60208284031215612b12575f5ffd5b81516120078161252b565b5f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff84167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183021692508183048114821517612b9357612b9361267b565b505092915050565b5f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff831680612bc857612bc86126bf565b807bffffffffffffffffffffffffffffffffffffffffffffffffffffffff84160491505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffdfea26469706673582212202d51b21d98b8daffddf02d51384adc9842669919255dfbf01ca31b79200f8c6364736f6c634300081c0033a26469706673582212204cd54079c2523dd3966a91c73ae7e6eb8ce6704ca551bb92a434af1cb61ec1e764736f6c634300081c0033