0 txs
0 calls
constructor
constructor((address hedgeRebalancer, address nftPosMgr, address router, address mathLib, address gvFactory, address helperLib, address feeModel) params)
functions
feeModel
viewfunction feeModel() view returns (address)
gvFactory
viewfunction gvFactory() view returns (address)
hedgeRebalancer
viewfunction hedgeRebalancer() view returns (address)
helperLib
viewfunction helperLib() view returns (address)
mathLib
viewfunction mathLib() view returns (address)
nftPosMgr
viewfunction nftPosMgr() view returns (address)
router
viewfunction router() view returns (address)
processDeposits
nonpayablefunction processDeposits(bytes path0, bytes path1) returns (uint256 newShares)
events
DepositCount
event DepositCount(address indexed vault, uint256 count)
TotalNetFees
event TotalNetFees(address indexed vault, uint256 _fees0, uint256 _fees1, uint64 _poolShare, uint16 _protocolShare)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
errors
ExcessiveBurn
error ExcessiveBurn()
Expired
error Expired()
Forbidden
error Forbidden()
GSInvalidSwap
error GSInvalidSwap()
InvalidAssetToken
error InvalidAssetToken()
InvalidHedgeSize
error InvalidHedgeSize()
InvalidPath
error InvalidPath(uint8 id)
InvalidRatio
error InvalidRatio(uint8 typ)
Locked
error Locked()
MaxTick
error MaxTick()
ST_Fail
error ST_Fail()
StalePriceError
error StalePriceError(uint8 typ)
TotalLiquidity
error TotalLiquidity()
ZeroAddress
error ZeroAddress()
ZeroAmount
error ZeroAmount()
ZeroHedgeLiquidity
error ZeroHedgeLiquidity()
creation bytecode
0x6101606040523480156200001257600080fd5b5060405162004a9638038062004a968339810160408190526200003591620000a8565b60408101516001600160a01b0390811660809081528251821660c09081526020840151831660e052606084015183166101005290830151821660a090815283015182166101205290910151166101405262000175565b80516001600160a01b0381168114620000a357600080fd5b919050565b600060e08284031215620000bb57600080fd5b60405160e081016001600160401b0381118282101715620000ec57634e487b7160e01b600052604160045260246000fd5b604052620000fa836200008b565b81526200010a602084016200008b565b60208201526200011d604084016200008b565b604082015262000130606084016200008b565b606082015262000143608084016200008b565b60808201526200015660a084016200008b565b60a08201526200016960c084016200008b565b60c08201529392505050565b60805160a05160c05160e05161010051610120516101405161484b6200024b60003960008181610124015281816106540152610b1a01526000818161016c01528181610481015261053701526000818160fd01528181610a7c0152610ceb0152600081816101ba01528181611205015281816114230152818161338d015261348701526000818160d6015281816117e301528181611b8f01528181611cda015261229c01526000818160920152610738015260008181610193015281816119a201528181612861015261299c015261484b6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063a90a168a1161005b578063a90a168a14610146578063cb941d0614610167578063f887ea401461018e578063f9f1c9c4146101b557600080fd5b8063622f18f81461008d5780637a3b3fbe146100d157806389cdfb8f146100f857806397ee11441461011f575b600080fd5b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b61015961015436600461392b565b6101dc565b6040519081526020016100c8565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b60006101e8838361045c565b600e546004546001546001600160801b0390911690610206816105d7565b505060095460405163b8b94db960e01b815230600482015260001960248201526001600160a01b039091169063b8b94db990604401600060405180830381600087803b15801561025557600080fd5b505af1158015610269573d6000803e3d6000fd5b50506006546102a79250600160601b900460ff16905061029457600d546001600160a01b03166102a1565b600c546001600160a01b03165b3061097e565b6000036103185760095460408051636eee909960e11b815290516001600160a01b039092169163dddd21329160048082019260009290919082900301818387803b1580156102f457600080fd5b505af1158015610308573d6000803e3d6000fd5b5050505060009350505050610456565b61032a6103256001610a4e565b610afa565b600054610338908787610cca565b60006103448787611028565b9050831580610351575082155b1561037f576103606001610a4e565b600154909550915061037a6000610375611071565b6110fe565b610397565b8261038a85836139a4565b61039491906139d1565b94505b6103a0826111ab565b600480546fffffffffffffffffffffffffffffffff19166001600160801b0392909216918217905592506103d783888860006112a1565b84156103f3576009546103f3906001600160a01b0316866110fe565b60095460408051636eee909960e11b815290516001600160a01b039092169163dddd21329160048082019260009290919082900301818387803b15801561043957600080fd5b505af115801561044d573d6000803e3d6000fd5b50505050505050505b92915050565b600c54600d54604051632e1cf40b60e01b81526001600160a01b0392831692918216917f00000000000000000000000000000000000000000000000000000000000000001690632e1cf40b906104ba90879086908690600401613a35565b602060405180830381865afa1580156104d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fb9190613a7d565b6105205760405163130dcd6560e01b8152600060048201526024015b60405180910390fd5b604051632e1cf40b60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632e1cf40b9061057090869085908790600401613a35565b602060405180830381865afa15801561058d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b19190613a7d565b6105d15760405163130dcd6560e01b815260016004820152602401610517565b50505050565b600080826000036105ed57506000928392509050565b6105f783306113a7565b6004549193509150600160801b90046001600160401b031682118061062d5750600454600160c01b90046001600160401b031681115b156109795760085460405163111ced7f60e01b81526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000009160009161070891670de0b6b3a7640000919085169063111ced7f90602401602060405180830381865afa1580156106af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d39190613a98565b6008546106f09190600160a01b90046001600160401b03166139a4565b6106fa91906139d1565b670de0b6b3a764000061149f565b600c54600d5460408051634cadad5760e11b815281519495506001600160a01b03938416949284169360009384937f00000000000000000000000000000000000000000000000000000000000000009092169263995b5aae9260048083019391928290030181865afa158015610782573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a69190613ae6565b9150915060008261ffff161180156107c657506001600160a01b03811615155b156107f6576107de84828a8561ffff166127106114b7565b97506107f38382898561ffff166127106114b7565b96505b841561088a5761081184878a88670de0b6b3a76400006114b7565b975061082883878988670de0b6b3a76400006114b7565b6008546040516398bc58ed60e01b81526001600160a01b0391821660048201529198508716906398bc58ed90602401600060405180830381600087803b15801561087157600080fd5b505af1158015610885573d6000803e3d6000fd5b505050505b610894843061097e565b97506108a0833061097e565b965087156108b3576108b384878a6114d9565b86156108c4576108c48387896114d9565b6040516381abed1560e01b81523060048201526001600160a01b038716906381abed1590602401600060405180830381600087803b15801561090557600080fd5b505af1158015610919573d6000803e3d6000fd5b5050604080518b8152602081018b90526001600160401b0389168183015261ffff8616606082015290513093507f85bf2622140facb572504e8755b2bb368e5bc6f5d626eeeb150c63f208ac9c3492509081900360800190a25050505050505b915091565b6040516001600160a01b038281166024830152600091829182919086169060440160408051601f198184030181529181526020820180516001600160e01b03166370a0823160e01b179052516109d49190613b1d565b600060405180830381855afa9150503d8060008114610a0f576040519150601f19603f3d011682016040523d82523d6000602084013e610a14565b606091505b5091509150818015610a2857506020815110155b610a3157600080fd5b80806020019051810190610a459190613a98565b95945050505050565b60405163b4c2c92360e01b8152306004820152600060248201819052604482018190528215156064830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b4c2c9239060840160a060405180830381865afa158015610acb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aef9190613b39565b509295945050505050565b80600003610b055750565b604051633cf5106b60e21b81523060048201527f00000000000000000000000000000000000000000000000000000000000000009060009081906001600160a01b0384169063f3d441ac906024016040805180830381865afa158015610b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b939190613b82565b6006549193509150600160801b90046001600160401b03166000610bc7610bb86115c3565b6001600160a01b03168361163d565b600c54600d546006549293506001600160a01b0391821692911690600160601b900460ff16610bf857939493919291905b6000610c04833061097e565b90506000610c12833061097e565b9050600085610c21888a6139a4565b610c2b91906139d1565b610c35908a613ba6565b90508a610c4284836139a4565b610c4c91906139d1565b9050610c59858b836114d9565b610c64848b846114d9565b6040516381abed1560e01b81523060048201526001600160a01b038b16906381abed1590602401600060405180830381600087803b158015610ca557600080fd5b505af1158015610cb9573d6000803e3d6000fd5b505050505050505050505050505050565b82600003610cd757505050565b600854600090819081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691637f1a570a911688610d1e85610a4e565b60065460405160e086901b6001600160e01b03191681526001600160a01b03909416600485015260248401929092526044830152600160601b900460ff1615156064820152608401600060405180830381865afa158015610d83573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dab9190810190613c71565b600854600c54600d549497509295509093506001600160a01b039081169291811691166000610dda833061097e565b90506000610de8833061097e565b90508660ff16600103610e1c57610e058486848b620f42406114b7565b50610e168386838b620f42406114b7565b50610ff7565b8660ff16600203610ff757610e6b620f4240610e388a856139a4565b610e4291906139d1565b87600081518110610e5557610e55613cc7565b60200260200101516001600160801b031661149f565b86600081518110610e7e57610e7e613cc7565b6001600160801b0390921660209283029190910190910152610ec4620f4240610ea78a846139a4565b610eb191906139d1565b87600181518110610e5557610e55613cc7565b86600181518110610ed757610ed7613cc7565b60200260200101906001600160801b031690816001600160801b031681525050600086600081518110610f0c57610f0c613cc7565b60200260200101516001600160801b03161180610f4c5750600086600181518110610f3957610f39613cc7565b60200260200101516001600160801b0316115b15610ff7576001600160a01b03851663ac8dc1a18c88306000604051908082528060200260200182016040528015610f8e578160200160208202803683370190505b506040518563ffffffff1660e01b8152600401610fae9493929190613d51565b6000604051808303816000875af1158015610fcd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ff59190810190613d8b565b505b60035461101b908b908b906001600160801b0380821691600160801b900416611656565b5050505050505050505050565b600080611033611880565b60a0810185905260c08101849052905061104c84611988565b60e082015261105a83611988565b61010082015261106981611a18565b949350505050565b600654600090600160601b900460ff1661109d57600454600160c01b90046001600160401b03166110b1565b600454600160801b90046001600160401b03165b6001600160401b031690506103e88110156110fb5760405162461bcd60e51b815260206004820152600a602482015269159055531517d11554d560b21b6044820152606401610517565b90565b8060000361111f57604051631f2a200560e01b815260040160405180910390fd5b806000600e0160008282546111349190613ba6565b90915550506001600160a01b0382166000908152600f602052604081208054839290611161908490613ba6565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000816000036111bd57506000919050565b60408051602480820185905282518083039091018152604490910182526020810180516001600160e01b031663133f757160e31b179052905160009081906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690611231908590613b1d565b600060405180830381855afa9150503d806000811461126c576040519150601f19603f3d011682016040523d82523d6000602084013e611271565b606091505b50915091508161129457604051637692ff9960e01b815260040160405180910390fd5b6101000151949350505050565b600754600090670de0b6b3a7640000906112cb90600160a01b90046001600160401b0316876139a4565b6112d591906139d1565b60085460008054604051631b2d298360e11b81526004810191909152929350916001600160a01b039091169063365a530690602401600060405180830381865afa158015611327573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261134f9190810190613f5c565b60c001516001600160801b031690506000818311156113855750808203612710811061138057611380818787611e83565b61139e565b50818103612710811061139e5761139e81878787612018565b50505050505050565b600080836000036113bd57506000905080611498565b604080516080810182528581526001600160a01b03858116602083019081526001600160801b0383850181815260608501828152955163fc6f786560e01b81528551600482015292518416602484015251811660448301529351909316606484015290917f00000000000000000000000000000000000000000000000000000000000000009091169063fc6f78659060840160408051808303816000875af115801561146d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114919190613b82565b9093509150505b9250929050565b60008183106114ae57816114b0565b825b9392505050565b6000806114c5858585612420565b90508015610aef578085039450610aef8787835b6040516001600160a01b03838116602483015260448201839052600091829186169060640160408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052516115339190613b1d565b6000604051808303816000865af19150503d8060008114611570576040519150601f19603f3d011682016040523d82523d6000602084013e611575565b606091505b509150915081801561159f57508051158061159f57508080602001905181019061159f9190613a7d565b6115bc5760405163847ea61d60e01b815260040160405180910390fd5b5050505050565b60075460408051633850c7bd60e01b815290516000926001600160a01b031691633850c7bd9160048083019260e09291908290030181865afa15801561160d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163191906141cf565b50949695505050505050565b60008061164a8484612440565b905061106981806139a4565b600054801580611664575082155b8061166d575081155b1561167857506105d1565b6008546040516328f582d360e11b8152600481018390526001600160a01b039091169081906351eb05a69060240160408051808303816000875af11580156116c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e89190613b82565b5050604051631b2d298360e11b8152600481018390526000906001600160a01b0383169063365a530690602401600060405180830381865afa158015611732573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261175a9190810190613f5c565b905080610120015160008151811061177457611774613cc7565b60200260200101516001600160801b031660001480156117bc57508061012001516001815181106117a7576117a7613cc7565b60200260200101516001600160801b03166000145b156117c9575050506105d1565b816001600160a01b03166373db44ec8483610120015160007f000000000000000000000000000000000000000000000000000000000000000061180e8d8d8d8d612464565b6040518663ffffffff1660e01b815260040161182e959493929190614261565b6000604051808303816000875af115801561184d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261187591908101906142ae565b505050505050505050565b604080516101208101825260008082526020820181905291810182905260608082018390526080820183905260a0820181905260c082015260e081018290526101008101919091526040805161012081018252600c546001600160a01b039081168252600d541660208201529081016118f76115c3565b6001600160a01b0316815260065460209091019061191d9062010000900460020b61249b565b6001600160a01b031681526006546020909101906119469065010000000000900460020b61249b565b6001600160a01b031681526040805160008082526020808301845280850192909252825181815291820183529183015260608201819052608090910152919050565b604051634bdc7ddb60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906397b8fbb6906119d79085906004016142ea565b602060405180830381865afa1580156119f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104569190613a98565b600080611a2983600001513061097e565b90506000611a3b84602001513061097e565b905060005b60ff811015611e4657600454600160801b90046001600160401b03168311801590611a7d5750600454600160c01b90046001600160401b03168211155b611e46576040850151606086015160808701516006546000938493611ac09391929091906001600160401b03600160801b8204811691600160c01b9004166127c7565b90925090506000611ad182876139a4565b90506000611adf84876139a4565b905081811015611c2b5760065460a08a0151600091611b0f91600160801b9091046001600160401b031690612847565b60e08b015160065491925090600090611b46908b908b908a908a908890600160801b90046001600160401b031688620f42406128d9565b600454909150600160801b90046001600160401b031681118015611c0f57506004805460a08e015160405163de29932b60e01b8152600160c01b9092046001600160401b0316927f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169263de29932b92611bca928792016142fd565b6020604051808303816000875af1158015611be9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0d9190613a98565b115b15611c2357611c23818d60a0015130612985565b505050611d72565b81811115611d725760065460c08a0151600091611c5991600160c01b9091046001600160401b031690612847565b6101008b015160065491925090600090611c91908a908c9089908b908890600160c01b90046001600160401b031688620f42406128d9565b600454909150600160c01b90046001600160401b031681118015611d5a57506004805460c08e015160405163de29932b60e01b8152600160801b9092046001600160401b0316927f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169263de29932b92611d15928792016142fd565b6020604051808303816000875af1158015611d34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d589190613a98565b115b15611d6e57611d6e818d60c0015130612985565b5050505b8851611d7e903061097e565b9150611d8e89602001513061097e565b905081871480611d9d57508086145b15611dd957819650809550611dc48787611db56115c3565b8c606001518d60800151612a0a565b611dce9089613ba6565b975050505050611e46565b9095509350611de66115c3565b6001600160a01b03166040880181905260608801516080890151611e0d9288928892612a0a565b611e179087613ba6565b9550611e2787600001513061097e565b9450611e3787602001513061097e565b93508260010192505050611a40565b60405181815230907fa39f5865f2654f808be4fc40bb36902875011108cab306005413ee73b7a65d189060200160405180910390a2505050919050565b82600003611e9057505050565b6000805460085490916001600160a01b0390911690829003611f2c576008546040516397b48f1560e01b8152600160e01b90910461ffff1660048201526001600160a01b038216906397b48f15906024016020604051808303816000875af1158015611f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f249190613a98565b600081905591505b600b54600090611f45906001600160a01b031687612a9f565b90506001600160a01b0382166356761fd884836000604051908082528060200260200182016040528015611f83578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611fa293929190614316565b6000604051808303816000875af1158015611fc1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611fe99190810190614390565b50506003546120109150869086906001600160801b0380821691600160801b900416611656565b505050505050565b83156105d157600080549081900361203057506105d1565b600061203d826000612b63565b60085461012082015160c08301519293506001600160a01b0390911691600091612071918a906001600160801b0316612d8e565b9050600061207f838a612e7d565b90506127108260008151811061209757612097613cc7565b60200260200101516120a991906143f2565b826000815181106120bc576120bc613cc7565b602002602001018181516120d09190614418565b6001600160801b0316905250815161271090839060019081106120f5576120f5613cc7565b602002602001015161210791906143f2565b8260018151811061211a5761211a613cc7565b6020026020010181815161212e9190614418565b6001600160801b0316905250610120840151805160009061215157612151613cc7565b60200260200101516001600160801b03168260008151811061217557612175613cc7565b60200260200101516001600160801b031611156121e0578361012001516000815181106121a4576121a4613cc7565b6020026020010151826000815181106121bf576121bf613cc7565b60200260200101906001600160801b031690816001600160801b0316815250505b8361012001516001815181106121f8576121f8613cc7565b60200260200101516001600160801b03168260018151811061221c5761221c613cc7565b60200260200101516001600160801b031611156122875783610120015160018151811061224b5761224b613cc7565b60200260200101518260018151811061226657612266613cc7565b60200260200101906001600160801b031690816001600160801b0316815250505b826001600160a01b03166373db44ec868460007f000000000000000000000000000000000000000000000000000000000000000061230d8e8e896000815181106122d3576122d3613cc7565b60200260200101516001600160801b03168a6001815181106122f7576122f7613cc7565b60200260200101516001600160801b0316612464565b6040518663ffffffff1660e01b815260040161232d959493929190614261565b6000604051808303816000875af115801561234c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261237491908101906142ae565b505060405163055271bf60e11b815260048101869052602481018a905260006044820181905260648201526001600160a01b03841690630aa4e37e906084016000604051808303816000875af11580156123d2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123fa919081019061443f565b505060035461187590899089906001600160801b0380821691600160801b900416611656565b60006110698261243085876139a4565b61243a91906139d1565b8561149f565b6000600160601b61245083612fd1565b61245a90856139a4565b6114b091906139d1565b606061247285858585613066565b604051602001612482919061447b565b6040516020818303038152906040529050949350505050565b60008060008360020b126124b2578260020b6124bf565b8260020b6124bf90614552565b90506124ce620d89e71961456e565b62ffffff168111156124f35760405163d63f4fb360e01b815260040160405180910390fd5b60008160011660000361250a57600160801b61251c565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b031690506002821615612546576ffff97272373d413259a46990580e213a0260801c5b6004821615612565576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612584576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156125a3576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156125c2576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156125e1576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612600576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612620576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612640576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612660576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612680576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156126a0576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156126c0576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156126e0576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612700576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612721576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615612741576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612760576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561277d576b048a170391f7dc42444e8fa20260801c5b60008460020b131561279e57806000198161279a5761279a6139bb565b0490505b6401000000008106156127b25760016127b5565b60005b60ff16602082901c0192505050919050565b600080856001600160a01b0316876001600160a01b031610156127ef5750829050600061283d565b846001600160a01b0316876001600160a01b031611156128145750600090508161283d565b600061282861282385876139a4565b612fd1565b90506128368888888461317a565b9093509150505b9550959350505050565b6040516377d2b77160e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906377d2b7719061289890869086906004016142fd565b602060405180830381865afa1580156128b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b09190613a98565b600080806128e78b896139a4565b905060006128f58a8c6139a4565b905080821015612917576040516291dfad60e41b815260040160405180910390fd5b6129218183614590565b92505050600085898861293491906139a4565b61293e91906139d1565b9050878461294c87846139a4565b61295691906139d1565b6129609190613ba6565b61296a9082613ba6565b905061297681836139d1565b9b9a5050505050505050505050565b604051631cddb78560e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637376de14906129dc90869060009087908790600019906004016145a3565b600060405180830381600087803b1580156129f657600080fd5b505af115801561139e573d6000803e3d6000fd5b60065460009081908190612a3d908790879087906001600160401b03600160801b8204811691600160c01b9004166127c7565b6006549193509150612a5c90600160601b900460ff1689898585613216565b90985096508715801590612a705750600087115b15612a9457600154612a869089896000806132e7565b50506001600160801b031692505b505095945050505050565b6000806000846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612ae2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0691906145f6565b506001600160701b0391821693501690506000612b34612b268385614646565b6001600160801b0316612fd1565b90506000612b4187613507565b905081612b4e82886139a4565b612b5891906139d1565b979650505050505050565b612ca2604051806103e00160405280600081526020016000815260200160006001600160a01b0316815260200160006bffffffffffffffffffffffff16815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b0316815260200160008152602001600081526020016060815260200160006001600160a01b03168152602001600061ffff168152602001600060ff168152602001600081526020016000151581526020016000815260200160008152602001600081526020016060815260200160608152602001606081526020016060815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6008546001600160a01b03168215612d21576040516328f582d360e11b8152600481018590526001600160a01b038216906351eb05a69060240160408051808303816000875af1158015612cfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d1e9190613b82565b50505b604051631b2d298360e11b8152600481018590526001600160a01b0382169063365a530690602401600060405180830381865afa158015612d66573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110699190810190613f5c565b60408051600280825260608083018452926020830190803683370190505090508184600081518110612dc257612dc2613cc7565b602002602001015184612dd59190614646565b612ddf91906143f2565b81600081518110612df257612df2613cc7565b60200260200101906001600160801b031690816001600160801b0316815250508184600181518110612e2657612e26613cc7565b602002602001015184612e399190614646565b612e4391906143f2565b81600181518110612e5657612e56613cc7565b60200260200101906001600160801b031690816001600160801b0316815250509392505050565b60606000836001600160a01b031663c80994bb6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612ebf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612ee79190810190614671565b5080925081935050508082600081518110612f0457612f04613cc7565b60200260200101516001600160801b031684612f2091906139a4565b612f2a91906139d1565b82600081518110612f3d57612f3d613cc7565b60200260200101906001600160801b031690816001600160801b0316815250508082600181518110612f7157612f71613cc7565b60200260200101516001600160801b031684612f8d91906139a4565b612f9791906139d1565b82600181518110612faa57612faa613cc7565b60200260200101906001600160801b031690816001600160801b0316815250505092915050565b600081600003612fe357506000919050565b506001600160881b03811160071b81811c68ffffffffffffffffff1060061b1781811c64ffffffffff1060051b1781811c62ffffff1060041b1781811c620100000160b5600192831c1b0260121c80830401811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900390565b6130dc60405180610180016040528060006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160608152602001606081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506040805161018081018252600c546001600160a01b039081168252600d541660208201526006546001600160401b03600160801b808304821694840194909452600160c01b91829004811660608401526080830188905260a0830187905260c0830186905260e083018590526004549384048116610100840152920490911661012082015260006101408201819052610160820152949350505050565b600080836001600160a01b0316856001600160a01b0316111561319b579293925b846001600160a01b0316866001600160a01b0316116131c6576131bf8585856135be565b915061320d565b836001600160a01b0316866001600160a01b031610156131ff576131eb8685856135be565b91506131f8858785613631565b905061320d565b61320a858585613631565b90505b94509492505050565b600080861561328357859150600084116132305784613245565b8361323b87856139a4565b61324591906139d1565b90508481111561327e578261325a86866139a4565b61326491906139d1565b91508361327183856139a4565b61327b91906139d1565b90505b61283d565b50838261329057856132a5565b8261329b86866139a4565b6132a591906139d1565b91508582111561283d57836132ba87856139a4565b6132c491906139d1565b9050826132d182866139a4565b6132db91906139d1565b91509550959350505050565b600080600087600003613417576040805161016081018252600c546001600160a01b039081168252600d548116602083015260065468010000000000000000810462ffffff1683850152620100008104600290810b606085015265010000000000909104900b608083015260a082018a905260c08201899052600060e08301819052610100830152306101208301526000196101408301529151634418b22b60e11b81527f0000000000000000000000000000000000000000000000000000000000000000909216916388316456916133c2916004016146c0565b6080604051808303816000875af11580156133e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134059190614784565b600193909355909450925090506134fc565b6040805160c08101825289815260208101898152818301898152606083018981526080840189815260001960a08601908152955163219f5d1760e01b8152945160048601529251602485015290516044840152516064830152516084820152905160a48201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063219f5d179060c4016060604051808303816000875af11580156134d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134f491906147c0565b919450925090505b955095509592505050565b60408051600481526024810182526020810180516001600160e01b03166318160ddd60e01b1790529051600091829182916001600160a01b0386169161354d9190613b1d565b600060405180830381855afa9150503d8060008114613588576040519150601f19603f3d011682016040523d82523d6000602084013e61358d565b606091505b50915091508180156135a157506020815110155b6135aa57600080fd5b808060200190518101906110699190613a98565b6000826001600160a01b0316846001600160a01b031611156135de579192915b6001600160a01b0384166136276fffffffffffffffffffffffffffffffff60601b606085901b1661360f87876147f5565b6001600160a01b0316866001600160a01b0316613677565b61106991906139d1565b6000826001600160a01b0316846001600160a01b03161115613651579192915b6110696001600160801b03831661366886866147f5565b6001600160a01b0316600160601b5b60008060006136878686866136d6565b91509150806000146136cd5760405162461bcd60e51b815260206004820152600f60248201526e4d554c4449565f4f564552464c4f5760881b6044820152606401610517565b50949350505050565b6000808260000361371f5760405162461bcd60e51b815260206004820152601360248201527226aaa62224ab2fad22a927afa224ab24a9a7a960691b6044820152606401610517565b600080600019868809868802925082811083820303915050613742828287613750565b909890975095505050505050565b600080826000036137965760405162461bcd60e51b815260206004820152601060248201526f4449564953494f4e5f42595f5a45524f60801b6044820152606401610517565b836000036137b3576137a883866139d1565b600091509150613837565b826001036137c5575083905082613837565b6000838103848104600101919085900690805b8715613829576000198489098489028781019788108183108284030397880101969093509150600019848a0990508389029250828110838203039150508882019850818910600082010197506137d8565b505050508285048201918210015b935093915050565b634e487b7160e01b600052604160045260246000fd5b6040516103e081016001600160401b03811182821017156138785761387861383f565b60405290565b604051601f8201601f191681016001600160401b03811182821017156138a6576138a661383f565b604052919050565b60006001600160401b038211156138c7576138c761383f565b50601f01601f191660200190565b600082601f8301126138e657600080fd5b81356138f96138f4826138ae565b61387e565b81815284602083860101111561390e57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561393e57600080fd5b82356001600160401b038082111561395557600080fd5b613961868387016138d5565b9350602085013591508082111561397757600080fd5b50613984858286016138d5565b9150509250929050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176104565761045661398e565b634e487b7160e01b600052601260045260246000fd5b6000826139e0576139e06139bb565b500490565b60005b83811015613a005781810151838201526020016139e8565b50506000910152565b60008151808452613a218160208601602086016139e5565b601f01601f19169290920160200192915050565b606081526000613a486060830186613a09565b6001600160a01b0394851660208401529290931660409091015292915050565b80518015158114613a7857600080fd5b919050565b600060208284031215613a8f57600080fd5b6114b082613a68565b600060208284031215613aaa57600080fd5b5051919050565b805161ffff81168114613a7857600080fd5b6001600160a01b0381168114613ad857600080fd5b50565b8051613a7881613ac3565b60008060408385031215613af957600080fd5b613b0283613ab1565b91506020830151613b1281613ac3565b809150509250929050565b60008251613b2f8184602087016139e5565b9190910192915050565b600080600080600060a08688031215613b5157600080fd5b85519450602086015193506040860151925060608601519150613b7660808701613a68565b90509295509295909350565b60008060408385031215613b9557600080fd5b505080516020909101519092909150565b808201808211156104565761045661398e565b805160ff81168114613a7857600080fd5b60006001600160401b03821115613be357613be361383f565b5060051b60200190565b80516001600160801b0381168114613a7857600080fd5b600082601f830112613c1557600080fd5b81516020613c256138f483613bca565b82815260059290921b84018101918181019086841115613c4457600080fd5b8286015b84811015613c6657613c5981613bed565b8352918301918301613c48565b509695505050505050565b600080600060608486031215613c8657600080fd5b83519250613c9660208501613bb9565b915060408401516001600160401b03811115613cb157600080fd5b613cbd86828701613c04565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015613d165781516001600160801b031687529582019590820190600101613cf1565b509495945050505050565b600081518084526020808501945080840160005b83811015613d1657815187529582019590820190600101613d35565b848152608060208201526000613d6a6080830186613cdd565b6001600160a01b03851660408401528281036060840152612b588185613d21565b600060208284031215613d9d57600080fd5b81516001600160401b03811115613db357600080fd5b61106984828501613c04565b80516bffffffffffffffffffffffff81168114613a7857600080fd5b600082601f830112613dec57600080fd5b81516020613dfc6138f483613bca565b82815260059290921b84018101918181019086841115613e1b57600080fd5b8286015b84811015613c66578051613e3281613ac3565b8352918301918301613e1f565b600082601f830112613e5057600080fd5b81516020613e606138f483613bca565b82815260059290921b84018101918181019086841115613e7f57600080fd5b8286015b84811015613c6657613e9481613bb9565b8352918301918301613e83565b600082601f830112613eb257600080fd5b81516020613ec26138f483613bca565b82815260059290921b84018101918181019086841115613ee157600080fd5b8286015b84811015613c665780516001600160401b03811115613f045760008081fd5b8701603f81018913613f165760008081fd5b848101516040613f286138f4836138ae565b8281528b82848601011115613f3d5760008081fd5b613f4c838983018487016139e5565b8652505050918301918301613ee5565b600060208284031215613f6e57600080fd5b81516001600160401b0380821115613f8557600080fd5b908301906103e08286031215613f9a57600080fd5b613fa2613855565b8251815260208301516020820152613fbc60408401613adb565b6040820152613fcd60608401613dbf565b6060820152613fde60808401613bed565b6080820152613fef60a08401613bed565b60a082015261400060c08401613bed565b60c082015260e083015160e0820152610100808401518183015250610120808401518381111561402f57600080fd5b61403b88828701613c04565b82840152505061014061404f818501613adb565b90820152610160614061848201613ab1565b90820152610180614073848201613bb9565b908201526101a083810151908201526101c0614090818501613a68565b908201526101e083810151908201526102008084015190820152610220808401519082015261024080840151838111156140c957600080fd5b6140d588828701613ddb565b82840152505061026080840151838111156140ef57600080fd5b6140fb88828701613e3f565b828401525050610280808401518381111561411557600080fd5b61412188828701613ea1565b8284015250506102a0808401518381111561413b57600080fd5b61414788828701613ea1565b8284015250506102c0915061415d828401613adb565b828201526102e09150614171828401613adb565b91810191909152610300828101519082015261032080830151908201526103408083015190820152610360808301519082015261038080830151908201526103a080830151908201526103c091820151918101919091529392505050565b600080600080600080600060e0888a0312156141ea57600080fd5b87516141f581613ac3565b8097505060208801518060020b811461420d57600080fd5b955061421b60408901613ab1565b945061422960608901613ab1565b935061423760808901613ab1565b925061424560a08901613bb9565b915061425360c08901613a68565b905092959891949750929550565b85815260a06020820152600061427a60a0830187613cdd565b604083018690526001600160a01b038516606084015282810360808401526142a28185613a09565b98975050505050505050565b600080604083850312156142c157600080fd5b8251915060208301516001600160401b038111156142de57600080fd5b61398485828601613c04565b6020815260006114b06020830184613a09565b8281526040602082015260006110696040830184613a09565b838152826020820152606060408201526000610a456060830184613d21565b600082601f83011261434657600080fd5b815160206143566138f483613bca565b82815260059290921b8401810191818101908684111561437557600080fd5b8286015b84811015613c665780518352918301918301614379565b6000806000606084860312156143a557600080fd5b8351925060208401516001600160401b03808211156143c357600080fd5b6143cf87838801614335565b935060408601519150808211156143e557600080fd5b50613cbd86828701613c04565b60006001600160801b038084168061440c5761440c6139bb565b92169190910492915050565b6001600160801b038181168382160190808211156144385761443861398e565b5092915050565b6000806040838503121561445257600080fd5b8251915060208301516001600160401b0381111561446f57600080fd5b61398485828601614335565b602081526144956020820183516001600160a01b03169052565b600060208301516144b160408401826001600160a01b03169052565b50604083015160608301526060830151608083015260808301516101808060a08501526144e26101a0850183613a09565b915060a0850151601f198584030160c08601526144ff8382613a09565b60c087015160e08781019190915287015161010080880191909152870151610120808801919091528701516101408088019190915287015161016080880191909152909601519190940152509192915050565b6000600160ff1b82016145675761456761398e565b5060000390565b60008160020b627fffff1981036145875761458761398e565b60000392915050565b818103818111156104565761045661398e565b85815284602082015260a0604082015260006145c260a0830186613a09565b6001600160a01b0394909416606083015250608001529392505050565b80516001600160701b0381168114613a7857600080fd5b60008060006060848603121561460b57600080fd5b614614846145df565b9250614622602085016145df565b9150604084015163ffffffff8116811461463b57600080fd5b809150509250925092565b6001600160801b038181168382160280821691908281146146695761466961398e565b505092915050565b60008060006060848603121561468657600080fd5b83516001600160401b0381111561469c57600080fd5b6146a886828701613c04565b93505060208401519150604084015190509250925092565b81516001600160a01b03168152610160810160208301516146ec60208401826001600160a01b03169052565b506040830151614703604084018262ffffff169052565b506060830151614718606084018260020b9052565b50608083015161472d608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151614773828501826001600160a01b03169052565b505061014092830151919092015290565b6000806000806080858703121561479a57600080fd5b845193506147aa60208601613bed565b6040860151606090960151949790965092505050565b6000806000606084860312156147d557600080fd5b6147de84613bed565b925060208401519150604084015190509250925092565b6001600160a01b038281168282160390808211156144385761443861398e56fea26469706673582212209a1b1d0a29f8669feec32715b4889a656e3b898f016eda99b1e70aaefc0b0ea964736f6c63430008150033000000000000000000000000bcd8a78a74ced322a15b12a38800b904cdf5d649000000000000000000000000c36442b4a4522e871399cd717abdd847ab11fe880000000000000000000000004689903fbbd2b49b872cf1f315bf60d2eb83169800000000000000000000000022801e12ff90e8c9dc6c17e0fa21ed42a2d41f430000000000000000000000003e9955c6c6aa6af4f72cfaa7e9b7573f7ac25429000000000000000000000000e80bca82ba6106c190d9f74ef5fb20c8f6afca3f000000000000000000000000984bf792dc72048e38e9cac6f34dbb1361aca06a