0 txs
20 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)
nineDecimalsAsset
viewfunction nineDecimalsAsset(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)
fixWithdrawalExecution
nonpayablefunction fixWithdrawalExecution(bytes32 key, uint256 _longAmount, uint256 _shortAmount)
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)
setNineDecimalAsset
nonpayablefunction setNineDecimalAsset(address _asset, bool _nineDecimal)
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)
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
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615eaf80620000f36000396000f3fe6080604052600436106102275760003560e01c80630afda351146102335780630fa63fe414610255578063100e196d146102a15780631774e1cb1461034c57806319c2d37e1461038d57806321d41b32146103ba5780632b70b891146103eb5780632f2708a21461040b5780633201ab4d1461042b578063395aef8e1461044b5780633a2cb99f1461048e5780633c372240146104bc5780634152313b146104cf578063485cc955146104ef578063542059431461050f5780635c975abb1461052f5780635f82eba814610547578063715018a61461056757806372ccfa601461057c578063753672d51461059c57806376f1ef10146105bd5780637db2bd3e146105dd5780638c4d0d601461060e5780638da5cb5b1461063f57806394fce92b1461065457806396e1ae10146106815780639a4a1a9a146106b25780639f093871146106d25780639f17af9914610764578063a5ab05ab14610784578063a5efb24d146107a4578063a7c49f5a146107c4578063a8f098d2146107fb578063ad5c46481461081c578063b2fd94951461083d578063b63d535414610850578063ba871dcd14610870578063bf3810a914610890578063c4b2b980146108b0578063c9888ec1146108cb578063c9ac221a146108eb578063cc6624661461090b578063ceb0c4451461092b578063e88c356114610958578063f2fde38b14610a22578063f5faa89214610a42578063fd77d17514610a73578063ff06f7b214610a9357600080fd5b3661022e57005b600080fd5b34801561023f57600080fd5b5061025361024e366004613cc4565b610ab3565b005b34801561026157600080fd5b50610288610270366004613cfd565b61010c6020526000908152604090205462ffffff1681565b60405162ffffff90911681526020015b60405180910390f35b3480156102ad57600080fd5b5060c95460ca5460cb5460cc5460cd5460ce5460cf5460d05460d1546102f2986001600160a01b03908116988116978116968116958116948116938116928116911689565b604080516001600160a01b039a8b168152988a1660208a01529689169688019690965293871660608701529186166080860152851660a0850152841660c0840152831660e083015290911661010082015261012001610298565b34801561035857600080fd5b5061037d610367366004613cfd565b6101156020526000908152604090205460ff1681565b6040519015158152602001610298565b34801561039957600080fd5b506103ad6103a8366004613d2e565b610ae7565b6040516102989190613d69565b3480156103c657600080fd5b5061037d6103d5366004613cfd565b6101146020526000908152604090205460ff1681565b3480156103f757600080fd5b50610253610406366004613d77565b610b74565b34801561041757600080fd5b50610253610426366004613cc4565b610d05565b34801561043757600080fd5b50610253610446366004613da3565b610d39565b34801561045757600080fd5b50610481610466366004613cfd565b60d4602052600090815260409020546001600160a01b031681565b6040516102989190613dc5565b34801561049a57600080fd5b506104ae6104a9366004613cfd565b61106e565b604051908152602001610298565b6102536104ca366004614fdf565b6112e9565b3480156104db57600080fd5b506102536104ea366004613d77565b611582565b3480156104fb57600080fd5b5061025361050a366004615025565b611854565b34801561051b57600080fd5b5061025361052a366004613cc4565b6119ae565b34801561053b57600080fd5b5060975460ff1661037d565b34801561055357600080fd5b5060d554610481906001600160a01b031681565b34801561057357600080fd5b506102536119e2565b34801561058857600080fd5b50610253610597366004615102565b6119f6565b3480156105a857600080fd5b5061011354610481906001600160a01b031681565b3480156105c957600080fd5b506104ae6105d8366004615269565b611aac565b3480156105e957600080fd5b5061037d6105f8366004613cfd565b61010d6020526000908152604090205460ff1681565b34801561061a57600080fd5b5061037d6106293660046152bc565b6101126020526000908152604090205460ff1681565b34801561064b57600080fd5b50610481611b0e565b34801561066057600080fd5b5061067461066f3660046152bc565b611b1d565b60405161029891906152d5565b34801561068d57600080fd5b5061037d61069c3660046152bc565b6101116020526000908152604090205460ff1681565b3480156106be57600080fd5b506104ae6106cd366004615347565b611bc8565b3480156106de57600080fd5b5061072d6106ed3660046152bc565b60d2602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949593949293919290919060ff1687565b604080519788526020880196909652948601939093526060850191909152608084015260a0830152151560c082015260e001610298565b34801561077057600080fd5b5061025361077f366004613cc4565b611ea6565b34801561079057600080fd5b5061025361079f366004613cfd565b611eda565b3480156107b057600080fd5b506102536107bf366004615389565b611fc6565b3480156107d057600080fd5b506104816107df3660046152bc565b610110602052600090815260409020546001600160a01b031681565b34801561080757600080fd5b5061010a54610481906001600160a01b031681565b34801561082857600080fd5b5061010b54610481906001600160a01b031681565b61025361084b3660046152bc565b61206a565b34801561085c57600080fd5b5060d654610481906001600160a01b031681565b34801561087c57600080fd5b506104ae61088b366004613d77565b612595565b34801561089c57600080fd5b506104ae6108ab366004613cc4565b61279f565b3480156108bc57600080fd5b506102536105973660046153af565b3480156108d757600080fd5b506104ae6108e6366004613d2e565b612a64565b3480156108f757600080fd5b50610253610906366004615102565b612a95565b34801561091757600080fd5b50610253610926366004615025565b612f3a565b34801561093757600080fd5b5061094b6109463660046152bc565b612f96565b6040516102989190615526565b34801561096457600080fd5b506109d06109733660046152bc565b61010f60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701549596949593949293919290916001600160a01b0391821691811690600160a01b900460ff1689565b60408051998a5260208a0198909852968801959095526060870193909352608086019190915260a08501526001600160a01b0390811660c08501521660e0830152151561010082015261012001610298565b348015610a2e57600080fd5b50610253610a3d366004613cfd565b61306b565b348015610a4e57600080fd5b5061037d610a5d366004613cfd565b61010e6020526000908152604090205460ff1681565b348015610a7f57600080fd5b50610253610a8e3660046153af565b6130e1565b348015610a9f57600080fd5b50610253610aae3660046155aa565b613270565b610abb61333e565b6001600160a01b0391909116600090815261011460205260409020805460ff1916911515919091179055565b6040805180820182526000808252602082015260cb5491516301e73a5f60e61b815290916001600160a01b0316906379ce97c090610b2b908690869060040161562c565b6040805180830381865afa158015610b47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6b9190615675565b90505b92915050565b610b7c61333e565b6000610b8784611b1d565b60c954909150610ba2906001600160a01b031633308561339d565b60a0810151610bbc906001600160a01b031633308661339d565b60cb5460c954610bd9916001600160a01b03918216911684613408565b60cb5460a0820151610bf8916001600160a01b03918216911685613408565b8060800151610c875760cb546001600160a01b0316639137be7a858585610c20838383612595565b6040518563ffffffff1660e01b8152600401610c3f9493929190615691565b6020604051808303816000875af1158015610c5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8291906156b7565b610cfe565b60cb54604051635f4e6fb760e11b81526001600160a01b039091169063be9cdf6e90610cbb908790879087906004016156d4565b6020604051808303816000875af1158015610cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfe91906156b7565b5050505050565b610d0d61333e565b6001600160a01b0391909116600090815261010d60205260409020805460ff1916911515919091179055565b610d41613427565b610113546001600160a01b0316331480610d735750610d5e611b0e565b6001600160a01b0316336001600160a01b0316145b610db25760405162461bcd60e51b815260206004820152600b60248201526a139bdd08185b1b1bddd95960aa1b60448201526064015b60405180910390fd5b6000610dbd83611b1d565b600084815261010f602052604080822083519184015193945092610de19190610ae7565b6000868152610111602052604090205490915060ff168015610e1357506000858152610112602052604090205460ff16155b15610e9e5780516001830154610e2a908690615700565b610e349190615713565b600383019081556000868152610112602052604090819020805460ff191660011790558354915490517f9bb3f265562ad4d42fe6bc8ec0cc15e82e766e4e3ba72c75c66d2fb3fdd6f1ab92610e9192908252602082015260400190565b60405180910390a161105d565b80516005830154600090610eb3908790615700565b60cb5460c954919250610ed3916001600160a01b03908116911683613408565b60cb5460a0860151610ef2916001600160a01b03918216911684613408565b60078401805460ff60a01b1916600160a01b1790556080850151610fa75760cb54600185015460028601546001600160a01b0390921691639137be7a918a9186918691610f40918591612595565b6040518563ffffffff1660e01b8152600401610f5f9493929190615691565b6020604051808303816000875af1158015610f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa291906156b7565b61101e565b60cb54604051635f4e6fb760e11b81526001600160a01b039091169063be9cdf6e90610fdb908a90869086906004016156d4565b6020604051808303816000875af1158015610ffa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101e91906156b7565b507f9c341c91384ec36b9d393c98615da5bf201c12f801111ca44b299c61a6b3730b878284604051611052939291906156d4565b60405180910390a150505b50505061106a6001606555565b5050565b60cb54604051639c735fbb60e01b815260009182916001600160a01b0390911690639c735fbb906110a3908690600401613dc5565b60c060405180830381865afa1580156110c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e49190615731565b90506000604051806080016040528083604001516001600160a01b0316815260200183606001516001600160a01b0316815260200183600001516001600160a01b0316815260200183602001516001600160a01b031681525090506000604051806040016040528061115b8560600151600161279f565b815260200161116f8560600151600161279f565b81525090506000604051806040016040528061118c88600161279f565b815260200161119c88600161279f565b90526040805180820190915260c95491925060009181906111c7906001600160a01b0316600161279f565b815260c9546020909101906111e6906001600160a01b0316600161279f565b905260cf5460cd546040519293506000926001600160a01b039283169263095ce6c5921690889088908890889061124f906020016020808252601b908201527a4d41585f504e4c5f464143544f525f464f525f4445504f5349545360281b604082015260600190565b6040516020818303038152906040528051906020012060006040518863ffffffff1660e01b815260040161128997969594939291906157db565b61018060405180830381865afa1580156112a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cb9190615862565b5090506112dd64e8d4a510008261592c565b98975050505050505050565b60d6546040516001600160a01b039091169063ac4ab3fb90339061130f9060200161595a565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b815260040161134292919061562c565b602060405180830381865afa15801561135f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138391906156b7565b61139f5760405162461bcd60e51b8152600401610da99061597e565b60006113aa83612f96565b905060006113b784611b1d565b82519091506001600160a01b03166115275760cb54604051631f6f85f960e11b8152600481018690526001600160a01b0390911690633edf0bf290602401602060405180830381865afa158015611412573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143691906156b7565b156114ce5760cb546040805163aced166160e01b815290516001600160a01b039092169163aced1661916004808201926020929091908290030181865afa158015611485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a991906159a7565b60d580546001600160a01b0319166001600160a01b0392909216919091179055611549565b8060800151156115015760e081015160d580546001600160a01b0319166001600160a01b03909216919091179055611549565b805160d580546001600160a01b0319166001600160a01b03909216919091179055611549565b815160d580546001600160a01b0319166001600160a01b039092169190911790555b60d5546040516001600160a01b03909116903480156108fc02916000818181858888f19350505050158015610cfe573d6000803e3d6000fd5b61158a61333e565b600061159584611b1d565b905060006115ab82600001518360400151610ae7565b825160d580546001600160a01b0319166001600160a01b0390921691909117905590506115d6613c47565b815185908590600090819084111561163d5785516000906115f79086615713565b90506116038186615713565b60a089015160c954919450611624918391906001600160a01b031630613487565b608087018190526116359085615700565b9150506116d3565b600086602001518461164f9190615713565b60c95460a08a01519192506116709183916001600160a01b03169030613487565b60a087018190528751600091611687908890615700565b6116919190615713565b60a08a015160c9549192506000916116b49184916001600160a01b031630613487565b9050886000015194508089602001516116cd9190615700565b93505050505b670de0b6b3a7640000826116ec8960a00151600161279f565b6116f691906159c4565b61170091906159db565b60c086015260cb5460c954611722916001600160a01b03918216911683613408565b60cb5460a0880151611741916001600160a01b03918216911684613408565b86608001516117d05760cb546001600160a01b0316639137be7a8b8484611769838383612595565b6040518563ffffffff1660e01b81526004016117889493929190615691565b6020604051808303816000875af11580156117a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cb91906156b7565b611847565b60cb54604051635f4e6fb760e11b81526001600160a01b039091169063be9cdf6e90611804908d90869086906004016156d4565b6020604051808303816000875af1158015611823573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184791906156b7565b5050505050505050505050565b600054610100900460ff16158080156118745750600054600160ff909116105b80611895575061188330613773565b158015611895575060005460ff166001145b6118f85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610da9565b6000805460ff19166001179055801561191b576000805461ff0019166101001790555b60cb80546001600160a01b038085166001600160a01b03199283161790925560c9805492861692909116919091179055611953613782565b61195b6137b1565b6119636137e0565b80156119a9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6119b661333e565b6001600160a01b0391909116600090815261011560205260409020805460ff1916911515919091179055565b6119ea61333e565b6119f4600061380f565b565b60d6546040516001600160a01b039091169063ac4ab3fb903390611a1c9060200161595a565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b8152600401611a4f92919061562c565b602060405180830381865afa158015611a6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9091906156b7565b6119a95760405162461bcd60e51b8152600401610da99061597e565b60cb546000906001600160a01b03163314611af75760405162461bcd60e51b815260206004820152600b60248201526a2737ba102b37b235b0ab1960a91b6044820152606401610da9565b611b0385858585613487565b90505b949350505050565b6033546001600160a01b031690565b6040805161010081018252600080825260208201819052818301819052606082018190526080820181905260a0820181905260c0820181905260e082015260cb54915163191618a160e21b81526004810184905290916001600160a01b03169063645862849060240161010060405180830381865afa158015611ba4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e91906159ef565b60cb54604051639c735fbb60e01b815260009182916001600160a01b0390911690639c735fbb90611bfd908890600401613dc5565b60c060405180830381865afa158015611c1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3e9190615731565b9050611c48613c47565b60408051608081018252838201516001600160a01b0390811682526060808601805183166020808601919091528751841685870152808801518416928501929092529085018990528715158585015260ce5490519351631773dc6560e21b815292936000939190921691635dcf719491611cc59190600401613dc5565b6040805180830381865afa158015611ce1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d059190615675565b60ce548551604051631773dc6560e21b81529293506000926001600160a01b0390921691635dcf719491611d3b91600401613dc5565b6040805180830381865afa158015611d57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7b9190615675565b60ce546020870151604051631773dc6560e21b81529293506000926001600160a01b0390921691635dcf719491611db491600401613dc5565b6040805180830381865afa158015611dd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df49190615675565b60cf5460cd5460208801516040808a0151905163095ce6c560e01b81529495506001600160a01b039384169463095ce6c594611e3e9416928a928a928a928a9290916004016157db565b61018060405180830381865afa158015611e5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e809190615862565b50808652611e949064e8d4a510009061592c565b94859052509298975050505050505050565b611eae61333e565b6001600160a01b0391909116600090815261010e60205260409020805460ff1916911515919091179055565b611ee261333e565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190611f11903090600401613dc5565b602060405180830381865afa158015611f2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f529190615aa3565b60405163a9059cbb60e01b81529091506001600160a01b0383169063a9059cbb90611f83903390859060040161562c565b6020604051808303816000875af1158015611fa2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a991906156b7565b611fce61333e565b6001600160a01b038116611ff45760405162461bcd60e51b8152600401610da990615abc565b6113888262ffffff16111561203a5760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40e8dede40d0d2ced60a31b6044820152606401610da9565b6001600160a01b0316600090815261010c60205260409020805462ffffff191662ffffff92909216919091179055565b612072613427565b60cb546040805163aced166160e01b815290516001600160a01b039092169163aced1661916004808201926020929091908290030181865afa1580156120bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e091906159a7565b6001600160a01b0316336001600160a01b03161461212d5760405162461bcd60e51b815260206004820152600a6024820152692737ba1035b2b2b832b960b11b6044820152606401610da9565b600061213882611b1d565b600083815261010f602052604090206006810154919250906001600160a01b03166121925760405162461bcd60e51b815260206004820152600a602482015269139bc81c995c5d595cdd60b21b6044820152606401610da9565b6007810154600160a01b900460ff16156121d75760405162461bcd60e51b8152600401610da990602080825260049082015263646f6e6560e01b604082015260600190565b60068101546007820154600085815261011160205260409020546001600160a01b03928316929091169060ff16801561222057506000858152610112602052604090205460ff16155b156123535760008360040154116122495760405162461bcd60e51b8152600401610da990615ae2565b60c9546101135460048086015460405163095ea7b360e01b81526001600160a01b039485169463095ea7b39461228394911692910161562c565b6020604051808303816000875af11580156122a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c691906156b7565b506101135460c95460048581015460008981526101106020526040908190205490516341c70b0160e11b81526001600160a01b039586169563838e160295349561231c95918316948a948f949091169101615b05565b6000604051808303818588803b15801561233557600080fd5b505af1158015612349573d6000803e3d6000fd5b5050505050612584565b60008581526101116020526040902054661550f7dca700009060ff166123bc57662aa1efb94e00003410156123bc5760405162461bcd60e51b815260206004820152600f60248201526e4e6f7420656e6f756768206665657360881b6044820152606401610da9565b60008460030154116123e05760405162461bcd60e51b8152600401610da990615ae2565b61011354600385015460405163095ea7b360e01b81526001600160a01b038681169363095ea7b39361241993929091169160040161562c565b6020604051808303816000875af1158015612438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245c91906156b7565b5061011354600385015460008881526101106020526040908190205490516341c70b0160e11b81526001600160a01b039384169363838e16029386936124af938a938a938f939092911690600401615b05565b6000604051808303818588803b1580156124c857600080fd5b505af11580156124dc573d6000803e3d6000fd5b5050506000888152610111602052604090205460ff169150612582905057846080015115612547578460e001516001600160a01b03166108fc829081150290604051600060405180830381858888f19350505050158015612541573d6000803e3d6000fd5b50612582565b84516040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612580573d6000803e3d6000fd5b505b505b505050506125926001606555565b50565b6000806125a185611b1d565b60cb548151604080840151905163de91a5e560e01b81529394506000936001600160a01b039093169263de91a5e5926125de92909160040161562c565b61018060405180830381865afa1580156125fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126209190615b5b565b9050600061263683600001518460400151610ae7565b905060006126498460a00151600061279f565b61010a5460a086015191925060009182916001600160a01b039081169116036126b75768056bc75e2d63100000612680848b6159c4565b61268a91906159db565b915068056bc75e2d631000008385600001516126a691906159c4565b6126b091906159db565b9050612704565b68327cb2734119d3b7a9601e1b6126ce848b6159c4565b6126d891906159db565b915068327cb2734119d3b7a9601e1b8385600001516126f791906159c4565b61270191906159db565b90505b60c95460009061271e906001600160a01b0316600161279f565b9050600069d3c21bcecceda1000000612737838c6159c4565b61274191906159db565b9050600061274f8286615700565b885160208901519192506000916127669087615700565b6127709190615700565b9050600081831161278257600061278c565b61278c8284615713565b9f9e505050505050505050505050505050565b600080600061010960009054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156127f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061281c9190615c3b565b509194509250508215905060006128338342615713565b9050610e10811161287e5760405162461bcd60e51b815260206004820152601560248201527423b930b1b2903832b934b7b2103737ba1037bb32b960591b6044820152606401610da9565b816128bf5760405162461bcd60e51b815260206004820152601160248201527029b2b8bab2b731b2b91034b9903237bbb760791b6044820152606401610da9565b6001600160a01b03808816600090815260d46020526040808220548151633fabe5a360e21b815291519293169163feaf968c9160048082019260a0929091908290030181865afa158015612917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293b9190615c3b565b5050506001600160a01b038a16600090815261010d6020526040812054919350915060ff161561298857612974826402540be4006159c4565b61298190620f42406159c4565b90506112dd565b61010a546001600160a01b03908116908a16036129ba576129ae826402540be4006159c4565b612981906127106159c4565b6001600160a01b0389166000908152610114602052604090205460ff16156129fd57662386f26fc100006129f3836402540be4006159c4565b61298191906159db565b6001600160a01b0389166000908152610115602052604090205460ff1615612a3a57612a2e826402540be4006159c4565b612981906103e86159c4565b620f4240612a4d836402540be4006159c4565b612a5791906159db565b9998505050505050505050565b60d36020528160005260406000208181548110612a8057600080fd5b90600052602060002001600091509150505481565b60cb548251516001600160a01b03908116911614612ac55760405162461bcd60e51b8152600401610da990615c8b565b60d6546040516001600160a01b039091169063ac4ab3fb903390612aeb9060200161595a565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b8152600401612b1e92919061562c565b602060405180830381865afa158015612b3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b5f91906156b7565b612b7b5760405162461bcd60e51b8152600401610da99061597e565b6000612b8684611b1d565b90506000612b9c82600001518360400151610ae7565b9050612ba6613c47565b6000846020015160000151600081518110612bc357612bc3615cb9565b60200260200101516020015190506000856020015160000151600181518110612bee57612bee615cb9565b60209081029190910181015181015160a08701516001600160a01b0316600090815261010e90925260409091205490915060ff16612e9c576000808560000151841115612c8a578551600090612c449086615713565b9050612c508186615713565b60a089015160c954919450612c71918391906001600160a01b031630613487565b60808701819052612c829085615700565b915050612d20565b6000866020015184612c9c9190615713565b60c95460a08a0151919250612cbd9183916001600160a01b03169030613487565b60a087018190528751600091612cd4908890615700565b612cde9190615713565b60a08a015160c954919250600091612d019184916001600160a01b031630613487565b905088600001519450808960200151612d1a9190615700565b93505050505b670de0b6b3a764000082612d398960a00151600161279f565b612d4391906159c4565b612d4d91906159db565b60c086015260cb5460c954612d6f916001600160a01b03918216911683613408565b60cb5460a0880151612d8e916001600160a01b03918216911684613408565b8660800151612e1d5760cb546001600160a01b0316639137be7a8b8484612db6838a8a612595565b6040518563ffffffff1660e01b8152600401612dd59493929190615691565b6020604051808303816000875af1158015612df4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e1891906156b7565b612e94565b60cb54604051635f4e6fb760e11b81526001600160a01b039091169063be9cdf6e90612e51908d90869086906004016156d4565b6020604051808303816000875af1158015612e70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e9491906156b7565b505050612f30565b60cb5460a0860151604051639c735fbb60e01b81526000926001600160a01b031691639c735fbb91612ed19190600401613dc5565b60c060405180830381865afa158015612eee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f129190615731565b9050612f2e898484886000015189602001518660400151613861565b505b5050505050505050565b612f4261333e565b6001600160a01b038216612f685760405162461bcd60e51b8152600401610da990615abc565b6001600160a01b03918216600090815260d46020526040902080546001600160a01b03191691909216179055565b612ffd60405180610120016040528060006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600061ffff16815260200160006001600160a01b031681525090565b60cb5460405163546fcf3960e01b8152600481018490526001600160a01b039091169063546fcf399060240161012060405180830381865afa158015613047573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e9190615ccf565b61307361333e565b6001600160a01b0381166130d85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610da9565b6125928161380f565b60cb548251516001600160a01b039081169116146131115760405162461bcd60e51b8152600401610da990615c8b565b60d6546040516001600160a01b039091169063ac4ab3fb9033906131379060200161595a565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b815260040161316a92919061562c565b602060405180830381865afa158015613187573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ab91906156b7565b6131c75760405162461bcd60e51b8152600401610da99061597e565b60cb5460208201515180516001600160a01b039092169163862a82089186916000906131f5576131f5615cb9565b6020026020010151602001516040518363ffffffff1660e01b8152600401613227929190918252602082015260400190565b6020604051808303816000875af1158015613246573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326a91906156b7565b50505050565b61327861333e565b60cc80546001600160a01b038881166001600160a01b0319928316811790935560cd8054898316908416811790915560ce8054898416908516811790915560cf8054898516908616811790915560d08054898616908716811790915560d18054958916959096168517909555604080519687526020870193909352918501526060840152608083019190915260a08201527f03f1afd7ce30865f51a6e0b71bd812eb2a48c45e187b710c8e67eaaa53c15c579060c00160405180910390a1505050505050565b33613347611b0e565b6001600160a01b0316146119f45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610da9565b6040516001600160a01b038085166024830152831660448201526064810182905261326a9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526139d7565b6119a98363a9059cbb60e01b84846040516024016133d192919061562c565b6002606554036134795760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610da9565b6002606555565b6001606555565b60008460000361349957506000611b06565b60cc5460405163095ea7b360e01b81526000916001600160a01b038088169263095ea7b3926134ce9216908a9060040161562c565b6020604051808303816000875af11580156134ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061351191906156b7565b5061010b546001600160a01b03868116911614801590613540575061010b546001600160a01b03858116911614155b15613661576040805160a0810182526001600160a01b03878116600090815261010c60209081528482205461010b5480851684528684205460608d811b6001600160601b031990811660c08a015260e894851b6001600160e81b031990811660d48b015293821b811660d78a01529190931b90911660eb8701528a821b1660ee860152855160e281870301815261010286018752855288841691850191909152428486015283018a9052608083015260cc54925163c04b8d5960e01b81529192169063c04b8d5990613616908490600401615da7565b6020604051808303816000875af1158015613635573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136599190615aa3565b915050611b03565b60408051610100810182526001600160a01b038781168083528782166020808501918252600092835261010c90528482205462ffffff90811685870190815289851660608701908152426080880190815260a088018f815260c0890187815260e08a0197885260cc549a5163414bf38960e01b81528a518a16600482015296518916602488015293519094166044860152905186166064850152516084840152905160a48301525160c48201529051821660e48201529192169063414bf38990610104016020604051808303816000875af1158015613744573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137689190615aa3565b979650505050505050565b6001600160a01b03163b151590565b600054610100900460ff166137a95760405162461bcd60e51b8152600401610da990615dff565b6119f4613aac565b600054610100900460ff166137d85760405162461bcd60e51b8152600401610da990615dff565b6119f4613adc565b600054610100900460ff166138075760405162461bcd60e51b8152600401610da990615dff565b6119f4613b0f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600086815261010f602052604081209061387a88611b1d565b8883556001830188905560028301879055905084871161389b5760006138a5565b6138a58588615713565b6003830190815560a08201516006840180546001600160a01b039283166001600160a01b031991821617909155600785018054878416908316179055835160008c81526101106020526040902080549190931691161790555415801561390a57508386115b15613944576139198487615713565b600483015560058201849055600088815261011160205260409020805460ff1916600117905561394c565b600582018690555b6001820154600283015460008a81526101116020908152604091829020546003870154600488015484518f8152938401969096529282019390935260ff90921615156060830152608082015260a08101919091527f41aa0b642d7539321de3afda61eeb8c6bbf79ab4ea7a567e420c9663a846a7599060c00160405180910390a15050505050505050565b6000613a2c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613b369092919063ffffffff16565b9050805160001480613a4d575080806020019051810190613a4d91906156b7565b6119a95760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610da9565b600054610100900460ff16613ad35760405162461bcd60e51b8152600401610da990615dff565b6119f43361380f565b600054610100900460ff16613b035760405162461bcd60e51b8152600401610da990615dff565b6097805460ff19169055565b600054610100900460ff166134805760405162461bcd60e51b8152600401610da990615dff565b6060611b06848460008585600080866001600160a01b03168587604051613b5d9190615e4a565b60006040518083038185875af1925050503d8060008114613b9a576040519150601f19603f3d011682016040523d82523d6000602084013e613b9f565b606091505b50915091506137688783838760608315613c18578251600003613c1157613bc585613773565b613c115760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610da9565b5081611b06565b611b068383815115613c2d5781518083602001fd5b8060405162461bcd60e51b8152600401610da99190615e66565b604051806101000160405280600081526020016000801916815260200160001515815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b038116811461259257600080fd5b8035613cb181613c91565b919050565b801515811461259257600080fd5b60008060408385031215613cd757600080fd5b8235613ce281613c91565b91506020830135613cf281613cb6565b809150509250929050565b600060208284031215613d0f57600080fd5b8135613d1a81613c91565b9392505050565b6001600160a01b03169052565b60008060408385031215613d4157600080fd5b8235613d4c81613c91565b946020939093013593505050565b80518252602090810151910152565b60408101610b6e8284613d5a565b600080600060608486031215613d8c57600080fd5b505081359360208301359350604090920135919050565b60008060408385031215613db657600080fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715613e1157613e11613dd9565b60405290565b60405160e081016001600160401b0381118282101715613e1157613e11613dd9565b604051606081016001600160401b0381118282101715613e1157613e11613dd9565b60405161012081016001600160401b0381118282101715613e1157613e11613dd9565b60405161016081016001600160401b0381118282101715613e1157613e11613dd9565b60405161018081016001600160401b0381118282101715613e1157613e11613dd9565b604051601f8201601f191681016001600160401b0381118282101715613eec57613eec613dd9565b604052919050565b60006001600160401b03821115613f0d57613f0d613dd9565b5060051b60200190565b600082601f830112613f2857600080fd5b81356001600160401b03811115613f4157613f41613dd9565b613f54601f8201601f1916602001613ec4565b818152846020838601011115613f6957600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112613f9757600080fd5b81356020613fac613fa783613ef4565b613ec4565b82815260059290921b84018101918181019086841115613fcb57600080fd5b8286015b84811015613fef578035613fe281613c91565b8352918301918301613fcf565b509695505050505050565b600082601f83011261400b57600080fd5b8135602061401b613fa783613ef4565b82815260059290921b8401810191818101908684111561403a57600080fd5b8286015b84811015613fef5780356001600160401b038082111561405e5760008081fd5b908801906040828b03601f19018113156140785760008081fd5b614080613def565b87840135838111156140925760008081fd5b6140a08d8a83880101613f17565b8252509083013590828211156140b65760008081fd5b6140c48c8984870101613f86565b81890152865250505091830191830161403e565b600060408083850312156140eb57600080fd5b6140f3613def565b915082356001600160401b038082111561410c57600080fd5b818501915085601f83011261412057600080fd5b81356020614130613fa783613ef4565b82815260059290921b8401810191818101908984111561414f57600080fd5b8286015b848110156141ce5780358681111561416b5760008081fd5b8701808c03601f19018913156141815760008081fd5b614189613def565b858201358881111561419b5760008081fd5b6141a98e8883860101613f17565b82525090890135906141ba82613c91565b808601919091528352918301918301614153565b50875250868101359450828511156141e557600080fd5b6141f188868901613ffa565b81870152505050505092915050565b600082601f83011261421157600080fd5b81356020614221613fa783613ef4565b828152600592831b850182019282820191908785111561424057600080fd5b8387015b858110156143355780356001600160401b03808211156142645760008081fd5b908901906040828c03601f190181131561427e5760008081fd5b614286613def565b88840135838111156142985760008081fd5b6142a68e8b83880101613f17565b82525081840135838111156142bb5760008081fd5b8085019450508c603f8501126142d357600092508283fd5b8884013592506142e5613fa784613ef4565b83815292861b8401820192898101908e8511156143025760008081fd5b948301945b848610156143205785358252948a0194908a0190614307565b828b0152508752505050928401928401614244565b5090979650505050505050565b6000604080838503121561435557600080fd5b61435d613def565b915082356001600160401b038082111561437657600080fd5b818501915085601f83011261438a57600080fd5b8135602061439a613fa783613ef4565b82815260059290921b840181019181810190898411156143b957600080fd5b8286015b8481101561442b578035868111156143d55760008081fd5b8701808c03601f19018913156143eb5760008081fd5b6143f3613def565b85820135888111156144055760008081fd5b6144138e8883860101613f17565b825250908901358582015283529183019183016143bd565b508752508681013594508285111561444257600080fd5b6141f188868901614200565b600082601f83011261445f57600080fd5b8135602061446f613fa783613ef4565b828152600592831b850182019282820191908785111561448e57600080fd5b8387015b858110156143355780356001600160401b03808211156144b25760008081fd5b908901906040828c03601f19018113156144cc5760008081fd5b6144d4613def565b88840135838111156144e65760008081fd5b6144f48e8b83880101613f17565b82525081840135838111156145095760008081fd5b8085019450508c603f85011261452157600092508283fd5b888401359250614533613fa784613ef4565b83815292861b8401820192898101908e8511156145505760008081fd5b948301945b8486101561456e5785358252948a0194908a0190614555565b828b0152508752505050928401928401614492565b6000604080838503121561459657600080fd5b61459e613def565b915082356001600160401b03808211156145b757600080fd5b818501915085601f8301126145cb57600080fd5b813560206145db613fa783613ef4565b82815260059290921b840181019181810190898411156145fa57600080fd5b8286015b8481101561466c578035868111156146165760008081fd5b8701808c03601f190189131561462c5760008081fd5b614634613def565b85820135888111156146465760008081fd5b6146548e8883860101613f17565b825250908901358582015283529183019183016145fe565b508752508681013594508285111561468357600080fd5b6141f18886890161444e565b600082601f8301126146a057600080fd5b813560206146b0613fa783613ef4565b828152600592831b85018201928282019190878511156146cf57600080fd5b8387015b858110156143355780356001600160401b03808211156146f35760008081fd5b908901906040828c03601f190181131561470d5760008081fd5b614715613def565b88840135838111156147275760008081fd5b6147358e8b83880101613f17565b825250818401358381111561474a5760008081fd5b8085019450508c603f85011261476257600092508283fd5b888401359250614774613fa784613ef4565b83815292861b8401820192898101908e8511156147915760008081fd5b948301945b848610156147bb57853593506147ab84613cb6565b838252948a0194908a0190614796565b828b01525087525050509284019284016146d3565b600060408083850312156147e357600080fd5b6147eb613def565b915082356001600160401b038082111561480457600080fd5b818501915085601f83011261481857600080fd5b81356020614828613fa783613ef4565b82815260059290921b8401810191818101908984111561484757600080fd5b8286015b848110156148c6578035868111156148635760008081fd5b8701808c03601f19018913156148795760008081fd5b614881613def565b85820135888111156148935760008081fd5b6148a18e8883860101613f17565b82525090890135906148b282613cb6565b80860191909152835291830191830161484b565b50875250868101359450828511156148dd57600080fd5b6141f18886890161468f565b600060408083850312156148fc57600080fd5b614904613def565b915082356001600160401b038082111561491d57600080fd5b818501915085601f83011261493157600080fd5b81356020614941613fa783613ef4565b82815260059290921b8401810191818101908984111561496057600080fd5b8286015b8481101561466c5780358681111561497c5760008081fd5b8701808c03601f19018913156149925760008081fd5b61499a613def565b85820135888111156149ac5760008081fd5b6149ba8e8883860101613f17565b82525090890135858201528352918301918301614964565b600082601f8301126149e357600080fd5b813560206149f3613fa783613ef4565b82815260059290921b84018101918181019086841115614a1257600080fd5b8286015b84811015613fef576001600160401b038135811015614a3457600080fd5b813588016040818b03601f19011215614a4c57600080fd5b614a54613def565b8682013583811115614a6557600080fd5b614a738c8983860101613f17565b825250604082013583811115614a8857600080fd5b8083019250508a603f830112614a9d57600080fd5b86820135614aad613fa782613ef4565b81815260059190911b830160400190888101908d831115614acd57600080fd5b604085015b83811015614b05578681351115614ae857600080fd5b614af88f60408335890101613f17565b8352918a01918a01614ad2565b50838a0152505085525050918301918301614a16565b60006040808385031215614b2e57600080fd5b614b36613def565b915082356001600160401b0380821115614b4f57600080fd5b818501915085601f830112614b6357600080fd5b81356020614b73613fa783613ef4565b82815260059290921b84018101918181019089841115614b9257600080fd5b8286015b84811015614c2257803586811115614bae5760008081fd5b8701808c03601f1901891315614bc45760008081fd5b614bcc613def565b8582013588811115614bde5760008081fd5b614bec8e8883860101613f17565b8252508982013588811115614c015760008081fd5b614c0f8e8883860101613f17565b8288015250845250918301918301614b96565b5087525086810135945082851115614c3957600080fd5b6141f1888689016149d2565b600082601f830112614c5657600080fd5b81356020614c66613fa783613ef4565b82815260059290921b84018101918181019086841115614c8557600080fd5b8286015b84811015613fef576001600160401b038135811015614ca757600080fd5b813588016040818b03601f19011215614cbf57600080fd5b614cc7613def565b8682013583811115614cd857600080fd5b614ce68c8983860101613f17565b825250604082013583811115614cfb57600080fd5b8083019250508a603f830112614d1057600080fd5b86820135614d20613fa782613ef4565b81815260059190911b830160400190888101908d831115614d4057600080fd5b604085015b83811015614d78578681351115614d5b57600080fd5b614d6b8f60408335890101613f17565b8352918a01918a01614d45565b50838a0152505085525050918301918301614c89565b60006040808385031215614da157600080fd5b614da9613def565b915082356001600160401b0380821115614dc257600080fd5b818501915085601f830112614dd657600080fd5b81356020614de6613fa783613ef4565b82815260059290921b84018101918181019089841115614e0557600080fd5b8286015b84811015614e9557803586811115614e215760008081fd5b8701808c03601f1901891315614e375760008081fd5b614e3f613def565b8582013588811115614e515760008081fd5b614e5f8e8883860101613f17565b8252508982013588811115614e745760008081fd5b614e828e8883860101613f17565b8288015250845250918301918301614e09565b5087525086810135945082851115614eac57600080fd5b6141f188868901614c45565b600060e08284031215614eca57600080fd5b614ed2613e17565b905081356001600160401b0380821115614eeb57600080fd5b614ef7858386016140d8565b83526020840135915080821115614f0d57600080fd5b614f1985838601614342565b60208401526040840135915080821115614f3257600080fd5b614f3e85838601614583565b60408401526060840135915080821115614f5757600080fd5b614f63858386016147d0565b60608401526080840135915080821115614f7c57600080fd5b614f88858386016148e9565b608084015260a0840135915080821115614fa157600080fd5b614fad85838601614b1b565b60a084015260c0840135915080821115614fc657600080fd5b50614fd384828501614d8e565b60c08301525092915050565b60008060408385031215614ff257600080fd5b8235915060208301356001600160401b0381111561500f57600080fd5b61501b85828601614eb8565b9150509250929050565b6000806040838503121561503857600080fd5b823561504381613c91565b91506020830135613cf281613c91565b600060e0828403121561506557600080fd5b61506d613e17565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015292915050565b6000602082840312156150c757600080fd5b604051602081016001600160401b03811182821017156150e9576150e9613dd9565b60405290508082356150fa81613cb6565b905292915050565b60008060006060848603121561511757600080fd5b8335925060208401356001600160401b038082111561513557600080fd5b90850190610120828803121561514a57600080fd5b615152613e39565b82358281111561516157600080fd5b830160e0818a03121561517357600080fd5b61517b613e17565b61518482613ca6565b815261519260208301613ca6565b60208201526151a360408301613ca6565b60408201526151b460608301613ca6565b60608201526151c560808301613ca6565b608082015260a0820135848111156151dc57600080fd5b6151e88b828501613f86565b60a08301525060c08201358481111561520057600080fd5b61520c8b828501613f86565b60c0830152508252506152228860208501615053565b60208201526152358861010085016150b5565b604082015280945050604086013591508082111561525257600080fd5b5061525f86828701614eb8565b9150509250925092565b6000806000806080858703121561527f57600080fd5b84359350602085013561529181613c91565b925060408501356152a181613c91565b915060608501356152b181613c91565b939692955090935050565b6000602082840312156152ce57600080fd5b5035919050565b60006101008201905060018060a01b0380845116835260208401516020840152604084015160408401526060840151151560608401526080840151151560808401528060a08501511660a08401525060c083015160c083015260e083015161534060e0840182613d21565b5092915050565b60008060006060848603121561535c57600080fd5b833561536781613c91565b925060208401359150604084013561537e81613cb6565b809150509250925092565b6000806040838503121561539c57600080fd5b823562ffffff8116811461504357600080fd5b6000806000606084860312156153c457600080fd5b8335925060208401356001600160401b03808211156153e257600080fd5b81860191506101208083890312156153f957600080fd5b615401613e39565b83358381111561541057600080fd5b8401808a0383131561542157600080fd5b615429613e5b565b925061543481613ca6565b835261544260208201613ca6565b602084015261545360408201613ca6565b604084015261546460608201613ca6565b606084015261547560808201613ca6565b608084015261548660a08201613ca6565b60a084015261549760c08201613ca6565b60c084015260e0810135848111156154ae57600080fd5b6154ba8b828401613f86565b60e08501525061010080820135858111156154d457600080fd5b6154e08c828501613f86565b82860152508383526154f58b60208801615053565b60208401526155068b8288016150b5565b604084015250508095505050604086013591508082111561525257600080fd5b60006101208201905060018060a01b0383511682526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c0830151151560c083015260e083015161558e60e084018261ffff169052565b50610100808401516155a282850182613d21565b505092915050565b60008060008060008060c087890312156155c357600080fd5b86356155ce81613c91565b955060208701356155de81613c91565b945060408701356155ee81613c91565b935060608701356155fe81613c91565b9250608087013561560e81613c91565b915060a087013561561e81613c91565b809150509295509295509295565b6001600160a01b03929092168252602082015260400190565b60006040828403121561565757600080fd5b61565f613def565b9050815181526020820151602082015292915050565b60006040828403121561568757600080fd5b610b6b8383615645565b93845260208401929092526040830152606082015260800190565b8051613cb181613cb6565b6000602082840312156156c957600080fd5b8151613d1a81613cb6565b9283526020830191909152604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b6e57610b6e6156ea565b81810381811115610b6e57610b6e6156ea565b8051613cb181613c91565b600060c0828403121561574357600080fd5b60405160c081016001600160401b038111828210171561576557615765613dd9565b604052825161577381613c91565b8152602083015161578381613c91565b6020820152604083015161579681613c91565b604082015260608301516157a981613c91565b606082015260808301516157bc81613c91565b608082015260a08301516157cf81613c91565b60a08201529392505050565b60006101a08201905060018060a01b03808a1683528089511660208401528060208a01511660408401528060408a01511660608401528060608a01511660808401525061582b60a0830188613d5a565b61583860e0830187613d5a565b615846610120830186613d5a565b8361016083015282151561018083015298975050505050505050565b60008082840361018081121561587757600080fd5b8351925061016080601f198301121561588f57600080fd5b615897613e7e565b91506020850151825260408501516020830152606085015160408301526080850151606083015260a0850151608083015260c085015160a083015260e085015160c08301526101008086015160e08401526101208087015182850152610140915081870151818501525081860151818401525050809150509250929050565b634e487b7160e01b600052601260045260246000fd5b60008261593b5761593b615916565b600160ff1b821460001984141615615955576159556156ea565b500590565b6020808252600a908201526921a7a72a2927a62622a960b11b604082015260600190565b6020808252600f908201526e4e6f742070726f70657220726f6c6560881b604082015260600190565b6000602082840312156159b957600080fd5b8151613d1a81613c91565b8082028115828204841417610b6e57610b6e6156ea565b6000826159ea576159ea615916565b500490565b6000610100808385031215615a0357600080fd5b604051908101906001600160401b0382118183101715615a2557615a25613dd9565b8160405283519150615a3682613c91565b8181526020840151602082015260408401516040820152615a59606085016156ac565b6060820152615a6a608085016156ac565b6080820152615a7b60a08501615726565b60a082015260c084015160c0820152615a9660e08501615726565b60e0820152949350505050565b600060208284031215615ab557600080fd5b5051919050565b6020808252600c908201526b5a65726f206164647265737360a01b604082015260600190565b60208082526009908201526804e6f203020737761760bc1b604082015260600190565b6001600160a01b039586168152938516602085015260408401929092526060830152909116608082015260a00190565b805163ffffffff81168114613cb157600080fd5b805161ffff81168114613cb157600080fd5b60006101808284031215615b6e57600080fd5b615b76613ea1565b8251815260208301516020820152604083015160408201526060830151606082015260808301516080820152615bae60a08401615726565b60a0820152615bbf60c08401615b35565b60c0820152615bd060e08401615726565b60e0820152610100615be3818501615b49565b90820152610120615bf58482016156ac565b90820152610140615c078482016156ac565b90820152610160615c19848201615726565b908201529392505050565b80516001600160501b0381168114613cb157600080fd5b600080600080600060a08688031215615c5357600080fd5b615c5c86615c24565b9450602086015193506040860151925060608601519150615c7f60808701615c24565b90509295509295909350565b60208082526014908201527320b1b1b7bab73a1034b9b73a102b37b235b0ab1960611b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006101208284031215615ce257600080fd5b615cea613e5b565b615cf383615726565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a0820152615d3360c084016156ac565b60c0820152615d4460e08401615b49565b60e0820152610100615c19818501615726565b60005b83811015615d72578181015183820152602001615d5a565b50506000910152565b60008151808452615d93816020860160208601615d57565b601f01601f19169290920160200192915050565b602081526000825160a06020840152615dc360c0840182615d7b565b905060018060a01b0360208501511660408401526040840151606084015260608401516080840152608084015160a08401528091505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251615e5c818460208701615d57565b9190910192915050565b602081526000610b6b6020830184615d7b56fea26469706673582212207a072469881af4464809089946758498e5ed38eade90e71346b5f925e546f02464736f6c63430008130033