0 txs
41 calls
constructor
constructor()
functions
assetFee
viewfunction assetFee(address) view returns (uint24)
chainlinkOracle
viewfunction chainlinkOracle(address) view returns (address)
closeSwapRequests
viewfunction closeSwapRequests(bytes32) view returns (bytes32 key, uint256 longAmountFromGMX, uint256 shortAmountFromGMX, uint256 longAmountAvailableToSwap, uint256 shortAmountAvailableToSwap, uint256 leftOver, address longToken, address gmMarketToken, bool done)
eighteenDecimalAsset
viewfunction eighteenDecimalAsset(address) view returns (bool)
estimatePositionProfit
viewfunction estimatePositionProfit(bytes32 key, uint256 _returnedLongToken, uint256 _returnedShortToken) view returns (uint256)
getDepositRecord
viewfunction getDepositRecord(bytes32 key) view returns (tuple)
getEstimatedMarketTokenPrice
viewfunction getEstimatedMarketTokenPrice(address longToken) view returns (int256)
getLatestData
viewfunction getLatestData(address _token, bool _inDecimal) view returns (uint256)
getMarketTokenPrice
viewfunction getMarketTokenPrice(address longToken, bytes32 pnlFactorType, bool maximize) view returns (int256)
getPositionDebt
viewfunction getPositionDebt(address _user, uint256 _positionID) view returns (tuple)
getWithdrawRecord
viewfunction getWithdrawRecord(bytes32 key) view returns (tuple)
isOrderCreatedForKey
viewfunction isOrderCreatedForKey(bytes32) view returns (bool)
isOrderForMultipleSwap
viewfunction isOrderForMultipleSwap(bytes32) view returns (bool)
manualWithdraw
viewfunction manualWithdraw(address) view returns (bool)
orderRefunded
viewfunction orderRefunded(bytes32) view returns (uint256 feesRefunded, uint256 amountRefunded, uint256 longTokenAmountReturned, uint256 shortTokenAmountReturned, uint256 gmTokensRefunded, uint256 depositOrWithdrawal, bool cancelled)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
RoleStore
viewfunction RoleStore() view returns (address)
sixDecimalAsset
viewfunction sixDecimalAsset(address) view returns (bool)
strategyAddresses
viewfunction strategyAddresses() view returns (address USDC, address WaterContract, address VodkaV2, address univ3Router, address dataStore, address oracle, address reader, address depositHandler, address withdrawalHandler)
tempPayableAddress
viewfunction tempPayableAddress() view returns (address)
userRefunds
viewfunction userRefunds(address, uint256) view returns (bytes32)
userToRefund
viewfunction userToRefund(bytes32) view returns (address)
VodkaV2Swapper
viewfunction VodkaV2Swapper() view returns (address)
WETH
viewfunction WETH() view returns (address)
WrappedBTC
viewfunction WrappedBTC() view returns (address)
afterDepositCancellation
nonpayablefunction afterDepositCancellation(bytes32 key, tuple deposit, tuple eventData)
afterDepositExecution
nonpayablefunction afterDepositExecution(bytes32 key, tuple deposit, tuple eventData)
afterWithdrawalCancellation
nonpayablefunction afterWithdrawalCancellation(bytes32 key, tuple withdrawal, tuple eventData)
afterWithdrawalExecution
nonpayablefunction afterWithdrawalExecution(bytes32 key, tuple withdrawal, tuple eventData)
executeSwap
nonpayablefunction executeSwap(uint256 _amount, address _tokenIn, address _tokenOut, address _recipient) returns (uint256)
finalizeClosePosition
nonpayablefunction finalizeClosePosition(bytes32 key, uint256 _received)
fixWithdrawalManual
nonpayablefunction fixWithdrawalManual(bytes32 key, uint256 _receivedLongAmount, uint256 _receivedShortAmount)
initialize
nonpayablefunction initialize(address _USDC, address _VodkaV2)
refundExecutionFee
payablefunction refundExecutionFee(bytes32 key, tuple eventData) payable
renounceOwnership
nonpayablefunction renounceOwnership()
requestGMXV2Swap
payablefunction requestGMXV2Swap(bytes32 _key) payable
setChainlinkOracleForAsset
nonpayablefunction setChainlinkOracleForAsset(address _token, address _oracle)
setEighteenDecimalAsset
nonpayablefunction setEighteenDecimalAsset(address _asset, bool _eighteenDecimal)
setManualWithdraw
nonpayablefunction setManualWithdraw(address _token, bool _manual)
setSixDecimalAsset
nonpayablefunction setSixDecimalAsset(address _asset, bool _sixDecimal)
setStrategyParams
nonpayablefunction setStrategyParams(address _univ3Router, address _dataStore, address _oracle, address _reader, address _depositHandler, address _withdrawalHandler)
setUniv3Fee
nonpayablefunction setUniv3Fee(uint24 _univ3Fee, address _asset)
setVodkaV2Swapper
nonpayablefunction setVodkaV2Swapper(address _VodkaV2Swapper)
takeAll
nonpayablefunction takeAll(address _inputAsset)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
ChainlinkOracleSet
event ChainlinkOracleSet(address token, address oracle)
CloseFinalized
event CloseFinalized(bytes32 key, uint256 shortTokenAmount, uint256 longTokenAmount)
Initialized
event Initialized(uint8 version)
KeysPendingSwap
event KeysPendingSwap(bytes32 key, uint256 longAmount, uint256 shortAmount, bool isOrderForMultipleSwap, uint256 longAmountAvailableToSwap, uint256 shortAmountAvailableToSwap)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
RepayDepositFailure
event RepayDepositFailure(address user, uint256 amount, string errorMessage, string stackTrace)
SecondSwapRequest
event SecondSwapRequest(bytes32 key, uint256 leftOver)
StrategyParamsSet
event StrategyParamsSet(address univ3Router, address dataStore, address oracle, address reader, address depositHandler, address withdrawalHandler)
Unpaused
event Unpaused(address account)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615e1380620000f36000396000f3fe6080604052600436106102115760003560e01c80630afda3511461021d5780630fa63fe41461023f578063100e196d1461028b57806319c2d37e1461033657806321d41b32146103635780632b70b891146103a45780632f2708a2146103c45780633201ab4d146103e4578063395aef8e146104045780633a2cb99f146104475780633c37224014610475578063485cc955146104885780635c975abb146104a85780635ce98de7146104c05780635f82eba8146104e0578063715018a61461050057806372ccfa6014610515578063753672d51461053557806376f1ef10146105565780637db2bd3e146105765780638c4d0d60146105a75780638da5cb5b146105d857806394fce92b146105ed57806396e1ae101461061a5780639a4a1a9a1461064b5780639f0938711461066b5780639f17af99146106fd578063a5ab05ab1461071d578063a5efb24d1461073d578063a7c49f5a1461075d578063a8f098d214610794578063ad5c4648146107b5578063b2fd9495146107d6578063b63d5354146107e9578063ba871dcd14610809578063bf3810a914610829578063c4b2b98014610849578063c9888ec114610869578063c9ac221a14610889578063cc662466146108a9578063ceb0c445146108c9578063e88c3561146108f6578063f2fde38b146109c0578063f5faa892146109e0578063fd77d17514610a11578063ff06f7b214610a3157600080fd5b3661021857005b600080fd5b34801561022957600080fd5b5061023d610238366004613d1d565b610a51565b005b34801561024b57600080fd5b5061027261025a366004613d56565b61010c6020526000908152604090205462ffffff1681565b60405162ffffff90911681526020015b60405180910390f35b34801561029757600080fd5b5060c95460ca5460cb5460cc5460cd5460ce5460cf5460d05460d1546102dc986001600160a01b03908116988116978116968116958116948116938116928116911689565b604080516001600160a01b039a8b168152988a1660208a01529689169688019690965293871660608701529186166080860152851660a0850152841660c0840152831660e083015290911661010082015261012001610282565b34801561034257600080fd5b50610356610351366004613d87565b610a85565b6040516102829190613dc2565b34801561036f57600080fd5b5061039461037e366004613d56565b6101146020526000908152604090205460ff1681565b6040519015158152602001610282565b3480156103b057600080fd5b5061023d6103bf366004613dd0565b610b12565b3480156103d057600080fd5b5061023d6103df366004613d1d565b610ca3565b3480156103f057600080fd5b5061023d6103ff366004613dfc565b610cd7565b34801561041057600080fd5b5061043a61041f366004613d56565b60d4602052600090815260409020546001600160a01b031681565b6040516102829190613e1e565b34801561045357600080fd5b50610467610462366004613d56565b61110e565b604051908152602001610282565b61023d610483366004614f4f565b611389565b34801561049457600080fd5b5061023d6104a3366004614f95565b611622565b3480156104b457600080fd5b5060975460ff16610394565b3480156104cc57600080fd5b5061023d6104db366004613d56565b61177c565b3480156104ec57600080fd5b5060d55461043a906001600160a01b031681565b34801561050c57600080fd5b5061023d6117a7565b34801561052157600080fd5b5061023d610530366004615072565b6117bb565b34801561054157600080fd5b506101135461043a906001600160a01b031681565b34801561056257600080fd5b506104676105713660046151d9565b6118d4565b34801561058257600080fd5b50610394610591366004613d56565b61010d6020526000908152604090205460ff1681565b3480156105b357600080fd5b506103946105c236600461522c565b6101126020526000908152604090205460ff1681565b3480156105e457600080fd5b5061043a611936565b3480156105f957600080fd5b5061060d61060836600461522c565b611945565b6040516102829190615245565b34801561062657600080fd5b5061039461063536600461522c565b6101116020526000908152604090205460ff1681565b34801561065757600080fd5b506104676106663660046152b7565b6119f0565b34801561067757600080fd5b506106c661068636600461522c565b60d2602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949593949293919290919060ff1687565b604080519788526020880196909652948601939093526060850191909152608084015260a0830152151560c082015260e001610282565b34801561070957600080fd5b5061023d610718366004613d1d565b611cce565b34801561072957600080fd5b5061023d610738366004613d56565b611d02565b34801561074957600080fd5b5061023d6107583660046152f9565b611dee565b34801561076957600080fd5b5061043a61077836600461522c565b610110602052600090815260409020546001600160a01b031681565b3480156107a057600080fd5b5061010a5461043a906001600160a01b031681565b3480156107c157600080fd5b5061010b5461043a906001600160a01b031681565b61023d6107e436600461522c565b611e92565b3480156107f557600080fd5b5060d65461043a906001600160a01b031681565b34801561081557600080fd5b50610467610824366004613dd0565b6123a3565b34801561083557600080fd5b50610467610844366004613d1d565b6125ad565b34801561085557600080fd5b5061023d61086436600461531f565b612835565b34801561087557600080fd5b50610467610884366004613d87565b6128eb565b34801561089557600080fd5b5061023d6108a4366004615072565b61291c565b3480156108b557600080fd5b5061023d6108c4366004614f95565b612d91565b3480156108d557600080fd5b506108e96108e436600461522c565b612ded565b6040516102829190615496565b34801561090257600080fd5b5061096e61091136600461522c565b61010f60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701549596949593949293919290916001600160a01b0391821691811690600160a01b900460ff1689565b60408051998a5260208a0198909852968801959095526060870193909352608086019190915260a08501526001600160a01b0390811660c08501521660e0830152151561010082015261012001610282565b3480156109cc57600080fd5b5061023d6109db366004613d56565b612ec2565b3480156109ec57600080fd5b506103946109fb366004613d56565b61010e6020526000908152604090205460ff1681565b348015610a1d57600080fd5b5061023d610a2c36600461531f565b612f38565b348015610a3d57600080fd5b5061023d610a4c36600461551a565b613097565b610a59613165565b6001600160a01b0391909116600090815261011460205260409020805460ff1916911515919091179055565b6040805180820182526000808252602082015260cb5491516301e73a5f60e61b815290916001600160a01b0316906379ce97c090610ac9908690869060040161559c565b6040805180830381865afa158015610ae5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0991906155e5565b90505b92915050565b610b1a613165565b6000610b2584611945565b60c954909150610b40906001600160a01b03163330856131c4565b60a0810151610b5a906001600160a01b03163330866131c4565b60cb5460c954610b77916001600160a01b0391821691168461322f565b60cb5460a0820151610b96916001600160a01b0391821691168561322f565b8060800151610c255760cb546001600160a01b0316639137be7a858585610bbe8383836123a3565b6040518563ffffffff1660e01b8152600401610bdd9493929190615601565b6020604051808303816000875af1158015610bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c209190615627565b610c9c565b60cb54604051635f4e6fb760e11b81526001600160a01b039091169063be9cdf6e90610c5990879087908790600401615644565b6020604051808303816000875af1158015610c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9c9190615627565b5050505050565b610cab613165565b6001600160a01b0391909116600090815261010d60205260409020805460ff1916911515919091179055565b610cdf61324e565b610113546001600160a01b0316331480610d115750610cfc611936565b6001600160a01b0316336001600160a01b0316145b610d505760405162461bcd60e51b815260206004820152600b60248201526a139bdd08185b1b1bddd95960aa1b60448201526064015b60405180910390fd5b6000610d5b83611945565b600084815261010f602052604080822083519184015193945092610d7f9190610a85565b6000868152610111602052604090205490915060ff168015610db157506000858152610112602052604090205460ff16155b15610eaf5780516001830154610dc8908690615670565b610dd29190615683565b600383015560008581526101126020908152604091829020805460ff191660011790558151808301909252601382527214d958dbdb99081cddd85c081c995c5d595cdd606a1b90820152610e25906132a7565b610e646040518060400160405280601981526020017806c6f6e67416d6f756e74417661696c61626c65546f5377617603c1b81525083600301546132ea565b815460038301546040517f9bb3f265562ad4d42fe6bc8ec0cc15e82e766e4e3ba72c75c66d2fb3fdd6f1ab92610ea292908252602082015260400190565b60405180910390a16110fd565b80516005830154600090610ec4908790615670565b9050610ef76040518060400160405280600f81526020016e3a37ba30b629b437b93a2a37b5b2b760891b815250826132ea565b610f276040518060400160405280600e81526020016d3a37ba30b62637b733aa37b5b2b760911b815250836132ea565b610f56604051806040016040528060098152602001683632b33a1037bb32b960b91b81525085600501546132ea565b60cb5460c954610f73916001600160a01b0391821691168361322f565b60cb5460a0860151610f92916001600160a01b0391821691168461322f565b60078401805460ff60a01b1916600160a01b17905560808501516110475760cb54600185015460028601546001600160a01b0390921691639137be7a918a9186918691610fe09185916123a3565b6040518563ffffffff1660e01b8152600401610fff9493929190615601565b6020604051808303816000875af115801561101e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110429190615627565b6110be565b60cb54604051635f4e6fb760e11b81526001600160a01b039091169063be9cdf6e9061107b908a9086908690600401615644565b6020604051808303816000875af115801561109a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110be9190615627565b507f9c341c91384ec36b9d393c98615da5bf201c12f801111ca44b299c61a6b3730b8782846040516110f293929190615644565b60405180910390a150505b50505061110a6001606555565b5050565b60cb54604051639c735fbb60e01b815260009182916001600160a01b0390911690639c735fbb90611143908690600401613e1e565b60c060405180830381865afa158015611160573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118491906156a1565b90506000604051806080016040528083604001516001600160a01b0316815260200183606001516001600160a01b0316815260200183600001516001600160a01b0316815260200183602001516001600160a01b03168152509050600060405180604001604052806111fb856060015160016125ad565b815260200161120f856060015160016125ad565b81525090506000604051806040016040528061122c8860016125ad565b815260200161123c8860016125ad565b90526040805180820190915260c9549192506000918190611267906001600160a01b031660016125ad565b815260c954602090910190611286906001600160a01b031660016125ad565b905260cf5460cd546040519293506000926001600160a01b039283169263095ce6c592169088908890889088906112ef906020016020808252601b908201527a4d41585f504e4c5f464143544f525f464f525f4445504f5349545360281b604082015260600190565b6040516020818303038152906040528051906020012060006040518863ffffffff1660e01b8152600401611329979695949392919061574b565b61018060405180830381865afa158015611347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136b91906157d2565b50905061137d64e8d4a510008261589c565b98975050505050505050565b60d6546040516001600160a01b039091169063ac4ab3fb9033906113af906020016158ca565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b81526004016113e292919061559c565b602060405180830381865afa1580156113ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114239190615627565b61143f5760405162461bcd60e51b8152600401610d47906158ee565b600061144a83612ded565b9050600061145784611945565b82519091506001600160a01b03166115c75760cb54604051631f6f85f960e11b8152600481018690526001600160a01b0390911690633edf0bf290602401602060405180830381865afa1580156114b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d69190615627565b1561156e5760cb546040805163aced166160e01b815290516001600160a01b039092169163aced1661916004808201926020929091908290030181865afa158015611525573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115499190615917565b60d580546001600160a01b0319166001600160a01b03929092169190911790556115e9565b8060800151156115a15760e081015160d580546001600160a01b0319166001600160a01b039092169190911790556115e9565b805160d580546001600160a01b0319166001600160a01b039092169190911790556115e9565b815160d580546001600160a01b0319166001600160a01b039092169190911790555b60d5546040516001600160a01b03909116903480156108fc02916000818181858888f19350505050158015610c9c573d6000803e3d6000fd5b600054610100900460ff16158080156116425750600054600160ff909116105b80611663575061165130613336565b158015611663575060005460ff166001145b6116c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610d47565b6000805460ff1916600117905580156116e9576000805461ff0019166101001790555b60cb80546001600160a01b038085166001600160a01b03199283161790925560c9805492861692909116919091179055611721613345565b611729613374565b6117316133a3565b8015611777576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b611784613165565b61011380546001600160a01b0319166001600160a01b0392909216919091179055565b6117af613165565b6117b960006133d2565b565b60d6546040516001600160a01b039091169063ac4ab3fb9033906117e1906020016158ca565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b815260040161181492919061559c565b602060405180830381865afa158015611831573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118559190615627565b6118715760405162461bcd60e51b8152600401610d47906158ee565b60cb546040516365f1680b60e11b8152600481018590526001600160a01b039091169063cbe2d01690602401600060405180830381600087803b1580156118b757600080fd5b505af11580156118cb573d6000803e3d6000fd5b50505050505050565b60cb546000906001600160a01b0316331461191f5760405162461bcd60e51b815260206004820152600b60248201526a2737ba102b37b235b0ab1960a91b6044820152606401610d47565b61192b85858585613424565b90505b949350505050565b6033546001600160a01b031690565b6040805161010081018252600080825260208201819052818301819052606082018190526080820181905260a0820181905260c0820181905260e082015260cb54915163191618a160e21b81526004810184905290916001600160a01b03169063645862849060240161010060405180830381865afa1580156119cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0c9190615934565b60cb54604051639c735fbb60e01b815260009182916001600160a01b0390911690639c735fbb90611a25908890600401613e1e565b60c060405180830381865afa158015611a42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6691906156a1565b9050611a70613ca0565b60408051608081018252838201516001600160a01b0390811682526060808601805183166020808601919091528751841685870152808801518416928501929092529085018990528715158585015260ce5490519351631773dc6560e21b815292936000939190921691635dcf719491611aed9190600401613e1e565b6040805180830381865afa158015611b09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2d91906155e5565b60ce548551604051631773dc6560e21b81529293506000926001600160a01b0390921691635dcf719491611b6391600401613e1e565b6040805180830381865afa158015611b7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba391906155e5565b60ce546020870151604051631773dc6560e21b81529293506000926001600160a01b0390921691635dcf719491611bdc91600401613e1e565b6040805180830381865afa158015611bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1c91906155e5565b60cf5460cd5460208801516040808a0151905163095ce6c560e01b81529495506001600160a01b039384169463095ce6c594611c669416928a928a928a928a92909160040161574b565b61018060405180830381865afa158015611c84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca891906157d2565b50808652611cbc9064e8d4a510009061589c565b94859052509298975050505050505050565b611cd6613165565b6001600160a01b0391909116600090815261010e60205260409020805460ff1916911515919091179055565b611d0a613165565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190611d39903090600401613e1e565b602060405180830381865afa158015611d56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7a91906159e8565b60405163a9059cbb60e01b81529091506001600160a01b0383169063a9059cbb90611dab903390859060040161559c565b6020604051808303816000875af1158015611dca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117779190615627565b611df6613165565b6001600160a01b038116611e1c5760405162461bcd60e51b8152600401610d4790615a01565b6113888262ffffff161115611e625760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40e8dede40d0d2ced60a31b6044820152606401610d47565b6001600160a01b0316600090815261010c60205260409020805462ffffff191662ffffff92909216919091179055565b611e9a61324e565b60cb546040805163aced166160e01b815290516001600160a01b039092169163aced1661916004808201926020929091908290030181865afa158015611ee4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f089190615917565b6001600160a01b0316336001600160a01b031614611f555760405162461bcd60e51b815260206004820152600a6024820152692737ba1035b2b2b832b960b11b6044820152606401610d47565b6000611f6082611945565b600083815261010f602052604090206006810154919250906001600160a01b0316611fba5760405162461bcd60e51b815260206004820152600a602482015269139bc81c995c5d595cdd60b21b6044820152606401610d47565b6007810154600160a01b900460ff1615611fff5760405162461bcd60e51b8152600401610d4790602080825260049082015263646f6e6560e01b604082015260600190565b60068101546007820154600085815261011160205260409020546001600160a01b03928316929091169060ff16801561204857506000858152610112602052604090205460ff16155b1561217b5760008360040154116120715760405162461bcd60e51b8152600401610d4790615a27565b60c9546101135460048086015460405163095ea7b360e01b81526001600160a01b039485169463095ea7b3946120ab94911692910161559c565b6020604051808303816000875af11580156120ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ee9190615627565b506101135460c95460048581015460008981526101106020526040908190205490516341c70b0160e11b81526001600160a01b039586169563838e160295349561214495918316948a948f949091169101615a4a565b6000604051808303818588803b15801561215d57600080fd5b505af1158015612171573d6000803e3d6000fd5b5050505050612392565b6003830154661550f7dca70000906121a55760405162461bcd60e51b8152600401610d4790615a27565b61011354600385015460405163095ea7b360e01b81526001600160a01b038681169363095ea7b3936121de93929091169160040161559c565b6020604051808303816000875af11580156121fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122219190615627565b5061011354600385015460008881526101106020526040908190205490516341c70b0160e11b81526001600160a01b039384169363838e1602938693612274938a938a938f939092911690600401615a4a565b6000604051808303818588803b15801561228d57600080fd5b505af11580156122a1573d6000803e3d6000fd5b5050506000888152610111602052604090205460ff169150612390905057662aa1efb94e00003410156123085760405162461bcd60e51b815260206004820152600f60248201526e4e6f7420656e6f756768206665657360881b6044820152606401610d47565b846080015115612355578460e001516001600160a01b03166108fc829081150290604051600060405180830381858888f1935050505015801561234f573d6000803e3d6000fd5b50612390565b84516040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561238e573d6000803e3d6000fd5b505b505b505050506123a06001606555565b50565b6000806123af85611945565b60cb548151604080840151905163de91a5e560e01b81529394506000936001600160a01b039093169263de91a5e5926123ec92909160040161559c565b61018060405180830381865afa15801561240a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242e9190615aa0565b9050600061244483600001518460400151610a85565b905060006124578460a0015160006125ad565b61010a5460a086015191925060009182916001600160a01b039081169116036124c55768056bc75e2d6310000061248e848b615b69565b6124989190615b80565b915068056bc75e2d631000008385600001516124b49190615b69565b6124be9190615b80565b9050612512565b68327cb2734119d3b7a9601e1b6124dc848b615b69565b6124e69190615b80565b915068327cb2734119d3b7a9601e1b8385600001516125059190615b69565b61250f9190615b80565b90505b60c95460009061252c906001600160a01b031660016125ad565b9050600069d3c21bcecceda1000000612545838c615b69565b61254f9190615b80565b9050600061255d8286615670565b885160208901519192506000916125749087615670565b61257e9190615670565b9050600081831161259057600061259a565b61259a8284615683565b9f9e505050505050505050505050505050565b600080600061010960009054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015612606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262a9190615bab565b509194509250508215905060006126418342615683565b9050610e10811161268c5760405162461bcd60e51b815260206004820152601560248201527423b930b1b2903832b934b7b2103737ba1037bb32b960591b6044820152606401610d47565b816126cd5760405162461bcd60e51b815260206004820152601160248201527029b2b8bab2b731b2b91034b9903237bbb760791b6044820152606401610d47565b6001600160a01b03808816600090815260d46020526040808220548151633fabe5a360e21b815291519293169163feaf968c9160048082019260a0929091908290030181865afa158015612725573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127499190615bab565b5050506001600160a01b038a16600090815261010d6020526040812054919350915060ff161561279657612782826402540be400615b69565b61278f90620f4240615b69565b905061137d565b61010a546001600160a01b03908116908a16036127c8576127bc826402540be400615b69565b61278f90612710615b69565b6001600160a01b0389166000908152610114602052604090205460ff161561280b57662386f26fc10000612801836402540be400615b69565b61278f9190615b80565b620f424061281e836402540be400615b69565b6128289190615b80565b9998505050505050505050565b60d6546040516001600160a01b039091169063ac4ab3fb90339061285b906020016158ca565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b815260040161288e92919061559c565b602060405180830381865afa1580156128ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128cf9190615627565b6117775760405162461bcd60e51b8152600401610d47906158ee565b60d3602052816000526040600020818154811061290757600080fd5b90600052602060002001600091509150505481565b60d6546040516001600160a01b039091169063ac4ab3fb903390612942906020016158ca565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b815260040161297592919061559c565b602060405180830381865afa158015612992573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129b69190615627565b6129d25760405162461bcd60e51b8152600401610d47906158ee565b60006129dd84611945565b905060006129f382600001518360400151610a85565b90506129fd613ca0565b6000846020015160000151600081518110612a1a57612a1a615bfb565b60200260200101516020015190506000856020015160000151600181518110612a4557612a45615bfb565b60209081029190910181015181015160a08701516001600160a01b0316600090815261010e90925260409091205490915060ff16612cf3576000808560000151841115612ae1578551600090612a9b9086615683565b9050612aa78186615683565b60a089015160c954919450612ac8918391906001600160a01b031630613424565b60808701819052612ad99085615670565b915050612b77565b6000866020015184612af39190615683565b60c95460a08a0151919250612b149183916001600160a01b03169030613424565b60a087018190528751600091612b2b908890615670565b612b359190615683565b60a08a015160c954919250600091612b589184916001600160a01b031630613424565b905088600001519450808960200151612b719190615670565b93505050505b670de0b6b3a764000082612b908960a0015160016125ad565b612b9a9190615b69565b612ba49190615b80565b60c086015260cb5460c954612bc6916001600160a01b0391821691168361322f565b60cb5460a0880151612be5916001600160a01b0391821691168461322f565b8660800151612c745760cb546001600160a01b0316639137be7a8b8484612c0d838a8a6123a3565b6040518563ffffffff1660e01b8152600401612c2c9493929190615601565b6020604051808303816000875af1158015612c4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6f9190615627565b612ceb565b60cb54604051635f4e6fb760e11b81526001600160a01b039091169063be9cdf6e90612ca8908d9086908690600401615644565b6020604051808303816000875af1158015612cc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ceb9190615627565b505050612d87565b60cb5460a0860151604051639c735fbb60e01b81526000926001600160a01b031691639c735fbb91612d289190600401613e1e565b60c060405180830381865afa158015612d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6991906156a1565b9050612d85898484886000015189602001518660400151613710565b505b5050505050505050565b612d99613165565b6001600160a01b038216612dbf5760405162461bcd60e51b8152600401610d4790615a01565b6001600160a01b03918216600090815260d46020526040902080546001600160a01b03191691909216179055565b612e5460405180610120016040528060006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600061ffff16815260200160006001600160a01b031681525090565b60cb5460405163546fcf3960e01b8152600481018490526001600160a01b039091169063546fcf399060240161012060405180830381865afa158015612e9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0c9190615c11565b612eca613165565b6001600160a01b038116612f2f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d47565b6123a0816133d2565b60d6546040516001600160a01b039091169063ac4ab3fb903390612f5e906020016158ca565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b8152600401612f9192919061559c565b602060405180830381865afa158015612fae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd29190615627565b612fee5760405162461bcd60e51b8152600401610d47906158ee565b60cb5460208201515180516001600160a01b039092169163862a820891869160009061301c5761301c615bfb565b6020026020010151602001516040518363ffffffff1660e01b815260040161304e929190918252602082015260400190565b6020604051808303816000875af115801561306d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130919190615627565b50505050565b61309f613165565b60cc80546001600160a01b038881166001600160a01b0319928316811790935560cd8054898316908416811790915560ce8054898416908516811790915560cf8054898516908616811790915560d08054898616908716811790915560d18054958916959096168517909555604080519687526020870193909352918501526060840152608083019190915260a08201527f03f1afd7ce30865f51a6e0b71bd812eb2a48c45e187b710c8e67eaaa53c15c579060c00160405180910390a1505050505050565b3361316e611936565b6001600160a01b0316146117b95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d47565b6040516001600160a01b03808516602483015283166044820152606481018290526130919085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526139a1565b6117778363a9059cbb60e01b84846040516024016131f892919061559c565b6002606554036132a05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610d47565b6002606555565b6123a0816040516024016132bb9190615ce9565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052613a76565b61110a8282604051602401613300929190615cfc565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b179052613a76565b6001606555565b6001600160a01b03163b151590565b600054610100900460ff1661336c5760405162461bcd60e51b8152600401610d4790615d1e565b6117b9613a7f565b600054610100900460ff1661339b5760405162461bcd60e51b8152600401610d4790615d1e565b6117b9613aaf565b600054610100900460ff166133ca5760405162461bcd60e51b8152600401610d4790615d1e565b6117b9613ae2565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000846000036134365750600061192e565b60cc5460405163095ea7b360e01b81526000916001600160a01b038088169263095ea7b39261346b9216908a9060040161559c565b6020604051808303816000875af115801561348a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134ae9190615627565b5061010b546001600160a01b038681169116148015906134dd575061010b546001600160a01b03858116911614155b156135fe576040805160a0810182526001600160a01b03878116600090815261010c60209081528482205461010b5480851684528684205460608d811b6001600160601b031990811660c08a015260e894851b6001600160e81b031990811660d48b015293821b811660d78a01529190931b90911660eb8701528a821b1660ee860152855160e281870301815261010286018752855288841691850191909152428486015283018a9052608083015260cc54925163c04b8d5960e01b81529192169063c04b8d59906135b3908490600401615d69565b6020604051808303816000875af11580156135d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135f691906159e8565b91505061192b565b60408051610100810182526001600160a01b038781168083528782166020808501918252600092835261010c90528482205462ffffff90811685870190815289851660608701908152426080880190815260a088018f815260c0890187815260e08a0197885260cc549a5163414bf38960e01b81528a518a16600482015296518916602488015293519094166044860152905186166064850152516084840152905160a48301525160c48201529051821660e48201529192169063414bf38990610104016020604051808303816000875af11580156136e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061370591906159e8565b979650505050505050565b600086815261010f602052604081209061372988611945565b8883556001830188905560028301879055905084871161374a576000613754565b6137548588615683565b600383015560a08101516006830180546001600160a01b0319166001600160a01b039092169190911790556040805180820190915260118152700d8dedcce82dadeeadce88ce4deda8e9ab607b1b60208201526137b190886132ea565b6137e06040518060400160405280600d81526020016c6c6f6e674465627456616c756560981b815250866132ea565b6007820180546001600160a01b038086166001600160a01b031992831617909255825160008b8152610110602052604090208054919093169116179055600382015415801561382e57508386115b1561390e5761386d6040518060400160405280601981526020017805265717565737420666f72206d756c7469706c65207377617603c1b8152506132a7565b6138778487615683565b6004830181905560408051808201909152601a815279073686f7274416d6f756e74417661696c61626c65546f537761760341b60208201526138b8916132ea565b6138e86040518060400160405280600e81526020016d73686f72744465627456616c756560901b815250856132ea565b60058201849055600088815261011160205260409020805460ff19166001179055613916565b600582018690555b6001820154600283015460008a81526101116020908152604091829020546003870154600488015484518f8152938401969096529282019390935260ff90921615156060830152608082015260a08101919091527f41aa0b642d7539321de3afda61eeb8c6bbf79ab4ea7a567e420c9663a846a7599060c00160405180910390a15050505050505050565b60006139f6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613b099092919063ffffffff16565b9050805160001480613a17575080806020019051810190613a179190615627565b6117775760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610d47565b6123a081613b18565b600054610100900460ff16613aa65760405162461bcd60e51b8152600401610d4790615d1e565b6117b9336133d2565b600054610100900460ff16613ad65760405162461bcd60e51b8152600401610d4790615d1e565b6097805460ff19169055565b600054610100900460ff1661332f5760405162461bcd60e51b8152600401610d4790615d1e565b606061192e8484600085613b39565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b606082471015613b9a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610d47565b600080866001600160a01b03168587604051613bb69190615dc1565b60006040518083038185875af1925050503d8060008114613bf3576040519150601f19603f3d011682016040523d82523d6000602084013e613bf8565b606091505b50915091506137058783838760608315613c71578251600003613c6a57613c1e85613336565b613c6a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d47565b508161192e565b61192e8383815115613c865781518083602001fd5b8060405162461bcd60e51b8152600401610d479190615ce9565b604051806101000160405280600081526020016000801916815260200160001515815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b03811681146123a057600080fd5b8035613d0a81613cea565b919050565b80151581146123a057600080fd5b60008060408385031215613d3057600080fd5b8235613d3b81613cea565b91506020830135613d4b81613d0f565b809150509250929050565b600060208284031215613d6857600080fd5b8135613d7381613cea565b9392505050565b6001600160a01b03169052565b60008060408385031215613d9a57600080fd5b8235613da581613cea565b946020939093013593505050565b80518252602090810151910152565b60408101610b0c8284613db3565b600080600060608486031215613de557600080fd5b505081359360208301359350604090920135919050565b60008060408385031215613e0f57600080fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715613e6a57613e6a613e32565b60405290565b60405160e081016001600160401b0381118282101715613e6a57613e6a613e32565b604051606081016001600160401b0381118282101715613e6a57613e6a613e32565b60405161012081016001600160401b0381118282101715613e6a57613e6a613e32565b60405161016081016001600160401b0381118282101715613e6a57613e6a613e32565b60405161018081016001600160401b0381118282101715613e6a57613e6a613e32565b604051601f8201601f191681016001600160401b0381118282101715613f4557613f45613e32565b604052919050565b60006001600160401b03821115613f6657613f66613e32565b5060051b60200190565b600082601f830112613f8157600080fd5b81356001600160401b03811115613f9a57613f9a613e32565b613fad601f8201601f1916602001613f1d565b818152846020838601011115613fc257600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112613ff057600080fd5b8135602061400561400083613f4d565b613f1d565b82815260059290921b8401810191818101908684111561402457600080fd5b8286015b8481101561404857803561403b81613cea565b8352918301918301614028565b509695505050505050565b600082601f83011261406457600080fd5b8135602061407461400083613f4d565b82815260059290921b8401810191818101908684111561409357600080fd5b8286015b848110156140485780356001600160401b03808211156140b75760008081fd5b908801906040828b03601f19018113156140d15760008081fd5b6140d9613e48565b87840135838111156140eb5760008081fd5b6140f98d8a83880101613f70565b82525090830135908282111561410f5760008081fd5b61411d8c8984870101613fdf565b818901528652505050918301918301614097565b6000604080838503121561414457600080fd5b61414c613e48565b915082356001600160401b038082111561416557600080fd5b818501915085601f83011261417957600080fd5b8135602061418961400083613f4d565b82815260059290921b840181019181810190898411156141a857600080fd5b8286015b84811015614227578035868111156141c45760008081fd5b8701808c03601f19018913156141da5760008081fd5b6141e2613e48565b85820135888111156141f45760008081fd5b6142028e8883860101613f70565b825250908901359061421382613cea565b8086019190915283529183019183016141ac565b508752508681013594508285111561423e57600080fd5b61424a88868901614053565b81870152505050505092915050565b600082601f83011261426a57600080fd5b8135602061427a61400083613f4d565b828152600592831b850182019282820191908785111561429957600080fd5b8387015b8581101561438e5780356001600160401b03808211156142bd5760008081fd5b908901906040828c03601f19018113156142d75760008081fd5b6142df613e48565b88840135838111156142f15760008081fd5b6142ff8e8b83880101613f70565b82525081840135838111156143145760008081fd5b8085019450508c603f85011261432c57600092508283fd5b88840135925061433e61400084613f4d565b83815292861b8401820192898101908e85111561435b5760008081fd5b948301945b848610156143795785358252948a0194908a0190614360565b828b015250875250505092840192840161429d565b5090979650505050505050565b600060408083850312156143ae57600080fd5b6143b6613e48565b915082356001600160401b03808211156143cf57600080fd5b818501915085601f8301126143e357600080fd5b813560206143f361400083613f4d565b82815260059290921b8401810191818101908984111561441257600080fd5b8286015b848110156144845780358681111561442e5760008081fd5b8701808c03601f19018913156144445760008081fd5b61444c613e48565b858201358881111561445e5760008081fd5b61446c8e8883860101613f70565b82525090890135858201528352918301918301614416565b508752508681013594508285111561449b57600080fd5b61424a88868901614259565b600082601f8301126144b857600080fd5b813560206144c861400083613f4d565b828152600592831b85018201928282019190878511156144e757600080fd5b8387015b8581101561438e5780356001600160401b038082111561450b5760008081fd5b908901906040828c03601f19018113156145255760008081fd5b61452d613e48565b888401358381111561453f5760008081fd5b61454d8e8b83880101613f70565b82525081840135838111156145625760008081fd5b8085019450508c603f85011261457a57600092508283fd5b88840135925061458c61400084613f4d565b83815292861b8401820192898101908e8511156145a95760008081fd5b948301945b848610156145c75785358252948a0194908a01906145ae565b828b01525087525050509284019284016144eb565b600060408083850312156145ef57600080fd5b6145f7613e48565b915082356001600160401b038082111561461057600080fd5b818501915085601f83011261462457600080fd5b8135602061463461400083613f4d565b82815260059290921b8401810191818101908984111561465357600080fd5b8286015b848110156146c55780358681111561466f5760008081fd5b8701808c03601f19018913156146855760008081fd5b61468d613e48565b858201358881111561469f5760008081fd5b6146ad8e8883860101613f70565b82525090890135858201528352918301918301614657565b50875250868101359450828511156146dc57600080fd5b61424a888689016144a7565b600082601f8301126146f957600080fd5b8135602061470961400083613f4d565b828152600592831b850182019282820191908785111561472857600080fd5b8387015b8581101561438e5780356001600160401b038082111561474c5760008081fd5b908901906040828c03601f19018113156147665760008081fd5b61476e613e48565b88840135838111156147805760008081fd5b61478e8e8b83880101613f70565b82525081840135838111156147a35760008081fd5b8085019450508c603f8501126147bb57600092508283fd5b8884013592506147cd61400084613f4d565b83815292861b8401820192898101908e8511156147ea5760008081fd5b948301945b84861015614814578535935061480484613d0f565b838252948a0194908a01906147ef565b828b015250875250505092840192840161472c565b6000604080838503121561483c57600080fd5b614844613e48565b915082356001600160401b038082111561485d57600080fd5b818501915085601f83011261487157600080fd5b8135602061488161400083613f4d565b82815260059290921b840181019181810190898411156148a057600080fd5b8286015b8481101561491f578035868111156148bc5760008081fd5b8701808c03601f19018913156148d25760008081fd5b6148da613e48565b85820135888111156148ec5760008081fd5b6148fa8e8883860101613f70565b825250908901359061490b82613d0f565b8086019190915283529183019183016148a4565b508752508681013594508285111561493657600080fd5b61424a888689016146e8565b600082601f83011261495357600080fd5b8135602061496361400083613f4d565b82815260059290921b8401810191818101908684111561498257600080fd5b8286015b84811015614048576001600160401b0381358110156149a457600080fd5b813588016040818b03601f190112156149bc57600080fd5b6149c4613e48565b86820135838111156149d557600080fd5b6149e38c8983860101613f70565b8252506040820135838111156149f857600080fd5b8083019250508a603f830112614a0d57600080fd5b86820135614a1d61400082613f4d565b81815260059190911b830160400190888101908d831115614a3d57600080fd5b604085015b83811015614a75578681351115614a5857600080fd5b614a688f60408335890101613f70565b8352918a01918a01614a42565b50838a0152505085525050918301918301614986565b60006040808385031215614a9e57600080fd5b614aa6613e48565b915082356001600160401b0380821115614abf57600080fd5b818501915085601f830112614ad357600080fd5b81356020614ae361400083613f4d565b82815260059290921b84018101918181019089841115614b0257600080fd5b8286015b84811015614b9257803586811115614b1e5760008081fd5b8701808c03601f1901891315614b345760008081fd5b614b3c613e48565b8582013588811115614b4e5760008081fd5b614b5c8e8883860101613f70565b8252508982013588811115614b715760008081fd5b614b7f8e8883860101613f70565b8288015250845250918301918301614b06565b5087525086810135945082851115614ba957600080fd5b61424a88868901614942565b600082601f830112614bc657600080fd5b81356020614bd661400083613f4d565b82815260059290921b84018101918181019086841115614bf557600080fd5b8286015b84811015614048576001600160401b038135811015614c1757600080fd5b813588016040818b03601f19011215614c2f57600080fd5b614c37613e48565b8682013583811115614c4857600080fd5b614c568c8983860101613f70565b825250604082013583811115614c6b57600080fd5b8083019250508a603f830112614c8057600080fd5b86820135614c9061400082613f4d565b81815260059190911b830160400190888101908d831115614cb057600080fd5b604085015b83811015614ce8578681351115614ccb57600080fd5b614cdb8f60408335890101613f70565b8352918a01918a01614cb5565b50838a0152505085525050918301918301614bf9565b60006040808385031215614d1157600080fd5b614d19613e48565b915082356001600160401b0380821115614d3257600080fd5b818501915085601f830112614d4657600080fd5b81356020614d5661400083613f4d565b82815260059290921b84018101918181019089841115614d7557600080fd5b8286015b84811015614e0557803586811115614d915760008081fd5b8701808c03601f1901891315614da75760008081fd5b614daf613e48565b8582013588811115614dc15760008081fd5b614dcf8e8883860101613f70565b8252508982013588811115614de45760008081fd5b614df28e8883860101613f70565b8288015250845250918301918301614d79565b5087525086810135945082851115614e1c57600080fd5b61424a88868901614bb5565b600060e08284031215614e3a57600080fd5b614e42613e70565b905081356001600160401b0380821115614e5b57600080fd5b614e6785838601614131565b83526020840135915080821115614e7d57600080fd5b614e898583860161439b565b60208401526040840135915080821115614ea257600080fd5b614eae858386016145dc565b60408401526060840135915080821115614ec757600080fd5b614ed385838601614829565b60608401526080840135915080821115614eec57600080fd5b614ef8858386016145dc565b608084015260a0840135915080821115614f1157600080fd5b614f1d85838601614a8b565b60a084015260c0840135915080821115614f3657600080fd5b50614f4384828501614cfe565b60c08301525092915050565b60008060408385031215614f6257600080fd5b8235915060208301356001600160401b03811115614f7f57600080fd5b614f8b85828601614e28565b9150509250929050565b60008060408385031215614fa857600080fd5b8235614fb381613cea565b91506020830135613d4b81613cea565b600060e08284031215614fd557600080fd5b614fdd613e70565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015292915050565b60006020828403121561503757600080fd5b604051602081016001600160401b038111828210171561505957615059613e32565b604052905080823561506a81613d0f565b905292915050565b60008060006060848603121561508757600080fd5b8335925060208401356001600160401b03808211156150a557600080fd5b9085019061012082880312156150ba57600080fd5b6150c2613e92565b8235828111156150d157600080fd5b830160e0818a0312156150e357600080fd5b6150eb613e70565b6150f482613cff565b815261510260208301613cff565b602082015261511360408301613cff565b604082015261512460608301613cff565b606082015261513560808301613cff565b608082015260a08201358481111561514c57600080fd5b6151588b828501613fdf565b60a08301525060c08201358481111561517057600080fd5b61517c8b828501613fdf565b60c0830152508252506151928860208501614fc3565b60208201526151a5886101008501615025565b60408201528094505060408601359150808211156151c257600080fd5b506151cf86828701614e28565b9150509250925092565b600080600080608085870312156151ef57600080fd5b84359350602085013561520181613cea565b9250604085013561521181613cea565b9150606085013561522181613cea565b939692955090935050565b60006020828403121561523e57600080fd5b5035919050565b60006101008201905060018060a01b0380845116835260208401516020840152604084015160408401526060840151151560608401526080840151151560808401528060a08501511660a08401525060c083015160c083015260e08301516152b060e0840182613d7a565b5092915050565b6000806000606084860312156152cc57600080fd5b83356152d781613cea565b92506020840135915060408401356152ee81613d0f565b809150509250925092565b6000806040838503121561530c57600080fd5b823562ffffff81168114614fb357600080fd5b60008060006060848603121561533457600080fd5b8335925060208401356001600160401b038082111561535257600080fd5b818601915061012080838903121561536957600080fd5b615371613e92565b83358381111561538057600080fd5b8401808a0383131561539157600080fd5b615399613eb4565b92506153a481613cff565b83526153b260208201613cff565b60208401526153c360408201613cff565b60408401526153d460608201613cff565b60608401526153e560808201613cff565b60808401526153f660a08201613cff565b60a084015261540760c08201613cff565b60c084015260e08101358481111561541e57600080fd5b61542a8b828401613fdf565b60e085015250610100808201358581111561544457600080fd5b6154508c828501613fdf565b82860152508383526154658b60208801614fc3565b60208401526154768b828801615025565b60408401525050809550505060408601359150808211156151c257600080fd5b60006101208201905060018060a01b0383511682526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c0830151151560c083015260e08301516154fe60e084018261ffff169052565b506101008084015161551282850182613d7a565b505092915050565b60008060008060008060c0878903121561553357600080fd5b863561553e81613cea565b9550602087013561554e81613cea565b9450604087013561555e81613cea565b9350606087013561556e81613cea565b9250608087013561557e81613cea565b915060a087013561558e81613cea565b809150509295509295509295565b6001600160a01b03929092168252602082015260400190565b6000604082840312156155c757600080fd5b6155cf613e48565b9050815181526020820151602082015292915050565b6000604082840312156155f757600080fd5b610b0983836155b5565b93845260208401929092526040830152606082015260800190565b8051613d0a81613d0f565b60006020828403121561563957600080fd5b8151613d7381613d0f565b9283526020830191909152604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b0c57610b0c61565a565b81810381811115610b0c57610b0c61565a565b8051613d0a81613cea565b600060c082840312156156b357600080fd5b60405160c081016001600160401b03811182821017156156d5576156d5613e32565b60405282516156e381613cea565b815260208301516156f381613cea565b6020820152604083015161570681613cea565b6040820152606083015161571981613cea565b6060820152608083015161572c81613cea565b608082015260a083015161573f81613cea565b60a08201529392505050565b60006101a08201905060018060a01b03808a1683528089511660208401528060208a01511660408401528060408a01511660608401528060608a01511660808401525061579b60a0830188613db3565b6157a860e0830187613db3565b6157b6610120830186613db3565b8361016083015282151561018083015298975050505050505050565b6000808284036101808112156157e757600080fd5b8351925061016080601f19830112156157ff57600080fd5b615807613ed7565b91506020850151825260408501516020830152606085015160408301526080850151606083015260a0850151608083015260c085015160a083015260e085015160c08301526101008086015160e08401526101208087015182850152610140915081870151818501525081860151818401525050809150509250929050565b634e487b7160e01b600052601260045260246000fd5b6000826158ab576158ab615886565b600160ff1b8214600019841416156158c5576158c561565a565b500590565b6020808252600a908201526921a7a72a2927a62622a960b11b604082015260600190565b6020808252600f908201526e4e6f742070726f70657220726f6c6560881b604082015260600190565b60006020828403121561592957600080fd5b8151613d7381613cea565b600061010080838503121561594857600080fd5b604051908101906001600160401b038211818310171561596a5761596a613e32565b816040528351915061597b82613cea565b818152602084015160208201526040840151604082015261599e6060850161561c565b60608201526159af6080850161561c565b60808201526159c060a08501615696565b60a082015260c084015160c08201526159db60e08501615696565b60e0820152949350505050565b6000602082840312156159fa57600080fd5b5051919050565b6020808252600c908201526b5a65726f206164647265737360a01b604082015260600190565b60208082526009908201526804e6f203020737761760bc1b604082015260600190565b6001600160a01b039586168152938516602085015260408401929092526060830152909116608082015260a00190565b805163ffffffff81168114613d0a57600080fd5b805161ffff81168114613d0a57600080fd5b60006101808284031215615ab357600080fd5b615abb613efa565b8251815260208301516020820152604083015160408201526060830151606082015260808301516080820152615af360a08401615696565b60a0820152615b0460c08401615a7a565b60c0820152615b1560e08401615696565b60e0820152610100615b28818501615a8e565b90820152610120615b3a84820161561c565b90820152610140615b4c84820161561c565b90820152610160615b5e848201615696565b908201529392505050565b8082028115828204841417610b0c57610b0c61565a565b600082615b8f57615b8f615886565b500490565b80516001600160501b0381168114613d0a57600080fd5b600080600080600060a08688031215615bc357600080fd5b615bcc86615b94565b9450602086015193506040860151925060608601519150615bef60808701615b94565b90509295509295909350565b634e487b7160e01b600052603260045260246000fd5b60006101208284031215615c2457600080fd5b615c2c613eb4565b615c3583615696565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a0820152615c7560c0840161561c565b60c0820152615c8660e08401615a8e565b60e0820152610100615b5e818501615696565b60005b83811015615cb4578181015183820152602001615c9c565b50506000910152565b60008151808452615cd5816020860160208601615c99565b601f01601f19169290920160200192915050565b602081526000610b096020830184615cbd565b604081526000615d0f6040830185615cbd565b90508260208301529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b602081526000825160a06020840152615d8560c0840182615cbd565b905060018060a01b0360208501511660408401526040840151606084015260608401516080840152608084015160a08401528091505092915050565b60008251615dd3818460208701615c99565b919091019291505056fea264697066735822122020646e8b5bb09c370d04d8d8226f08759dee191ad765bd70155ea450fc5cac2e64736f6c63430008130033