0 txs
1 call
constructor
constructor(address _factoryV2, address factoryV3, address _positionManager, address _WETH9)
functions
checkOracleSlippage
viewfunction checkOracleSlippage(bytes path, uint24 maximumTickDivergence, uint32 secondsAgo) view
checkOracleSlippage
viewfunction checkOracleSlippage(bytes[] paths, uint128[] amounts, uint24 maximumTickDivergence, uint32 secondsAgo) view
factory
viewfunction factory() view returns (address)
factoryV2
viewfunction factoryV2() view returns (address)
positionManager
viewfunction positionManager() view returns (address)
WETH9
viewfunction WETH9() view returns (address)
approveMax
payablefunction approveMax(address token) payable
approveMaxMinusOne
payablefunction approveMaxMinusOne(address token) payable
approveZeroThenMax
payablefunction approveZeroThenMax(address token) payable
approveZeroThenMaxMinusOne
payablefunction approveZeroThenMaxMinusOne(address token) payable
callPositionManager
payablefunction callPositionManager(bytes data) payable returns (bytes result)
exactInput
payablefunction exactInput(tuple params) payable returns (uint256 amountOut)
exactInputSingle
payablefunction exactInputSingle(tuple params) payable returns (uint256 amountOut)
exactOutput
payablefunction exactOutput(tuple params) payable returns (uint256 amountIn)
exactOutputSingle
payablefunction exactOutputSingle(tuple params) payable returns (uint256 amountIn)
getApprovalType
nonpayablefunction getApprovalType(address token, uint256 amount) returns (uint8)
multicall
payablefunction multicall(bytes[] data) payable returns (bytes[] results)
multicall
payablefunction multicall(bytes32 previousBlockhash, bytes[] data) payable returns (bytes[])
multicall
payablefunction multicall(uint256 deadline, bytes[] data) payable returns (bytes[])
pull
payablefunction pull(address token, uint256 value) payable
refundETH
payablefunction refundETH() payable
selfPermit
payablefunction selfPermit(address token, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) payable
selfPermitAllowed
payablefunction selfPermitAllowed(address token, uint256 nonce, uint256 expiry, uint8 v, bytes32 r, bytes32 s) payable
selfPermitAllowedIfNecessary
payablefunction selfPermitAllowedIfNecessary(address token, uint256 nonce, uint256 expiry, uint8 v, bytes32 r, bytes32 s) payable
selfPermitIfNecessary
payablefunction selfPermitIfNecessary(address token, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) payable
swapExactTokensForTokens
payablefunction swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to) payable returns (uint256 amountOut)
swapTokensForExactTokens
payablefunction swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to) payable returns (uint256 amountIn)
sweepToken
payablefunction sweepToken(address token, uint256 amountMinimum, address recipient) payable
sweepToken
payablefunction sweepToken(address token, uint256 amountMinimum) payable
sweepTokenWithFee
payablefunction sweepTokenWithFee(address token, uint256 amountMinimum, address recipient, uint256 feeBips, address feeRecipient) payable
sweepTokenWithFee
payablefunction sweepTokenWithFee(address token, uint256 amountMinimum, uint256 feeBips, address feeRecipient) payable
uniswapV3SwapCallback
nonpayablefunction uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes _data)
unwrapWETH9
payablefunction unwrapWETH9(uint256 amountMinimum, address recipient) payable
unwrapWETH9
payablefunction unwrapWETH9(uint256 amountMinimum) payable
unwrapWETH9WithFee
payablefunction unwrapWETH9WithFee(uint256 amountMinimum, address recipient, uint256 feeBips, address feeRecipient) payable
unwrapWETH9WithFee
payablefunction unwrapWETH9WithFee(uint256 amountMinimum, uint256 feeBips, address feeRecipient) payable
wrapETH
payablefunction wrapETH(uint256 value) payable
events
No events.
errors
No errors.
creation bytecode
0x6101006040526000196000553480156200001857600080fd5b5060405162006036380380620060368339810160408190526200003b9162000087565b6001600160601b0319606094851b811660805291841b821660a05291831b811660c052911b1660e052620000e3565b80516001600160a01b03811681146200008257600080fd5b919050565b600080600080608085870312156200009d578384fd5b620000a8856200006a565b9350620000b8602086016200006a565b9250620000c8604086016200006a565b9150620000d8606086016200006a565b905092959194509250565b60805160601c60a05160601c60c05160601c60e05160601c615e9e620001986000398061028b52806108d45280611045528061116f5280611216528061147752806115a15280612abe5280612b1e5280612b9f525080611c4f52806122b35280613be352508061132752806113eb5280611437528061174a5280611776528061191b5280611c9f52806132535250806109fa5280610ace5280610d7a52806114135280612cf15280612eb45250615e9e6000f3fe60806040526004361061026e5760003560e01c80639b2c0a3711610153578063d4ef38de116100cb578063efdeed8e1161007f578063f2d5d56b11610064578063f2d5d56b14610612578063f3995c6714610625578063fa461e331461063857610319565b8063efdeed8e146105d2578063f25801a7146105f257610319565b8063df2ab5bb116100b0578063df2ab5bb14610599578063e0e189a0146105ac578063e90a182f146105bf57610319565b8063d4ef38de14610559578063dee00f351461056c57610319565b8063b3a2af1311610122578063c2e3140a11610107578063c2e3140a1461051e578063c45a015514610531578063cab372ce1461054657610319565b8063b3a2af13146104eb578063b858183f1461050b57610319565b80639b2c0a371461049f578063a4a78f0c146104b2578063ab3fdd50146104c5578063ac9650d8146104d857610319565b806349404b7c116101e6578063571ac8b0116101b5578063639d71a91161019a578063639d71a91461046257806368e0d4e114610475578063791b98bc1461048a57610319565b8063571ac8b01461043c5780635ae401dc1461044f57610319565b806349404b7c146103e157806349616997146103f45780634aa4a4fc146104075780635023b4df1461042957610319565b80631f0464d11161023d57806342712a671161022257806342712a67146103a85780634659a494146103bb578063472b43f3146103ce57610319565b80631f0464d1146103755780633068c5541461039557610319565b806304e45aaf1461031e57806309b813461461034757806312210e8a1461035a5780631c58db4f1461036257610319565b36610319573373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461031757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f742057455448390000000000000000000000000000000000000000000000604482015290519081900360640190fd5b005b600080fd5b61033161032c36600461550a565b610658565b60405161033e9190615cf9565b60405180910390f35b6103316103553660046155a5565b6107e0565b6103176108c0565b610317610370366004615765565b6108d2565b6103886103833660046152b3565b610956565b60405161033e9190615a7c565b6103176103a33660046150e4565b6109e0565b6103316103b636600461582f565b6109f3565b6103176103c936600461512d565b610bcd565b6103316103dc36600461582f565b610c8d565b6103176103ef366004615795565b611041565b610317610402366004615765565b611207565b34801561041357600080fd5b5061041c611214565b60405161033e91906159bc565b6103316104373660046155dd565b611238565b61031761044a366004614ff7565b611321565b61038861045d3660046152b3565b61136c565b610317610470366004614ff7565b6113e5565b34801561048157600080fd5b5061041c611411565b34801561049657600080fd5b5061041c611435565b6103176104ad3660046157c4565b611459565b6103176104c036600461512d565b61166f565b6103176104d3366004614ff7565b611744565b6103886104e6366004615188565b6117bb565b6104fe6104f93660046152fd565b611915565b60405161033e9190615afa565b610331610519366004615464565b6119d5565b61031761052c36600461512d565b611b98565b34801561053d57600080fd5b5061041c611c4d565b610317610554366004614ff7565b611770565b610317610567366004615802565b611c71565b34801561057857600080fd5b5061058c61058736600461501a565b611c7d565b60405161033e9190615b0d565b6103176105a7366004615045565b611e9b565b6103176105ba366004615086565b611fb2565b6103176105cd36600461501a565b612118565b3480156105de57600080fd5b506103176105ed3660046151c8565b612127565b3480156105fe57600080fd5b5061031761060d366004615331565b612179565b61031761062036600461501a565b6121ca565b61031761063336600461512d565b6121d6565b34801561064457600080fd5b506103176106533660046153a9565b61226e565b600080600083608001511415610715575081516040517f70a0823100000000000000000000000000000000000000000000000000000000815260019173ffffffffffffffffffffffffffffffffffffffff16906370a08231906106bf9030906004016159bc565b60206040518083038186803b1580156106d757600080fd5b505afa1580156106eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070f919061577d565b60808401525b610791836080015184606001518560c001516040518060400160405280886000015189604001518a602001516040516020016107539392919061592a565b6040516020818303038152906040528152602001866107725733610774565b305b73ffffffffffffffffffffffffffffffffffffffff1690526123b2565b91508260a001518210156107da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d190615c6b565b60405180910390fd5b50919050565b6000610854604083018035906107f99060208601614ff7565b60408051808201909152600090806108118880615d3d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525033602090910152612563565b50506000546060820135811115610897576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d190615bfd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600055919050565b47156108d0576108d0334761274a565b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561093a57600080fd5b505af115801561094e573d6000803e3d6000fd5b505050505050565b606083806001430340146109cb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f426c6f636b686173680000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6109d584846117bb565b91505b509392505050565b6109ed8484338585611fb2565b50505050565b6000610a537f00000000000000000000000000000000000000000000000000000000000000008786868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061289892505050565b600081518110610a5f57fe5b6020026020010151905084811115610aa3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d190615bfd565b610b3c84846000818110610ab357fe5b9050602002016020810190610ac89190614ff7565b33610b367f000000000000000000000000000000000000000000000000000000000000000088886000818110610afa57fe5b9050602002016020810190610b0f9190614ff7565b89896001818110610b1c57fe5b9050602002016020810190610b319190614ff7565b6129d1565b84612abc565b73ffffffffffffffffffffffffffffffffffffffff821660011415610b6357339150610b86565b73ffffffffffffffffffffffffffffffffffffffff821660021415610b86573091505b610bc4848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250612c9a915050565b95945050505050565b604080517f8fcbaf0c00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e48101839052905173ffffffffffffffffffffffffffffffffffffffff881691638fcbaf0c9161010480830192600092919082900301818387803b158015610c6d57600080fd5b505af1158015610c81573d6000803e3d6000fd5b50505050505050505050565b60008086610d43575060018484600081610ca357fe5b9050602002016020810190610cb89190614ff7565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610cf091906159bc565b60206040518083038186803b158015610d0857600080fd5b505afa158015610d1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d40919061577d565b96505b610dce85856000818110610d5357fe5b9050602002016020810190610d689190614ff7565b82610d735733610d75565b305b610dc87f000000000000000000000000000000000000000000000000000000000000000089896000818110610da657fe5b9050602002016020810190610dbb9190614ff7565b8a8a6001818110610b1c57fe5b8a612abc565b73ffffffffffffffffffffffffffffffffffffffff831660011415610df557339250610e18565b73ffffffffffffffffffffffffffffffffffffffff831660021415610e18573092505b600085857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110610e4857fe5b9050602002016020810190610e5d9190614ff7565b73ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401610e9591906159bc565b60206040518083038186803b158015610ead57600080fd5b505afa158015610ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee5919061577d565b9050610f25868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250889250612c9a915050565b610ffa8187877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110610f5757fe5b9050602002016020810190610f6c9190614ff7565b73ffffffffffffffffffffffffffffffffffffffff166370a08231876040518263ffffffff1660e01b8152600401610fa491906159bc565b60206040518083038186803b158015610fbc57600080fd5b505afa158015610fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff4919061577d565b90612f9f565b925086831015611036576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d190615c6b565b505095945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156110ca57600080fd5b505afa1580156110de573d6000803e3d6000fd5b505050506040513d60208110156110f457600080fd5b505190508281101561116757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742057455448390000000000000000000000000000604482015290519081900360640190fd5b8015611202577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156111e057600080fd5b505af11580156111f4573d6000803e3d6000fd5b50505050611202828261274a565b505050565b6112118133611041565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006112e1608083018035906112519060608601614ff7565b61126160e0860160c08701614ff7565b604051806040016040528087602001602081019061127f9190614ff7565b61128f60608a0160408b0161574b565b61129c60208b018b614ff7565b6040516020016112ae9392919061592a565b60405160208183030381529060405281526020013373ffffffffffffffffffffffffffffffffffffffff16815250612563565b90508160a00135811115610897576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d190615bfd565b611211817f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612faf565b60608380611378613184565b11156109cb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b611321817f00000000000000000000000000000000000000000000000000000000000000006000612faf565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008211801561146a575060648211155b61147357600080fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156114fc57600080fd5b505afa158015611510573d6000803e3d6000fd5b505050506040513d602081101561152657600080fd5b505190508481101561159957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742057455448390000000000000000000000000000604482015290519081900360640190fd5b8015611668577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561161257600080fd5b505af1158015611626573d6000803e3d6000fd5b505050506000612710611642858461318890919063ffffffff16565b8161164957fe5b049050801561165c5761165c838261274a565b61094e8582840361274a565b5050505050565b604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015290517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9173ffffffffffffffffffffffffffffffffffffffff89169163dd62ed3e91604480820192602092909190829003018186803b15801561170457600080fd5b505afa158015611718573d6000803e3d6000fd5b505050506040513d602081101561172e57600080fd5b5051101561094e5761094e868686868686610bcd565b611770817f00000000000000000000000000000000000000000000000000000000000000006000612faf565b611211817f00000000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe612faf565b60608167ffffffffffffffff811180156117d457600080fd5b5060405190808252806020026020018201604052801561180857816020015b60608152602001906001900390816117f35790505b50905060005b8281101561190e576000803086868581811061182657fe5b90506020028101906118389190615d3d565b604051611846929190615990565b600060405180830381855af49150503d8060008114611881576040519150601f19603f3d011682016040523d82523d6000602084013e611886565b606091505b5091509150816118ec5760448151101561189f57600080fd5b600481019050808060200190518101906118b991906153fa565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d19190615afa565b808484815181106118f957fe5b6020908102919091010152505060010161180e565b5092915050565b606060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168484604051611960929190615990565b6000604051808303816000865af19150503d806000811461199d576040519150601f19603f3d011682016040523d82523d6000602084013e6119a2565b606091505b50925090508061190e576044825110156119bb57600080fd5b600482019150818060200190518101906118b991906153fa565b600080600083604001511415611aa6576001905060006119f884600001516131ac565b50506040517f70a0823100000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906370a0823190611a4f9030906004016159bc565b60206040518083038186803b158015611a6757600080fd5b505afa158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9f919061577d565b6040850152505b600081611ab35733611ab5565b305b90505b6000611ac785600001516131dd565b9050611b20856040015182611ae0578660200151611ae2565b305b60006040518060400160405280611afc8b600001516131e9565b81526020018773ffffffffffffffffffffffffffffffffffffffff168152506123b2565b60408601528015611b40578451309250611b39906131f8565b8552611b4d565b8460400151935050611b53565b50611ab8565b8360600151831015611b91576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d190615c6b565b5050919050565b604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051869173ffffffffffffffffffffffffffffffffffffffff89169163dd62ed3e91604480820192602092909190829003018186803b158015611c0d57600080fd5b505afa158015611c21573d6000803e3d6000fd5b505050506040513d6020811015611c3757600080fd5b5051101561094e5761094e8686868686866121d6565b7f000000000000000000000000000000000000000000000000000000000000000081565b61120283338484611459565b6000808373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e307f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b8152600401611cdb9291906159dd565b60206040518083038186803b158015611cf357600080fd5b505afa158015611d07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2b919061577d565b9050828110611d3e576000915050611e95565b611d68847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61322d565b15611d77576001915050611e95565b611da1847ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe61322d565b15611db0576002915050611e95565b611dbb84600061322d565b611df1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d190615b8f565b611e1b847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61322d565b15611e2a576003915050611e95565b611e54847ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe61322d565b15611e63576004915050611e95565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d190615b21565b92915050565b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611f0457600080fd5b505afa158015611f18573d6000803e3d6000fd5b505050506040513d6020811015611f2e57600080fd5b5051905082811015611fa157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b80156109ed576109ed848383613379565b600082118015611fc3575060648211155b611fcc57600080fd5b60008573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561203557600080fd5b505afa158015612049573d6000803e3d6000fd5b505050506040513d602081101561205f57600080fd5b50519050848110156120d257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b801561094e5760006127106120e78386613188565b816120ee57fe5b049050801561210257612102878483613379565b61210f8786838503613379565b50505050505050565b612123828233611e9b565b5050565b60008061213586868561354e565b915091508362ffffff168183031261094e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d190615c34565b6000806121868584613761565b915091508362ffffff1681830312611668576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d190615c34565b612123823330846139e9565b604080517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c48101839052905173ffffffffffffffffffffffffffffffffffffffff88169163d505accf9160e480830192600092919082900301818387803b158015610c6d57600080fd5b600084138061227d5750600083135b61228657600080fd5b6000612294828401846155ee565b905060008060006122a884600001516131ac565b9250925092506122da7f0000000000000000000000000000000000000000000000000000000000000000848484613bc6565b5060008060008a1361231b578473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16108961234c565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16108a5b91509150811561236b576123668587602001513384612abc565b610c81565b8551612376906131dd565b1561239b578551612386906131f8565b86526123958133600089612563565b50610c81565b80600081905550610c818487602001513384612abc565b600073ffffffffffffffffffffffffffffffffffffffff8416600114156123db573393506123fe565b73ffffffffffffffffffffffffffffffffffffffff8416600214156123fe573093505b600080600061241085600001516131ac565b9194509250905073ffffffffffffffffffffffffffffffffffffffff80831690841610600080612441868686613bdc565b73ffffffffffffffffffffffffffffffffffffffff1663128acb088b856124678f613c1a565b73ffffffffffffffffffffffffffffffffffffffff8e1615612489578d6124af565b876124a85773fffd8963efd1fc6a506488495d951d5263988d256124af565b6401000276a45b8d6040516020016124c09190615ca2565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016124ef959493929190615a04565b6040805180830381600087803b15801561250857600080fd5b505af115801561251c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125409190615386565b915091508261254f5781612551565b805b6000039b9a5050505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff84166001141561258c573393506125af565b73ffffffffffffffffffffffffffffffffffffffff8416600214156125af573093505b60008060006125c185600001516131ac565b9194509250905073ffffffffffffffffffffffffffffffffffffffff808416908316106000806125f2858786613bdc565b73ffffffffffffffffffffffffffffffffffffffff1663128acb088b856126188f613c1a565b60000373ffffffffffffffffffffffffffffffffffffffff8e161561263d578d612663565b8761265c5773fffd8963efd1fc6a506488495d951d5263988d25612663565b6401000276a45b8d6040516020016126749190615ca2565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016126a3959493929190615a04565b6040805180830381600087803b1580156126bc57600080fd5b505af11580156126d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f49190615386565b9150915060008361270957818360000361270f565b82826000035b909850905073ffffffffffffffffffffffffffffffffffffffff8a1661273b578b811461273b57600080fd5b50505050505050949350505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b602083106127c157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612784565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612823576040519150601f19603f3d011682016040523d82523d6000602084013e612828565b606091505b505090508061120257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354450000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60606002825110156128a957600080fd5b815167ffffffffffffffff811180156128c157600080fd5b506040519080825280602002602001820160405280156128eb578160200160208202803683370190505b50905082816001835103815181106128ff57fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b80156109d85760008061296c8786600186038151811061294b57fe5b602002602001015187868151811061295f57fe5b6020026020010151613c4c565b9150915061298e84848151811061297f57fe5b60200260200101518383613d34565b84600185038151811061299d57fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0161292f565b60008060006129e08585613e6c565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612b175750804710155b15612c60577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b8457600080fd5b505af1158015612b98573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612c2e57600080fd5b505af1158015612c42573d6000803e3d6000fd5b505050506040513d6020811015612c5857600080fd5b506109ed9050565b73ffffffffffffffffffffffffffffffffffffffff8316301415612c8e57612c89848383613379565b6109ed565b6109ed848484846139e9565b60005b600183510381101561120257600080848381518110612cb857fe5b6020026020010151858460010181518110612ccf57fe5b6020026020010151915091506000612ce78383613e6c565b5090506000612d177f000000000000000000000000000000000000000000000000000000000000000085856129d1565b90506000806000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015612d6557600080fd5b505afa158015612d79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9d919061567e565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691506000808773ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614612dff578284612e02565b83835b91509150612e43828b73ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401610fa491906159bc565b9550612e50868383613f11565b9450505050506000808573ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614612e9457826000612e98565b6000835b91509150600060028c51038a10612eaf578a612ef0565b612ef07f0000000000000000000000000000000000000000000000000000000000000000898e8d60020181518110612ee357fe5b60200260200101516129d1565b604080516000815260208101918290527f022c0d9f0000000000000000000000000000000000000000000000000000000090915290915073ffffffffffffffffffffffffffffffffffffffff87169063022c0d9f90612f589086908690869060248101615d02565b600060405180830381600087803b158015612f7257600080fd5b505af1158015612f86573d6000803e3d6000fd5b50506001909b019a50612c9d9950505050505050505050565b80820382811115611e9557600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b6020831061308457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613047565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146130e6576040519150601f19603f3d011682016040523d82523d6000602084013e6130eb565b606091505b5091509150818015613119575080511580613119575080806020019051602081101561311657600080fd5b50515b61166857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5341000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b4290565b60008215806131a3575050818102818382816131a057fe5b04145b611e9557600080fd5b600080806131ba8482614049565b92506131c7846014614149565b90506131d4846017614049565b91509193909250565b8051604211155b919050565b6060611e95826000602b614239565b8051606090611e959083906017907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe901614239565b60008060008473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b7f000000000000000000000000000000000000000000000000000000000000000086604051602401613284929190615a56565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161330d91906159a0565b6000604051808303816000865af19150503d806000811461334a576040519150601f19603f3d011682016040523d82523d6000602084013e61334f565b606091505b5091509150818015610bc4575080511580610bc4575080806020019051810190610bc49190615299565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b6020831061344e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613411565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146134b0576040519150601f19603f3d011682016040523d82523d6000602084013e6134b5565b606091505b50915091508180156134e35750805115806134e357508080602001905160208110156134e057600080fd5b50515b61166857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5354000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600080835185511461355f57600080fd5b6000855167ffffffffffffffff8111801561357957600080fd5b506040519080825280602002602001820160405280156135b357816020015b6135a0614e00565b8152602001906001900390816135985790505b5090506000865167ffffffffffffffff811180156135d057600080fd5b5060405190808252806020026020018201604052801561360a57816020015b6135f7614e00565b8152602001906001900390816135ef5790505b50905060005b875181101561373a576000806136398a848151811061362b57fe5b602002602001015189613761565b9150915061364682614420565b85848151811061365257fe5b60200260200101516000019060020b908160020b8152505061367381614420565b84848151811061367f57fe5b60200260200101516000019060020b908160020b815250508883815181106136a357fe5b60200260200101518584815181106136b757fe5b6020026020010151602001906fffffffffffffffffffffffffffffffff1690816fffffffffffffffffffffffffffffffff16815250508883815181106136f957fe5b602002602001015184848151811061370d57fe5b6020908102919091018101516fffffffffffffffffffffffffffffffff9092169101525050600101613610565b5061374482614431565b60020b935061375281614431565b60020b92505050935093915050565b60008060008061377086614519565b90506000805b8281101561398e57600080600061378c8b6131ac565b925092509250600061379f848484613bdc565b905060008063ffffffff8d166137c8576137b883614544565b600291820b9350900b905061386a565b6137d2838e6147dc565b8160020b915050809250508273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561382357600080fd5b505afa158015613837573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061385b91906156b9565b50505060029290920b93505050505b600189038714156138ab578473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161099506138ba565b6138b48e6131f8565b9d508597505b600087158061395b57508673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff161061392b578673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161061395b565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16105b90508015613970579b82019b9a81019a61397b565b828d039c50818c039b505b5050600190950194506137769350505050565b50826139df577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff850294507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff840293505b5050509250929050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000178152925182516000948594938a169392918291908083835b60208310613ac657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613a89565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613b28576040519150601f19603f3d011682016040523d82523d6000602084013e613b2d565b606091505b5091509150818015613b5b575080511580613b5b5750808060200190516020811015613b5857600080fd5b50515b61094e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354460000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000610bc485613bd7868686614c0d565b614c8a565b6000613c127f0000000000000000000000000000000000000000000000000000000000000000613c0d868686614c0d565b614cba565b949350505050565b60007f80000000000000000000000000000000000000000000000000000000000000008210613c4857600080fd5b5090565b6000806000613c5b8585613e6c565b509050600080613c6c8888886129d1565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015613cb157600080fd5b505afa158015613cc5573d6000803e3d6000fd5b505050506040513d6060811015613cdb57600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff87811690841614613d22578082613d25565b81815b90999098509650505050505050565b6000808411613da457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f494e53554646494349454e545f4f55545055545f414d4f554e54000000000000604482015290519081900360640190fd5b600083118015613db45750600082115b613e1f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f4c495155494449545900000000000000000000604482015290519081900360640190fd5b6000613e376103e8613e318688613188565b90613188565b90506000613e4b6103e5613e318689612f9f565b9050613e626001828481613e5b57fe5b0490614df0565b9695505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613ea857600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610613ee2578284613ee5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216613f0a57600080fd5b9250929050565b6000808411613f8157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f494e53554646494349454e545f494e5055545f414d4f554e5400000000000000604482015290519081900360640190fd5b600083118015613f915750600082115b613ffc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f4c495155494449545900000000000000000000604482015290519081900360640190fd5b600061400a856103e5613188565b905060006140188285613188565b905060006140328361402c886103e8613188565b90614df0565b905080828161403d57fe5b04979650505050505050565b6000818260140110156140bd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b816014018351101561413057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b6000818260030110156141bd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b816003018351101561423057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b60608182601f0110156142ad57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b82828401101561431e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b8183018451101561439057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b6060821580156143af5760405191506000825260208201604052614417565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156143e85780518352602092830192016143d0565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b80600281900b81146131e457600080fd5b6000806000805b84518110156144c65784818151811061444d57fe5b6020026020010151602001516fffffffffffffffffffffffffffffffff1685828151811061447757fe5b60200260200101516000015160020b028301925084818151811061449757fe5b6020026020010151602001516fffffffffffffffffffffffffffffffff16820191508080600101915050614438565b508082816144d057fe5b0592506000821280156144eb57508082816144e757fe5b0715155b15611b915750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01919050565b5160177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec9091010490565b6000806000808473ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561459057600080fd5b505afa1580156145a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145c891906156b9565b50939750919550935050600161ffff84161191506146149050576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d190615bc6565b6000808673ffffffffffffffffffffffffffffffffffffffff1663252c09d7856040518263ffffffff1660e01b81526004016146509190615cea565b60806040518083038186803b15801561466857600080fd5b505afa15801561467c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146a0919061588a565b5050915091506146ae613184565b63ffffffff168263ffffffff16146146c8578495506147d3565b60008361ffff1660018561ffff168761ffff160103816146e457fe5b06905060008060008a73ffffffffffffffffffffffffffffffffffffffff1663252c09d7856040518263ffffffff1660e01b81526004016147259190615cf9565b60806040518083038186803b15801561473d57600080fd5b505afa158015614751573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614775919061588a565b93505092509250806147b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d190615b58565b82860363ffffffff811683870360060b816147ca57fe5b059a5050505050505b50505050915091565b60008063ffffffff831661485157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f4250000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b604080516002808252606082018352600092602083019080368337019050509050838160008151811061488057fe5b602002602001019063ffffffff16908163ffffffff16815250506000816001815181106148a957fe5b63ffffffff9092166020928302919091018201526040517f883bdbfd00000000000000000000000000000000000000000000000000000000815260048101828152835160248301528351600093849373ffffffffffffffffffffffffffffffffffffffff8b169363883bdbfd9388939192839260449091019185820191028083838b5b8381101561494457818101518382015260200161492c565b505050509050019250505060006040518083038186803b15801561496757600080fd5b505afa15801561497b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160409081528110156149c257600080fd5b81019080805160405193929190846401000000008211156149e257600080fd5b9083019060208201858111156149f757600080fd5b8251866020820283011164010000000082111715614a1457600080fd5b82525081516020918201928201910280838360005b83811015614a41578181015183820152602001614a29565b5050505090500160405260200180516040519392919084640100000000821115614a6a57600080fd5b908301906020820185811115614a7f57600080fd5b8251866020820283011164010000000082111715614a9c57600080fd5b82525081516020918201928201910280838360005b83811015614ac9578181015183820152602001614ab1565b5050505090500160405250505091509150600082600081518110614ae957fe5b602002602001015183600181518110614afe57fe5b6020026020010151039050600082600081518110614b1857fe5b602002602001015183600181518110614b2d57fe5b60200260200101510390508763ffffffff168260060b81614b4a57fe5b05965060008260060b128015614b7457508763ffffffff168260060b81614b6d57fe5b0760060b15155b15614b9f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909601955b63ffffffff881673ffffffffffffffffffffffffffffffffffffffff0277ffffffffffffffffffffffffffffffffffffffff00000000602083901b1677ffffffffffffffffffffffffffffffffffffffffffffffff821681614bfd57fe5b0496505050505050509250929050565b614c15614e17565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115614c4d579192915b506040805160608101825273ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff169181019190915290565b6000614c968383614cba565b90503373ffffffffffffffffffffffffffffffffffffffff821614611e9557600080fd5b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1610614cfc57600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d5808301919091528251808303909101815260f5909101909152805191012090565b80820182811015611e9557600080fd5b604080518082019091526000808252602082015290565b604080516060810182526000808252602082018190529181019190915290565b80356131e481615e4e565b60008083601f840112614e53578182fd5b50813567ffffffffffffffff811115614e6a578182fd5b6020830191508360208083028501011115613f0a57600080fd5b600082601f830112614e94578081fd5b81356020614ea9614ea483615dc4565b615da0565b8281528181019085830183850287018401881015614ec5578586fd5b855b85811015614f005781356fffffffffffffffffffffffffffffffff81168114614eee578788fd5b84529284019290840190600101614ec7565b5090979650505050505050565b805180151581146131e457600080fd5b60008083601f840112614f2e578182fd5b50813567ffffffffffffffff811115614f45578182fd5b602083019150836020828501011115613f0a57600080fd5b600082601f830112614f6d578081fd5b8135614f7b614ea482615de2565b818152846020838601011115614f8f578283fd5b816020850160208301379081016020019190915292915050565b80516dffffffffffffffffffffffffffff811681146131e457600080fd5b805161ffff811681146131e457600080fd5b803562ffffff811681146131e457600080fd5b80356131e481615e70565b600060208284031215615008578081fd5b813561501381615e4e565b9392505050565b6000806040838503121561502c578081fd5b823561503781615e4e565b946020939093013593505050565b600080600060608486031215615059578081fd5b833561506481615e4e565b925060208401359150604084013561507b81615e4e565b809150509250925092565b600080600080600060a0868803121561509d578283fd5b85356150a881615e4e565b94506020860135935060408601356150bf81615e4e565b92506060860135915060808601356150d681615e4e565b809150509295509295909350565b600080600080608085870312156150f9578182fd5b843561510481615e4e565b93506020850135925060408501359150606085013561512281615e4e565b939692955090935050565b60008060008060008060c08789031215615145578384fd5b863561515081615e4e565b95506020870135945060408701359350606087013561516e81615e82565b9598949750929560808101359460a0909101359350915050565b6000806020838503121561519a578182fd5b823567ffffffffffffffff8111156151b0578283fd5b6151bc85828601614e42565b90969095509350505050565b600080600080608085870312156151dd578182fd5b843567ffffffffffffffff808211156151f4578384fd5b818701915087601f830112615207578384fd5b81356020615217614ea483615dc4565b82815281810190858301885b8581101561524c5761523a8e8684358b0101614f5d565b84529284019290840190600101615223565b50909950505088013592505080821115615264578384fd5b5061527187828801614e84565b93505061528060408601614fd9565b915061528e60608601614fec565b905092959194509250565b6000602082840312156152aa578081fd5b61501382614f0d565b6000806000604084860312156152c7578081fd5b83359250602084013567ffffffffffffffff8111156152e4578182fd5b6152f086828701614e42565b9497909650939450505050565b6000806020838503121561530f578182fd5b823567ffffffffffffffff811115615325578283fd5b6151bc85828601614f1d565b600080600060608486031215615345578081fd5b833567ffffffffffffffff81111561535b578182fd5b61536786828701614f5d565b93505061537660208501614fd9565b9150604084013561507b81615e70565b60008060408385031215615398578182fd5b505080516020909101519092909150565b600080600080606085870312156153be578182fd5b8435935060208501359250604085013567ffffffffffffffff8111156153e2578283fd5b6153ee87828801614f1d565b95989497509550505050565b60006020828403121561540b578081fd5b815167ffffffffffffffff811115615421578182fd5b8201601f81018413615431578182fd5b805161543f614ea482615de2565b818152856020838501011115615453578384fd5b610bc4826020830160208601615e22565b600060208284031215615475578081fd5b813567ffffffffffffffff8082111561548c578283fd5b908301906080828603121561549f578283fd5b6040516080810181811083821117156154b457fe5b6040528235828111156154c5578485fd5b6154d187828601614f5d565b825250602083013591506154e482615e4e565b816020820152604083013560408201526060830135606082015280935050505092915050565b600060e0828403121561551b578081fd5b60405160e0810181811067ffffffffffffffff8211171561553857fe5b60405261554483614e37565b815261555260208401614e37565b602082015261556360408401614fd9565b604082015261557460608401614e37565b60608201526080830135608082015260a083013560a082015261559960c08401614e37565b60c08201529392505050565b6000602082840312156155b6578081fd5b813567ffffffffffffffff8111156155cc578182fd5b820160808185031215615013578182fd5b600060e082840312156107da578081fd5b6000602082840312156155ff578081fd5b813567ffffffffffffffff80821115615616578283fd5b9083019060408286031215615629578283fd5b60405160408101818110838211171561563e57fe5b60405282358281111561564f578485fd5b61565b87828601614f5d565b8252506020830135925061566e83615e4e565b6020810192909252509392505050565b600080600060608486031215615692578081fd5b61569b84614fa9565b92506156a960208501614fa9565b9150604084015161507b81615e70565b600080600080600080600060e0888a0312156156d3578485fd5b87516156de81615e4e565b8097505060208801518060020b81146156f5578586fd5b955061570360408901614fc7565b945061571160608901614fc7565b935061571f60808901614fc7565b925060a088015161572f81615e82565b915061573d60c08901614f0d565b905092959891949750929550565b60006020828403121561575c578081fd5b61501382614fd9565b600060208284031215615776578081fd5b5035919050565b60006020828403121561578e578081fd5b5051919050565b600080604083850312156157a7578182fd5b8235915060208301356157b981615e4e565b809150509250929050565b600080600080608085870312156157d9578182fd5b8435935060208501356157eb81615e4e565b925060408501359150606085013561512281615e4e565b600080600060608486031215615816578081fd5b8335925060208401359150604084013561507b81615e4e565b600080600080600060808688031215615846578283fd5b8535945060208601359350604086013567ffffffffffffffff81111561586a578384fd5b61587688828901614e42565b90945092505060608601356150d681615e4e565b6000806000806080858703121561589f578182fd5b84516158aa81615e70565b8094505060208501518060060b81146158c1578283fd5b60408601519093506158d281615e4e565b915061528e60608601614f0d565b600081518084526158f8816020860160208601615e22565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b606093841b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b6000828483379101908152919050565b600082516159b2818460208701615e22565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a06080830152615a4b60a08301846158e0565b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015615aed577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452615adb8583516158e0565b94509285019290850190600101615aa1565b5092979650505050505050565b60006020825261501360208301846158e0565b6020810160058310615b1b57fe5b91905290565b60208082526003908201527f4150500000000000000000000000000000000000000000000000000000000000604082015260600190565b60208082526003908201527f4f4e490000000000000000000000000000000000000000000000000000000000604082015260600190565b60208082526002908201527f4130000000000000000000000000000000000000000000000000000000000000604082015260600190565b60208082526003908201527f4e454f0000000000000000000000000000000000000000000000000000000000604082015260600190565b60208082526012908201527f546f6f206d756368207265717565737465640000000000000000000000000000604082015260600190565b60208082526002908201527f5444000000000000000000000000000000000000000000000000000000000000604082015260600190565b60208082526013908201527f546f6f206c6974746c6520726563656976656400000000000000000000000000604082015260600190565b600060208252825160406020840152615cbe60608401826158e0565b905073ffffffffffffffffffffffffffffffffffffffff60208501511660408401528091505092915050565b61ffff91909116815260200190565b90815260200190565b600085825284602083015273ffffffffffffffffffffffffffffffffffffffff8416604083015260806060830152613e6260808301846158e0565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112615d71578283fd5b83018035915067ffffffffffffffff821115615d8b578283fd5b602001915036819003821315613f0a57600080fd5b60405181810167ffffffffffffffff81118282101715615dbc57fe5b604052919050565b600067ffffffffffffffff821115615dd857fe5b5060209081020190565b600067ffffffffffffffff821115615df657fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015615e3d578181015183820152602001615e25565b838111156109ed5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461121157600080fd5b63ffffffff8116811461121157600080fd5b60ff8116811461121157600080fdfea164736f6c6343000706000a0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f0000000000000000000000001f98431c8ad98523631ae4a59f267346ea31f984000000000000000000000000c36442b4a4522e871399cd717abdd847ab11fe88000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2