avantis-trader-sdk 0.8.3__py3-none-any.whl → 0.8.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- avantis_trader_sdk/__init__.py +1 -1
- avantis_trader_sdk/abis/Trading.sol/Trading.json +1 -1
- {avantis_trader_sdk-0.8.3.dist-info → avantis_trader_sdk-0.8.4.dist-info}/METADATA +1 -1
- {avantis_trader_sdk-0.8.3.dist-info → avantis_trader_sdk-0.8.4.dist-info}/RECORD +6 -6
- {avantis_trader_sdk-0.8.3.dist-info → avantis_trader_sdk-0.8.4.dist-info}/WHEEL +0 -0
- {avantis_trader_sdk-0.8.3.dist-info → avantis_trader_sdk-0.8.4.dist-info}/top_level.txt +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"__msgSender","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"cancelOpenLimitOrder","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelPendingMarketOrder","inputs":[{"name":"_id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeTradeMarket","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"orderId","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"delegatedAction","inputs":[{"name":"trader","type":"address","internalType":"address"},{"name":"call_data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"},{"type":"function","name":"delegations","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"executeLimitOrder","inputs":[{"name":"_orderType","type":"uint8","internalType":"enum ITradingStorage.LimitOrder"},{"name":"_trader","type":"address","internalType":"address"},{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"priceUpdateData","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeMarketOrders","inputs":[{"name":"orderId","type":"uint256[]","internalType":"uint256[]"},{"name":"priceUpdateData","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"initialize","inputs":[{"name":"_storageT","type":"address","internalType":"address"},{"name":"_pairInfos","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isOperator","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"limitOrdersTimelock","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"openTrade","inputs":[{"name":"t","type":"tuple","internalType":"struct ITradingStorage.Trade","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"initialPosToken","type":"uint256","internalType":"uint256"},{"name":"positionSizeUSDC","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"}]},{"name":"_type","type":"uint8","internalType":"enum IExecute.OpenLimitOrderType"},{"name":"_slippageP","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"orderId","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"operator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pairInfos","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPairInfos"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"removeDelegate","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDelegate","inputs":[{"name":"delegate","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setLimitOrdersTimelock","inputs":[{"name":"_blocks","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMarketExecFeeReciever","inputs":[{"name":"_reciever","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"storageT","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ITradingStorage"}],"stateMutability":"view"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateMargin","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_type","type":"uint8","internalType":"enum ITradingStorage.updateType"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"priceUpdateData","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"orderId","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"updateOpenLimitOrder","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_slippageP","type":"uint256","internalType":"uint256"},{"name":"_tp","type":"uint256","internalType":"uint256"},{"name":"_sl","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperator","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_isOperator","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateTpAndSl","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_newSl","type":"uint256","internalType":"uint256"},{"name":"_newTP","type":"uint256","internalType":"uint256"},{"name":"priceUpdateData","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"AddressUpdated","inputs":[{"name":"name","type":"string","indexed":false,"internalType":"string"},{"name":"a","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"LimitOrderInitiated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"LimitOrderSameBlock","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MarginUpdated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_type","type":"uint8","indexed":false,"internalType":"enum ITradingStorage.updateType"},{"name":"newTrade","type":"tuple","indexed":false,"internalType":"struct ITradingStorage.Trade","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"initialPosToken","type":"uint256","internalType":"uint256"},{"name":"positionSizeUSDC","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"}]},{"name":"marginFees","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lossProtectionTier","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MarketOrderInitiated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"open","type":"bool","indexed":false,"internalType":"bool"},{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"NumberUpdated","inputs":[{"name":"name","type":"string","indexed":false,"internalType":"string"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OpenLimitCanceled","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"collateral","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OpenLimitPlaced","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"isBuy","type":"bool","indexed":false,"internalType":"bool"},{"name":"openPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"executionFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"orderType","type":"uint8","indexed":false,"internalType":"enum IExecute.OpenLimitOrderType"},{"name":"slippageP","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"collateral","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OpenLimitUpdated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newTp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newSl","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUpdated","inputs":[{"name":"operator","type":"address","indexed":false,"internalType":"address"},{"name":"isOperator","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SlUpdateInitiated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newSl","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlUpdated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newSl","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TpUpdated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newTp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615ce780620000f36000396000f3fe6080604052600436106101815760003560e01c80636d70f7ae116100d1578063c0b4d24d1161008a578063ca5eb5e111610064578063ca5eb5e11461044b578063cd90b8a414610495578063d1a91ff2146104a8578063d4a1caa7146104bd57600080fd5b8063c0b4d24d146103f8578063c5ed6a081461040b578063c641558e1461042b57600080fd5b80636d70f7ae1461031d5780638456cb591461034d5780639a10cc32146103625780639e2033f514610382578063b9b6573a146103a2578063bffe3486146103c257600080fd5b806336fb8b151161013e578063485cc95511610118578063485cc95514610299578063570ca735146102b95780635c975abb146102d95780636d44a3b2146102fd57600080fd5b806336fb8b15146102425780633f4ba83a1461027157806346f6c8f51461028657600080fd5b80630890d22a146101865780631346b0ff146101af57806315b760b1146101e757806316fff074146101fc57806319cde9a11461021c5780632c3cbce41461022f575b600080fd5b34801561019257600080fd5b5061019c60695481565b6040519081526020015b60405180910390f35b3480156101bb57600080fd5b506068546101cf906001600160a01b031681565b6040516001600160a01b0390911681526020016101a6565b6101fa6101f53660046154d0565b6104dd565b005b34801561020857600080fd5b506067546101cf906001600160a01b031681565b61019c61022a366004615310565b61050b565b61019c61023d3660046154a4565b611600565b34801561024e57600080fd5b506101fa33600090815260656020526040902080546001600160a01b0319169055565b34801561027d57600080fd5b506101fa612084565b6101fa6102943660046150c7565b612144565b3480156102a557600080fd5b506101fa6102b4366004614f35565b612ba7565b3480156102c557600080fd5b50606a546101cf906001600160a01b031681565b3480156102e557600080fd5b5060335460ff165b60405190151581526020016101a6565b34801561030957600080fd5b506101fa610318366004614f6e565b612cef565b34801561032957600080fd5b506102ed610338366004614ef4565b606b6020526000908152604090205460ff1681565b34801561035957600080fd5b506101fa612e08565b610375610370366004614f9c565b612ec6565b6040516101a691906156e8565b34801561038e57600080fd5b506101fa61039d366004614ef4565b613001565b3480156103ae57600080fd5b506101fa6103bd366004615429565b61311e565b3480156103ce57600080fd5b506101cf6103dd366004614ef4565b6065602052600090815260409020546001600160a01b031681565b6101fa610406366004615021565b613357565b34801561041757600080fd5b506101fa6104263660046153f7565b6134ab565b34801561043757600080fd5b506101fa61044636600461551c565b613534565b34801561045757600080fd5b506101fa610466366004614ef4565b33600090815260656020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b61019c6104a336600461544b565b613798565b3480156104b457600080fd5b506101cf6140ff565b3480156104c957600080fd5b506101fa6104d83660046153f7565b614127565b6104e561427b565b6104f08686856142c1565b8015610503576105038686868585614561565b505050505050565b600061051561427b565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b15801561055a57600080fd5b505afa15801561056e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105929190614f18565b90506000816001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156105cf57600080fd5b505afa1580156105e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106079190614f18565b9050606760009054906101000a90046001600160a01b03166001600160a01b0316638049fde76040518163ffffffff1660e01b815260040160206040518083038186803b15801561065757600080fd5b505afa15801561066b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068f9190615410565b6067546001600160a01b031663f7b3c6fd6106a86140ff565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b1580156106e757600080fd5b505afa1580156106fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071f9190615410565b106107665760405162461bcd60e51b81526020600482015260126024820152714d41585f50454e44494e475f4f524445525360701b60448201526064015b60405180910390fd5b606760009054906101000a90046001600160a01b03166001600160a01b031663f65d9dbe6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107b457600080fd5b505afa1580156107c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ec9190615410565b6067546001600160a01b03166397e7995a6108056140ff565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208a0135602482015260440160206040518083038186803b15801561084e57600080fd5b505afa158015610862573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108869190615410565b6067546001600160a01b0316639c8912f161089f6140ff565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208b0135602482015260440160206040518083038186803b1580156108e857600080fd5b505afa1580156108fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109209190615410565b6067546001600160a01b0316631c8636b46109396140ff565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208c0135602482015260440160206040518083038186803b15801561098257600080fd5b505afa158015610996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ba9190615410565b6109c49190615b5b565b6109ce9190615b5b565b10610a115760405162461bcd60e51b815260206004820152601360248201527226a0ac2faa2920a222a9afa822a92fa820a4a960691b604482015260640161075d565b60405163238cd23f60e01b8152602087013560048201526001600160a01b0382169063238cd23f9060240160206040518083038186803b158015610a5457600080fd5b505afa158015610a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8c9190615410565b610a9e608088013560e0890135614c70565b1015610adc5760405162461bcd60e51b815260206004820152600d60248201526c42454c4f575f4d494e5f504f5360981b604482015260640161075d565b6101008601351580610b1b5750610af960e0870160c0880161508d565b610b0e578560a0013586610100013510610b1b565b8560a00135866101000135115b610b525760405162461bcd60e51b8152602060048201526008602482015267057524f4e475f54560c41b604482015260640161075d565b6101208601351580610b915750610b6f60e0870160c0880161508d565b610b84578560a0013586610120013511610b91565b8560a00135866101200135105b610bc85760405162461bcd60e51b815260206004820152600860248201526715d493d391d7d4d360c21b604482015260640161075d565b6000856003811115610bdc57610bdc615c2c565b14158015610bfc57506001856003811115610bf957610bf9615c2c565b14155b156110b55760008660e00135118015610c9a5750604051634cadbb2b60e11b815260208701356004820152600060248201526001600160a01b0382169063995b76569060440160206040518083038186803b158015610c5a57600080fd5b505afa158015610c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c929190615410565b8660e0013510155b8015610d2b5750604051639b2f6cab60e01b815260208701356004820152600060248201526001600160a01b03821690639b2f6cab9060440160206040518083038186803b158015610ceb57600080fd5b505afa158015610cff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d239190615410565b8660e0013511155b610d475760405162461bcd60e51b815260040161075d9061571d565b6067546001600160a01b0316638b83351a610d606140ff565b60675460405160e084901b6001600160e01b03191681526001600160a01b0392831660048201529116602482015260808901356044820152606401600060405180830381600087803b158015610db557600080fd5b505af1158015610dc9573d6000803e3d6000fd5b5050606754600092506001600160a01b031690506344d44f5a610dea6140ff565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208a0135602482015260440160206040518083038186803b158015610e3357600080fd5b505afa158015610e47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6b9190615410565b6067546040805161018081019091529192506001600160a01b03169063fdb153e29080610e966140ff565b6001600160a01b0316815260208b81013590820152604081018590526080808c0135606083015201610ece60e08c0160c08d0161508d565b151581526020018a60e0013581526020018a610100013581526020018a610120013581526020018a60a00135815260200188815260200143815260200160008152506040518263ffffffff1660e01b8152600401610f2c9190615805565b600060405180830381600087803b158015610f4657600080fd5b505af1158015610f5a573d6000803e3d6000fd5b50505050826001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b158015610f9757600080fd5b505afa158015610fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcf9190614f18565b6001600160a01b031663ec570610610fe56140ff565b8960200135848a6040518563ffffffff1660e01b815260040161100b94939291906156b2565b600060405180830381600087803b15801561102557600080fd5b505af1158015611039573d6000803e3d6000fd5b505050506110456140ff565b6001600160a01b03167f174df203b38fe4bbf31688bea280abf3c60a2d5a4214fdf30984abdcf6f15fca60208901358361108560e08c0160c08d0161508d565b8b60a0013560008c8c8f608001356040516110a7989796959493929190615a75565b60405180910390a25061155a565b60008660e0013511801561116957506001600160a01b03811663995b7656602088013560018860038111156110ec576110ec615c2c565b6040516001600160e01b031960e086901b168152600481019390935214602482015260440160206040518083038186803b15801561112957600080fd5b505afa15801561113d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111619190615410565b8660e0013510155b801561121557506001600160a01b038116639b2f6cab6020880135600188600381111561119857611198615c2c565b6040516001600160e01b031960e086901b168152600481019390935214602482015260440160206040518083038186803b1580156111d557600080fd5b505afa1580156111e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120d9190615410565b8660e0013511155b6112315760405162461bcd60e51b815260040161075d9061571d565b6067546001600160a01b0316638b83351a61124a6140ff565b60675460405160e084901b6001600160e01b03191681526001600160a01b0392831660048201529116602482015260808901356044820152606401600060405180830381600087803b15801561129f57600080fd5b505af11580156112b3573d6000803e3d6000fd5b50600092506112c0915050565b8560038111156112d2576112d2615c2c565b146113615760405163302809fd60e21b81526001600160a01b0383169063c0a027f49061130a9060208a0135906006906004016159df565b602060405180830381600087803b15801561132457600080fd5b505af1158015611338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135c9190615410565b6113e6565b60405163302809fd60e21b81526001600160a01b0383169063c0a027f4906113949060208a0135906000906004016159df565b602060405180830381600087803b1580156113ae57600080fd5b505af11580156113c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e69190615410565b606754604080516101e081019091529194506001600160a01b03169063d8137fe8908060808101806114166140ff565b6001600160a01b031681526020018b60200135815260200160008152602001600081526020018b608001358152602001600081526020018b60c0016020810190611460919061508d565b151581526020018b60e0013581526020018b610100013581526020018b6101200135815260200160008152508152602001600081526020018960a001358152602001878152508560016040518463ffffffff1660e01b81526004016114c7939291906158b8565b600060405180830381600087803b1580156114e157600080fd5b505af11580156114f5573d6000803e3d6000fd5b505050506115016140ff565b604080516020808a013582526001908201529081018590524260608201526001600160a01b0391909116907f1dc637f3b162f19a813b26fe5ed9122af72c7c58d7ff359728fd6517c110bf649060800160405180910390a25b606a546040516000916001600160a01b03169034908381818185875af1925050503d80600081146115a7576040519150601f19603f3d011682016040523d82523d6000602084013e6115ac565b606091505b50509050806115f65760405162461bcd60e51b815260206004820152601660248201527511561150d5551253d397d1915157d393d517d4d1539560521b604482015260640161075d565b5050509392505050565b600061160a61427b565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b15801561164f57600080fd5b505afa158015611663573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116879190614f18565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156116bf57600080fd5b505afa1580156116d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f79190614f18565b606a546040519192506000916001600160a01b039091169034908381818185875af1925050503d8060008114611749576040519150601f19603f3d011682016040523d82523d6000602084013e61174e565b606091505b50509050806117985760405162461bcd60e51b815260206004820152601660248201527511561150d5551253d397d1915157d393d517d4d1539560521b604482015260640161075d565b6067546000906001600160a01b031663a3a80ffe6117b46140ff565b89896040518463ffffffff1660e01b81526004016117d493929190615691565b6101606040518083038186803b1580156117ed57600080fd5b505afa158015611801573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611825919061535a565b6067549091506000906001600160a01b0316638c8ff1d56118446140ff565b8a8a6040518463ffffffff1660e01b815260040161186493929190615691565b60a06040518083038186803b15801561187c57600080fd5b505afa158015611890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b49190615298565b60600151905081606001518611156118fb5760405162461bcd60e51b815260206004820152600a60248201526912539597d05353d5539560b21b604482015260640161075d565b606760009054906101000a90046001600160a01b03166001600160a01b0316638049fde76040518163ffffffff1660e01b815260040160206040518083038186803b15801561194957600080fd5b505afa15801561195d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119819190615410565b6067546001600160a01b031663f7b3c6fd61199a6140ff565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b1580156119d957600080fd5b505afa1580156119ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a119190615410565b10611a535760405162461bcd60e51b81526020600482015260126024820152714d41585f50454e44494e475f4f524445525360701b604482015260640161075d565b8015611a985760405162461bcd60e51b81526020600482015260146024820152731053149150511657d091525391d7d0d313d4d15160621b604482015260640161075d565b60008260e0015111611abc5760405162461bcd60e51b815260040161075d906156fb565b836001600160a01b031663737113b589611ae38560e001518a614c7090919063ffffffff16565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401602060405180830381600087803b158015611b2157600080fd5b505af1158015611b35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b599190615410565b610140830151611b699042615bb4565b1015611ba55760405162461bcd60e51b815260206004820152600b60248201526a4541524c595f434c4f534560a81b604482015260640161075d565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b158015611bea57600080fd5b505afa158015611bfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c229190614f18565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015611c5a57600080fd5b505afa158015611c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c929190614f18565b6001600160a01b031663c5f5951a611ca86140ff565b8b8b6040518463ffffffff1660e01b8152600401611cc893929190615691565b60206040518083038186803b158015611ce057600080fd5b505afa158015611cf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1891906150aa565b905080611e2a57606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015611d6d57600080fd5b505afa158015611d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da59190614f18565b6001600160a01b031663c0a027f48a60016040518363ffffffff1660e01b8152600401611dd39291906159df565b602060405180830381600087803b158015611ded57600080fd5b505af1158015611e01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e259190615410565b611f30565b606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015611e7857600080fd5b505afa158015611e8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb09190614f18565b6001600160a01b031663c0a027f48a60076040518363ffffffff1660e01b8152600401611ede9291906159df565b602060405180830381600087803b158015611ef857600080fd5b505af1158015611f0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f309190615410565b606754604080516101e081019091529197506001600160a01b03169063d8137fe890806080810180611f606140ff565b6001600160a01b031681526020018e81526020018d81526020018c8152602001600081526020016000815260200160001515815260200160008152602001600081526020016000815260200160008152508152602001600081526020016000815260200160008152508860006040518463ffffffff1660e01b8152600401611fea939291906158b8565b600060405180830381600087803b15801561200457600080fd5b505af1158015612018573d6000803e3d6000fd5b505050506120246140ff565b604080518b8152600060208201529081018890524260608201526001600160a01b0391909116907f1dc637f3b162f19a813b26fe5ed9122af72c7c58d7ff359728fd6517c110bf649060800160405180910390a250505050509392505050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156120d257600080fd5b505afa1580156120e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210a9190614f18565b6001600160a01b0316336001600160a01b03161461213a5760405162461bcd60e51b815260040161075d906157e3565b612142614c95565b565b61214c61427b565b336000908152606b602052604090205460ff1661217b5760405162461bcd60e51b815260040161075d90615771565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b1580156121c057600080fd5b505afa1580156121d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f89190614f18565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561223057600080fd5b505afa158015612244573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122689190614f18565b9050600387600381111561227e5761227e615c2c565b141561234457606754604051636e6f99cd60e11b81526001600160a01b039091169063dcdf339a906122b890899089908990600401615691565b60206040518083038186803b1580156122d057600080fd5b505afa1580156122e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230891906150aa565b61233f5760405162461bcd60e51b81526020600482015260086024820152671393d7d31253525560c21b604482015260640161075d565b61268c565b6067546040516351d407ff60e11b81526000916001600160a01b03169063a3a80ffe90612379908a908a908a90600401615691565b6101606040518083038186803b15801561239257600080fd5b505afa1580156123a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ca919061535a565b905060008160e00151116123f05760405162461bcd60e51b815260040161075d906156fb565b600188600381111561240457612404615c2c565b14158061241657506000816101200151115b61244a5760405162461bcd60e51b81526020600482015260056024820152641393d7d4d360da1b604482015260640161075d565b600288600381111561245e5761245e615c2c565b1415612599576068548151602083015160408085015160a086015160c0870151606088015160e08901519451636bc84d5960e01b81526001600160a01b0397881660048201526024810196909652604486019390935260648501919091521515608484015260a483015260c48201526000929190911690636bc84d599060e40160206040518083038186803b1580156124f657600080fd5b505afa15801561250a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252e9190615410565b90508161012001516000148061255e57508160c0015161255557816101200151811061255e565b81610120015181115b6125935760405162461bcd60e51b8152602060048201526006602482015265121054d7d4d360d21b604482015260640161075d565b5061268a565b816001600160a01b031663737113b582602001516125c88460e001518560600151614c7090919063ffffffff16565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401602060405180830381600087803b15801561260657600080fd5b505af115801561261a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263e9190615410565b61014082015161264e9042615bb4565b101561268a5760405162461bcd60e51b815260206004820152600b60248201526a4541524c595f434c4f534560a81b604482015260640161075d565b505b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b1580156126d157600080fd5b505afa1580156126e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127099190614f18565b90506000816001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b15801561274657600080fd5b505afa15801561275a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061277e9190614f18565b9050600060405180608001604052808a6001600160a01b031681526020018981526020018881526020018b60038111156127ba576127ba615c2c565b81525090506000606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561280f57600080fd5b505afa158015612823573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128479190614f18565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561287f57600080fd5b505afa158015612893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b79190614f18565b6001600160a01b031663c5f5951a8b8b8b6040518463ffffffff1660e01b81526004016128e693929190615691565b60206040518083038186803b1580156128fe57600080fd5b505afa158015612912573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293691906150aa565b905060006001600160a01b03851663c0a027f48b60038f600381111561295e5761295e615c2c565b14612976578461296f576003612979565b6008612979565b60025b6040518363ffffffff1660e01b81526004016129969291906159df565b602060405180830381600087803b1580156129b057600080fd5b505af11580156129c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129e89190615410565b606754604080516080810182526001600160a01b038f81168252602082018f90529181018d9052929350169063d775d54890606081018f6003811115612a3057612a30615c2c565b815250836040518363ffffffff1660e01b8152600401612a5192919061589d565b600060405180830381600087803b158015612a6b57600080fd5b505af1158015612a7f573d6000803e3d6000fd5b50505050836001600160a01b031663c23c886c84612a9b6140ff565b6040518363ffffffff1660e01b8152600401612ab8929190615912565b600060405180830381600087803b158015612ad257600080fd5b505af1158015612ae6573d6000803e3d6000fd5b5050604080518d815260208101859052428183015290516001600160a01b038f1693507fd0ac65cbccd4e7062356a9be37735153d991bdc4de08f024a8fffc0600f7048892509081900360600190a260405163dd2f3c0560e01b81526001600160a01b0386169063dd2f3c05903490612b679085908d908d90600401615938565b6000604051808303818588803b158015612b8057600080fd5b505af1158015612b94573d6000803e3d6000fd5b5050505050505050505050505050505050565b600054610100900460ff1615808015612bc75750600054600160ff909116105b80612be15750303b158015612be1575060005460ff166001145b612c445760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161075d565b6000805460ff191660011790558015612c67576000805461ff0019166101001790555b606780546001600160a01b038086166001600160a01b03199283161790925560688054928516929091169190911790556002606955612ca4614ce7565b8015612cea576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015612d3d57600080fd5b505afa158015612d51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d759190614f18565b6001600160a01b0316336001600160a01b031614612da55760405162461bcd60e51b815260040161075d906157e3565b6001600160a01b0382166000818152606b6020908152604091829020805460ff19168515159081179091558251938452908301527f966c160e1c4dbc7df8d69af4ace01e9297c3cf016397b7914971f2fbfa32672d910160405180910390a15050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015612e5657600080fd5b505afa158015612e6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e8e9190614f18565b6001600160a01b0316336001600160a01b031614612ebe5760405162461bcd60e51b815260040161075d906157e3565b612142614d16565b6001600160a01b03838116600090815260656020526040902054606091163314612f2a5760405162461bcd60e51b81526020600482015260156024820152741111531151d0551157d393d517d054141493d59151605a1b604482015260640161075d565b606680546001600160a01b0319166001600160a01b03861617905560405160009081903090612f5c9087908790615681565b600060405180830381855af49150503d8060008114612f97576040519150601f19603f3d011682016040523d82523d6000602084013e612f9c565b606091505b509150915081612fe857604481511015612fb557600080fd5b60048101905080806020019051810190612fcf9190615143565b60405162461bcd60e51b815260040161075d91906156e8565b606680546001600160a01b031916905595945050505050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561304f57600080fd5b505afa158015613063573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130879190614f18565b6001600160a01b0316336001600160a01b0316146130b75760405162461bcd60e51b815260040161075d906157e3565b6001600160a01b0381166130fc5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015260640161075d565b606a80546001600160a01b0319166001600160a01b0392909216919091179055565b61312661427b565b6067546000906001600160a01b031663b8878a2c6131426140ff565b85856040518463ffffffff1660e01b815260040161316293929190615691565b6101806040518083038186803b15801561317b57600080fd5b505afa15801561318f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b391906151f0565b9050606954816101400151436131c99190615bb4565b10156131e75760405162461bcd60e51b815260040161075d90615749565b6067546001600160a01b0316638b83351a816132016140ff565b84610160015185606001516132169190615b5b565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561326557600080fd5b505af1158015613279573d6000803e3d6000fd5b50506067546001600160a01b0316915063b4b0f56790506132986140ff565b85856040518463ffffffff1660e01b81526004016132b893929190615691565b600060405180830381600087803b1580156132d257600080fd5b505af11580156132e6573d6000803e3d6000fd5b505050506132f26140ff565b6001600160a01b03167f99b2cab0fe1db813d380331f51c117d5622d07c79686cc4ecd043e8d56ace094848442856060015160405161334a949392919093845260208401929092526040830152606082015260800190565b60405180910390a2505050565b336000908152606b602052604090205460ff166133865760405162461bcd60e51b815260040161075d90615771565b60005b838110156134a457606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b1580156133df57600080fd5b505afa1580156133f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134179190614f18565b6001600160a01b031663dd2f3c053487878581811061343857613438615c42565b9050602002013586866040518563ffffffff1660e01b815260040161345f93929190615938565b6000604051808303818588803b15801561347857600080fd5b505af115801561348c573d6000803e3d6000fd5b5050505050808061349c90615bfb565b915050613389565b5050505050565b336000908152606b602052604090205460ff166134da5760405162461bcd60e51b815260040161075d90615771565b606754604051630d32c90760e01b8152600481018390526001600160a01b0390911690630d32c90790602401600060405180830381600087803b15801561352057600080fd5b505af11580156134a4573d6000803e3d6000fd5b61353c61427b565b6067546000906001600160a01b031663b8878a2c6135586140ff565b89896040518463ffffffff1660e01b815260040161357893929190615691565b6101806040518083038186803b15801561359157600080fd5b505afa1580156135a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135c991906151f0565b9050606954816101400151436135df9190615bb4565b10156135fd5760405162461bcd60e51b815260040161075d90615749565b82158061361a575080608001516136165782851161361a565b8285105b6136515760405162461bcd60e51b8152602060048201526008602482015267057524f4e475f54560c41b604482015260640161075d565b81158061366e5750806080015161366a5781851061366e565b8185115b6136a55760405162461bcd60e51b815260206004820152600860248201526715d493d391d7d4d360c21b604482015260640161075d565b6101008101859052610120810184905260c0810183905260e0810182905260675460405163574564a760e11b81526001600160a01b039091169063ae8ac94e906136f3908490600401615805565b600060405180830381600087803b15801561370d57600080fd5b505af1158015613721573d6000803e3d6000fd5b5050505061372d6140ff565b604080518981526020810189905290810187905260608101859052608081018490524260a08201526001600160a01b0391909116907f710a8db87f04e82a9de40076812593a965f4aa48693196d2144c07ff9710e8909060c00160405180910390a250505050505050565b60006137a261427b565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b1580156137e757600080fd5b505afa1580156137fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381f9190614f18565b6067549091506000906001600160a01b031663a3a80ffe61383e6140ff565b8b8b6040518463ffffffff1660e01b815260040161385e93929190615691565b6101606040518083038186803b15801561387757600080fd5b505afa15801561388b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138af919061535a565b6067549091506000906001600160a01b0316638c8ff1d56138ce6140ff565b8c8c6040518463ffffffff1660e01b81526004016138ee93929190615691565b60a06040518083038186803b15801561390657600080fd5b505afa15801561391a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061393e9190615298565b90508060600151156139895760405162461bcd60e51b81526020600482015260146024820152731053149150511657d091525391d7d0d313d4d15160621b604482015260640161075d565b60008260e00151116139ad5760405162461bcd60e51b815260040161075d906156fb565b6068548251602084015160408086015160c0870151606088015160e08901519351630284c13960e11b81526001600160a01b0396871660048201526024810195909552604485019290925215156064840152608483015260a4820152600092919091169063050982729060c40160206040518083038186803b158015613a3257600080fd5b505afa158015613a46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a6a9190615410565b60405163302809fd60e21b81529091506001600160a01b0385169063c0a027f490613a9b908e9060049081016159df565b602060405180830381600087803b158015613ab557600080fd5b505af1158015613ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aed9190615410565b9450836001600160a01b031663cbe91bd986604051806101000160405280613b136140ff565b6001600160a01b031681526020018f81526020018e81526020018d6001811115613b3f57613b3f615c2c565b81526020018c8152602001866080015181526020018581526020018760e001518152506040518363ffffffff1660e01b8152600401613b7f929190615a03565b600060405180830381600087803b158015613b9957600080fd5b505af1158015613bad573d6000803e3d6000fd5b50505050613bc6826000015184606001518b8b85614d53565b606085015260e084015260675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b158015613c1557600080fd5b505afa158015613c29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c4d9190614f18565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015613c8557600080fd5b505afa158015613c99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cbd9190614f18565b6001600160a01b031663c5f5951a613cd36140ff565b8e8e6040518463ffffffff1660e01b8152600401613cf393929190615691565b60206040518083038186803b158015613d0b57600080fd5b505afa158015613d1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d4391906150aa565b9050808015613d63575060018a6001811115613d6157613d61615c2c565b145b15613d9e5760405162461bcd60e51b815260206004820152600b60248201526a1393d517d0531313d5d15160aa1b604482015260640161075d565b60008460e00151118015613eae5750846001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015613de657600080fd5b505afa158015613dfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e1e9190614f18565b6020850151604051634cadbb2b60e11b8152600481019190915282151560248201526001600160a01b03919091169063995b76569060440160206040518083038186803b158015613e6e57600080fd5b505afa158015613e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ea69190615410565b8460e0015110155b8015613fb65750846001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015613eee57600080fd5b505afa158015613f02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f269190614f18565b6020850151604051639b2f6cab60e01b8152600481019190915282151560248201526001600160a01b039190911690639b2f6cab9060440160206040518083038186803b158015613f7657600080fd5b505afa158015613f8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fae9190615410565b8460e0015111155b613fd25760405162461bcd60e51b815260040161075d9061571d565b613fda6140ff565b6001600160a01b03167f48452067591e9581b9c1f3135e16ae22829a7c8afc6b3d6a1afa2cd295cc11338d8d8d88878960800151426040516140229796959493929190615ac3565b60405180910390a260675460405163f0cb9b1160e01b81526001600160a01b039091169063f0cb9b119061405a908790600401615903565b600060405180830381600087803b15801561407457600080fd5b505af1158015614088573d6000803e3d6000fd5b505060405163dd2f3c0560e01b81526001600160a01b038816925063dd2f3c05915034906140be908a908d908d90600401615938565b6000604051808303818588803b1580156140d757600080fd5b505af11580156140eb573d6000803e3d6000fd5b505050505050505050509695505050505050565b6066546000906001600160a01b031661411757503390565b506066546001600160a01b031690565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561417557600080fd5b505afa158015614189573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141ad9190614f18565b6001600160a01b0316336001600160a01b0316146141dd5760405162461bcd60e51b815260040161075d906157e3565b600081116142175760405162461bcd60e51b8152602060048201526007602482015266056414c55455f360cc1b604482015260640161075d565b606981905560408051818152601381830152726c696d69744f726465727354696d656c6f636b60681b60608201526020810183905290517f8cf3e35f6221b16e1670a3413180c9484bf5aa71787905909fa82a6a2662e9ab9181900360800190a150565b60335460ff16156121425760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161075d565b6067546000906001600160a01b031663a3a80ffe6142dd6140ff565b86866040518463ffffffff1660e01b81526004016142fd93929190615691565b6101606040518083038186803b15801561431657600080fd5b505afa15801561432a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061434e919061535a565b60e001516067549091506000906001600160a01b0316638c8ff1d56143716140ff565b87876040518463ffffffff1660e01b815260040161439193929190615691565b60a06040518083038186803b1580156143a957600080fd5b505afa1580156143bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143e19190615298565b602001519050600082116144075760405162461bcd60e51b815260040161075d906156fb565b6069546144148243615bb4565b10156144325760405162461bcd60e51b815260040161075d90615749565b6001600160ff1b0383106144775760405162461bcd60e51b815260206004820152600c60248201526b0494e434f52524543545f54560a41b604482015260640161075d565b6067546001600160a01b0316637fdb96f36144906140ff565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018890526044810187905260648101869052608401600060405180830381600087803b1580156144e657600080fd5b505af11580156144fa573d6000803e3d6000fd5b505050506145066140ff565b60408051878152602081018790529081018590524260608201526001600160a01b0391909116907f01c13b316ce9327f58f220b36e368c197eda79df0102d7f4363f1e7fe29323e89060800160405180910390a25050505050565b6067546000906001600160a01b031663a3a80ffe61457d6140ff565b88886040518463ffffffff1660e01b815260040161459d93929190615691565b6101606040518083038186803b1580156145b657600080fd5b505afa1580156145ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145ee919061535a565b6067549091506000906001600160a01b0316638c8ff1d561460d6140ff565b89896040518463ffffffff1660e01b815260040161462d93929190615691565b60a06040518083038186803b15801561464557600080fd5b505afa158015614659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061467d9190615298565b60400151905060008260e00151116146a75760405162461bcd60e51b815260040161075d906156fb565b6001600160ff1b0385106146ec5760405162461bcd60e51b815260206004820152600c60248201526b125390d3d4949150d517d4d360a21b604482015260640161075d565b60006147198360e00151606460508660a001516147099190615b95565b6147139190615b73565b90614dff565b905085158061475857508260c0015161474457808360a0015161473c9190615b5b565b861115614758565b808360a001516147549190615bb4565b8610155b6147915760405162461bcd60e51b815260206004820152600a602482015269534c5f544f4f5f42494760b01b604482015260640161075d565b60695461479e8343615bb4565b10156147bc5760405162461bcd60e51b815260040161075d90615749565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b15801561480157600080fd5b505afa158015614815573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148399190614f18565b90508615806149335750806001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561487c57600080fd5b505afa158015614890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148b49190614f18565b6001600160a01b03166324abd3fb8a6040518263ffffffff1660e01b81526004016148e191815260200190565b60206040518083038186803b1580156148f957600080fd5b505afa15801561490d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061493191906150aa565b155b15614a20576067546001600160a01b031663a35441816149516140ff565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018c9052604481018b9052606481018a9052608401600060405180830381600087803b1580156149a757600080fd5b505af11580156149bb573d6000803e3d6000fd5b505050506149c76140ff565b604080518b8152602081018b90529081018990524260608201526001600160a01b0391909116907f6a750d0aaea2df37b3b72b79412df54b9e55109ccfaedf5dcecc2af9993a61de9060800160405180910390a2614c65565b60405163302809fd60e21b81526000906001600160a01b0383169063c0a027f490614a52908d906005906004016159df565b602060405180830381600087803b158015614a6c57600080fd5b505af1158015614a80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614aa49190615410565b9050816001600160a01b031663b8213bfa826040518060c00160405280614ac96140ff565b6001600160a01b031681526020018e81526020018d81526020018960a0015181526020018960c00151151581526020018c8152506040518363ffffffff1660e01b8152600401614b6a929190600060e08201905083825260018060a01b0383511660208301526020830151604083015260408301516060830152606083015160808301526080830151151560a083015260a083015160c08301529392505050565b600060405180830381600087803b158015614b8457600080fd5b505af1158015614b98573d6000803e3d6000fd5b50505050614ba46140ff565b604080518c8152602081018c90529081018a9052606081018390524260808201526001600160a01b0391909116907fb24bbc82fd04bd3dab7c96c1cabc7a0f7a1a87dfa2b47239926fbde0a0bfa8be9060a00160405180910390a260405163dd2f3c0560e01b81526001600160a01b0383169063dd2f3c05903490614c319085908c908c90600401615938565b6000604051808303818588803b158015614c4a57600080fd5b505af1158015614c5e573d6000803e3d6000fd5b5050505050505b505050505050505050565b60006402540be400614c828385615b95565b614c8c9190615b73565b90505b92915050565b614c9d614e11565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600054610100900460ff16614d0e5760405162461bcd60e51b815260040161075d90615798565b612142614e5a565b614d1e61427b565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258614cca3390565b60008080856001811115614d6957614d69615c2c565b1415614da75782614d7a8588615b5b565b614d849190615bb4565b905080614d966402540be40089615b95565b614da09190615b73565b9150614df5565b6001856001811115614dbb57614dbb615c2c565b1415614df55782614dcc8588615bb4565b614dd69190615bb4565b905080614de86402540be40089615b95565b614df29190615b73565b91505b9550959350505050565b600081614c826402540be40085615b95565b60335460ff166121425760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161075d565b600054610100900460ff16614e815760405162461bcd60e51b815260040161075d90615798565b6033805460ff19169055565b8051614e9881615c81565b919050565b60008083601f840112614eaf57600080fd5b50813567ffffffffffffffff811115614ec757600080fd5b6020830191508360208260051b8501011115614ee257600080fd5b9250929050565b8051614e9881615c96565b600060208284031215614f0657600080fd5b8135614f1181615c81565b9392505050565b600060208284031215614f2a57600080fd5b8151614f1181615c81565b60008060408385031215614f4857600080fd5b8235614f5381615c81565b91506020830135614f6381615c81565b809150509250929050565b60008060408385031215614f8157600080fd5b8235614f8c81615c81565b91506020830135614f6381615c96565b600080600060408486031215614fb157600080fd5b8335614fbc81615c81565b9250602084013567ffffffffffffffff80821115614fd957600080fd5b818601915086601f830112614fed57600080fd5b813581811115614ffc57600080fd5b87602082850101111561500e57600080fd5b6020830194508093505050509250925092565b6000806000806040858703121561503757600080fd5b843567ffffffffffffffff8082111561504f57600080fd5b61505b88838901614e9d565b9096509450602087013591508082111561507457600080fd5b5061508187828801614e9d565b95989497509550505050565b60006020828403121561509f57600080fd5b8135614f1181615c96565b6000602082840312156150bc57600080fd5b8151614f1181615c96565b60008060008060008060a087890312156150e057600080fd5b86356150eb81615ca4565b955060208701356150fb81615c81565b94506040870135935060608701359250608087013567ffffffffffffffff81111561512557600080fd5b61513189828a01614e9d565b979a9699509497509295939492505050565b60006020828403121561515557600080fd5b815167ffffffffffffffff8082111561516d57600080fd5b818401915084601f83011261518157600080fd5b81518181111561519357615193615c58565b604051601f8201601f19908116603f011681019083821181831017156151bb576151bb615c58565b816040528281528760208487010111156151d457600080fd5b6151e5836020830160208801615bcb565b979650505050505050565b6000610180828403121561520357600080fd5b61520b615b0d565b61521483614e8d565b815260208301516020820152604083015160408201526060830151606082015261524060808401614ee9565b608082015260a0838101519082015260c0808401519082015260e08084015190820152610100808401519082015261012080840151908201526101408084015190820152610160928301519281019290925250919050565b600060a082840312156152aa57600080fd5b60405160a0810181811067ffffffffffffffff821117156152cd576152cd615c58565b806040525082518152602083015160208201526040830151604082015260608301516152f881615c96565b60608201526080928301519281019290925250919050565b60008060008385036101a081121561532757600080fd5b6101608082121561533757600080fd5b859450840135905061534881615ca4565b92959294505050610180919091013590565b6000610160828403121561536d57600080fd5b615375615b37565b61537e83614e8d565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201526153be60c08401614ee9565b60c082015260e0838101519082015261010080840151908201526101208084015190820152610140928301519281019290925250919050565b60006020828403121561540957600080fd5b5035919050565b60006020828403121561542257600080fd5b5051919050565b6000806040838503121561543c57600080fd5b50508035926020909101359150565b60008060008060008060a0878903121561546457600080fd5b863595506020870135945060408701356002811061548157600080fd5b935060608701359250608087013567ffffffffffffffff81111561512557600080fd5b6000806000606084860312156154b957600080fd5b505081359360208301359350604090920135919050565b60008060008060008060a087890312156154e957600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff81111561512557600080fd5b60008060008060008060c0878903121561553557600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600081518084526155a0816020860160208601615bcb565b601f01601f19169290920160200192915050565b600281106155c4576155c4615c2c565b9052565b80516001600160a01b03168252602080820151908301526040808201519083015260608101516155f781615c6e565b806060840152505050565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015161565460c084018215159052565b5060e081810151908301526101008082015190830152610120808201519083015261014090810151910152565b8183823760009101908152919050565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b03851681526020810184905260408101839052608081016156d983615c6e565b82606083015295945050505050565b602081526000614c8c6020830184615588565b6020808252600890820152674e4f5f545241444560c01b604082015260600190565b60208082526012908201527113115591549051d157d25390d3d4949150d560721b604082015260600190565b6020808252600e908201526d4c494d49545f54494d454c4f434b60901b604082015260600190565b6020808252600d908201526c27a7262cafa7a822a920aa27a960991b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b602080825260089082015267474f565f4f4e4c5960c01b604082015260600190565b81516001600160a01b0316815261018081016020830151602083015260408301516040830152606083015160608301526080830151615848608084018215159052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151818401525061016080840151818401525092915050565b60a081016158ab82856155c8565b8260808301529392505050565b6000610200820190506158cc828651615602565b602085015161016083015260408501516101808301526060909401516101a08201526101c081019290925215156101e09091015290565b6101608101614c8f8284615602565b60a0810161592082856155c8565b6001600160a01b039290921660809190910152919050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b878110156159d157868503605f190183528135368a9003601e1901811261598857600080fd5b8901803567ffffffffffffffff8111156159a157600080fd5b8036038b13156159b057600080fd5b6159bd878288850161555f565b965050509183019190830190600101615962565b509298975050505050505050565b82815260408101600983106159f6576159f6615c2c565b8260208301529392505050565b60006101208201905083825260018060a01b03835116602083015260208301516040830152604083015160608301526060830151615a4460808401826155b4565b50608083015160a083015260a083015160c083015260c083015160e083015260e08301516101008301529392505050565b6000610100820190508982528860208301528715156040830152866060830152856080830152615aa485615c6e565b8460a08301528360c08301528260e08301529998505050505050505050565b878152602081018790526102208101615adf60408301886155b4565b615aec6060830187615602565b846101c0830152836101e08301528261020083015298975050505050505050565b604051610180810167ffffffffffffffff81118282101715615b3157615b31615c58565b60405290565b604051610160810167ffffffffffffffff81118282101715615b3157615b31615c58565b60008219821115615b6e57615b6e615c16565b500190565b600082615b9057634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615615baf57615baf615c16565b500290565b600082821015615bc657615bc6615c16565b500390565b60005b83811015615be6578181015183820152602001615bce565b83811115615bf5576000848401525b50505050565b6000600019821415615c0f57615c0f615c16565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60048110615c7e57615c7e615c2c565b50565b6001600160a01b0381168114615c7e57600080fd5b8015158114615c7e57600080fd5b60048110615c7e57600080fdfea264697066735822122072f48643396ca170a4aca563fe0663561cd3d0f49be2fb490da87c9e4a87a53a64736f6c63430008070033","sourceMap":"376:22917:111:-:0;;;3004:53;;;;;;;;;-1:-1:-1;3028:22:111;:20;:22::i;:::-;376:22917;;5939:280:24;6007:13;;;;;;;6006:14;5998:66;;;;;-1:-1:-1;;;5998:66:24;;216:2:154;5998:66:24;;;198:21:154;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:154;;;338:37;5998:66:24;;;;;;392:19:154;5998:66:24;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:24;-1:-1:-1;6125:30:24;;;;;;6174:28;;;564:36:154;;;6174:28:24;;;;;;552:2:154;6174:28:24;;;6074:139;5939:280::o;422:184:154:-;376:22917:111;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101815760003560e01c80636d70f7ae116100d1578063c0b4d24d1161008a578063ca5eb5e111610064578063ca5eb5e11461044b578063cd90b8a414610495578063d1a91ff2146104a8578063d4a1caa7146104bd57600080fd5b8063c0b4d24d146103f8578063c5ed6a081461040b578063c641558e1461042b57600080fd5b80636d70f7ae1461031d5780638456cb591461034d5780639a10cc32146103625780639e2033f514610382578063b9b6573a146103a2578063bffe3486146103c257600080fd5b806336fb8b151161013e578063485cc95511610118578063485cc95514610299578063570ca735146102b95780635c975abb146102d95780636d44a3b2146102fd57600080fd5b806336fb8b15146102425780633f4ba83a1461027157806346f6c8f51461028657600080fd5b80630890d22a146101865780631346b0ff146101af57806315b760b1146101e757806316fff074146101fc57806319cde9a11461021c5780632c3cbce41461022f575b600080fd5b34801561019257600080fd5b5061019c60695481565b6040519081526020015b60405180910390f35b3480156101bb57600080fd5b506068546101cf906001600160a01b031681565b6040516001600160a01b0390911681526020016101a6565b6101fa6101f53660046154d0565b6104dd565b005b34801561020857600080fd5b506067546101cf906001600160a01b031681565b61019c61022a366004615310565b61050b565b61019c61023d3660046154a4565b611600565b34801561024e57600080fd5b506101fa33600090815260656020526040902080546001600160a01b0319169055565b34801561027d57600080fd5b506101fa612084565b6101fa6102943660046150c7565b612144565b3480156102a557600080fd5b506101fa6102b4366004614f35565b612ba7565b3480156102c557600080fd5b50606a546101cf906001600160a01b031681565b3480156102e557600080fd5b5060335460ff165b60405190151581526020016101a6565b34801561030957600080fd5b506101fa610318366004614f6e565b612cef565b34801561032957600080fd5b506102ed610338366004614ef4565b606b6020526000908152604090205460ff1681565b34801561035957600080fd5b506101fa612e08565b610375610370366004614f9c565b612ec6565b6040516101a691906156e8565b34801561038e57600080fd5b506101fa61039d366004614ef4565b613001565b3480156103ae57600080fd5b506101fa6103bd366004615429565b61311e565b3480156103ce57600080fd5b506101cf6103dd366004614ef4565b6065602052600090815260409020546001600160a01b031681565b6101fa610406366004615021565b613357565b34801561041757600080fd5b506101fa6104263660046153f7565b6134ab565b34801561043757600080fd5b506101fa61044636600461551c565b613534565b34801561045757600080fd5b506101fa610466366004614ef4565b33600090815260656020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b61019c6104a336600461544b565b613798565b3480156104b457600080fd5b506101cf6140ff565b3480156104c957600080fd5b506101fa6104d83660046153f7565b614127565b6104e561427b565b6104f08686856142c1565b8015610503576105038686868585614561565b505050505050565b600061051561427b565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b15801561055a57600080fd5b505afa15801561056e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105929190614f18565b90506000816001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156105cf57600080fd5b505afa1580156105e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106079190614f18565b9050606760009054906101000a90046001600160a01b03166001600160a01b0316638049fde76040518163ffffffff1660e01b815260040160206040518083038186803b15801561065757600080fd5b505afa15801561066b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068f9190615410565b6067546001600160a01b031663f7b3c6fd6106a86140ff565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b1580156106e757600080fd5b505afa1580156106fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071f9190615410565b106107665760405162461bcd60e51b81526020600482015260126024820152714d41585f50454e44494e475f4f524445525360701b60448201526064015b60405180910390fd5b606760009054906101000a90046001600160a01b03166001600160a01b031663f65d9dbe6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107b457600080fd5b505afa1580156107c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ec9190615410565b6067546001600160a01b03166397e7995a6108056140ff565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208a0135602482015260440160206040518083038186803b15801561084e57600080fd5b505afa158015610862573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108869190615410565b6067546001600160a01b0316639c8912f161089f6140ff565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208b0135602482015260440160206040518083038186803b1580156108e857600080fd5b505afa1580156108fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109209190615410565b6067546001600160a01b0316631c8636b46109396140ff565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208c0135602482015260440160206040518083038186803b15801561098257600080fd5b505afa158015610996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ba9190615410565b6109c49190615b5b565b6109ce9190615b5b565b10610a115760405162461bcd60e51b815260206004820152601360248201527226a0ac2faa2920a222a9afa822a92fa820a4a960691b604482015260640161075d565b60405163238cd23f60e01b8152602087013560048201526001600160a01b0382169063238cd23f9060240160206040518083038186803b158015610a5457600080fd5b505afa158015610a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8c9190615410565b610a9e608088013560e0890135614c70565b1015610adc5760405162461bcd60e51b815260206004820152600d60248201526c42454c4f575f4d494e5f504f5360981b604482015260640161075d565b6101008601351580610b1b5750610af960e0870160c0880161508d565b610b0e578560a0013586610100013510610b1b565b8560a00135866101000135115b610b525760405162461bcd60e51b8152602060048201526008602482015267057524f4e475f54560c41b604482015260640161075d565b6101208601351580610b915750610b6f60e0870160c0880161508d565b610b84578560a0013586610120013511610b91565b8560a00135866101200135105b610bc85760405162461bcd60e51b815260206004820152600860248201526715d493d391d7d4d360c21b604482015260640161075d565b6000856003811115610bdc57610bdc615c2c565b14158015610bfc57506001856003811115610bf957610bf9615c2c565b14155b156110b55760008660e00135118015610c9a5750604051634cadbb2b60e11b815260208701356004820152600060248201526001600160a01b0382169063995b76569060440160206040518083038186803b158015610c5a57600080fd5b505afa158015610c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c929190615410565b8660e0013510155b8015610d2b5750604051639b2f6cab60e01b815260208701356004820152600060248201526001600160a01b03821690639b2f6cab9060440160206040518083038186803b158015610ceb57600080fd5b505afa158015610cff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d239190615410565b8660e0013511155b610d475760405162461bcd60e51b815260040161075d9061571d565b6067546001600160a01b0316638b83351a610d606140ff565b60675460405160e084901b6001600160e01b03191681526001600160a01b0392831660048201529116602482015260808901356044820152606401600060405180830381600087803b158015610db557600080fd5b505af1158015610dc9573d6000803e3d6000fd5b5050606754600092506001600160a01b031690506344d44f5a610dea6140ff565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208a0135602482015260440160206040518083038186803b158015610e3357600080fd5b505afa158015610e47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6b9190615410565b6067546040805161018081019091529192506001600160a01b03169063fdb153e29080610e966140ff565b6001600160a01b0316815260208b81013590820152604081018590526080808c0135606083015201610ece60e08c0160c08d0161508d565b151581526020018a60e0013581526020018a610100013581526020018a610120013581526020018a60a00135815260200188815260200143815260200160008152506040518263ffffffff1660e01b8152600401610f2c9190615805565b600060405180830381600087803b158015610f4657600080fd5b505af1158015610f5a573d6000803e3d6000fd5b50505050826001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b158015610f9757600080fd5b505afa158015610fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcf9190614f18565b6001600160a01b031663ec570610610fe56140ff565b8960200135848a6040518563ffffffff1660e01b815260040161100b94939291906156b2565b600060405180830381600087803b15801561102557600080fd5b505af1158015611039573d6000803e3d6000fd5b505050506110456140ff565b6001600160a01b03167f174df203b38fe4bbf31688bea280abf3c60a2d5a4214fdf30984abdcf6f15fca60208901358361108560e08c0160c08d0161508d565b8b60a0013560008c8c8f608001356040516110a7989796959493929190615a75565b60405180910390a25061155a565b60008660e0013511801561116957506001600160a01b03811663995b7656602088013560018860038111156110ec576110ec615c2c565b6040516001600160e01b031960e086901b168152600481019390935214602482015260440160206040518083038186803b15801561112957600080fd5b505afa15801561113d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111619190615410565b8660e0013510155b801561121557506001600160a01b038116639b2f6cab6020880135600188600381111561119857611198615c2c565b6040516001600160e01b031960e086901b168152600481019390935214602482015260440160206040518083038186803b1580156111d557600080fd5b505afa1580156111e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120d9190615410565b8660e0013511155b6112315760405162461bcd60e51b815260040161075d9061571d565b6067546001600160a01b0316638b83351a61124a6140ff565b60675460405160e084901b6001600160e01b03191681526001600160a01b0392831660048201529116602482015260808901356044820152606401600060405180830381600087803b15801561129f57600080fd5b505af11580156112b3573d6000803e3d6000fd5b50600092506112c0915050565b8560038111156112d2576112d2615c2c565b146113615760405163302809fd60e21b81526001600160a01b0383169063c0a027f49061130a9060208a0135906006906004016159df565b602060405180830381600087803b15801561132457600080fd5b505af1158015611338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135c9190615410565b6113e6565b60405163302809fd60e21b81526001600160a01b0383169063c0a027f4906113949060208a0135906000906004016159df565b602060405180830381600087803b1580156113ae57600080fd5b505af11580156113c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e69190615410565b606754604080516101e081019091529194506001600160a01b03169063d8137fe8908060808101806114166140ff565b6001600160a01b031681526020018b60200135815260200160008152602001600081526020018b608001358152602001600081526020018b60c0016020810190611460919061508d565b151581526020018b60e0013581526020018b610100013581526020018b6101200135815260200160008152508152602001600081526020018960a001358152602001878152508560016040518463ffffffff1660e01b81526004016114c7939291906158b8565b600060405180830381600087803b1580156114e157600080fd5b505af11580156114f5573d6000803e3d6000fd5b505050506115016140ff565b604080516020808a013582526001908201529081018590524260608201526001600160a01b0391909116907f1dc637f3b162f19a813b26fe5ed9122af72c7c58d7ff359728fd6517c110bf649060800160405180910390a25b606a546040516000916001600160a01b03169034908381818185875af1925050503d80600081146115a7576040519150601f19603f3d011682016040523d82523d6000602084013e6115ac565b606091505b50509050806115f65760405162461bcd60e51b815260206004820152601660248201527511561150d5551253d397d1915157d393d517d4d1539560521b604482015260640161075d565b5050509392505050565b600061160a61427b565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b15801561164f57600080fd5b505afa158015611663573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116879190614f18565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156116bf57600080fd5b505afa1580156116d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f79190614f18565b606a546040519192506000916001600160a01b039091169034908381818185875af1925050503d8060008114611749576040519150601f19603f3d011682016040523d82523d6000602084013e61174e565b606091505b50509050806117985760405162461bcd60e51b815260206004820152601660248201527511561150d5551253d397d1915157d393d517d4d1539560521b604482015260640161075d565b6067546000906001600160a01b031663a3a80ffe6117b46140ff565b89896040518463ffffffff1660e01b81526004016117d493929190615691565b6101606040518083038186803b1580156117ed57600080fd5b505afa158015611801573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611825919061535a565b6067549091506000906001600160a01b0316638c8ff1d56118446140ff565b8a8a6040518463ffffffff1660e01b815260040161186493929190615691565b60a06040518083038186803b15801561187c57600080fd5b505afa158015611890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b49190615298565b60600151905081606001518611156118fb5760405162461bcd60e51b815260206004820152600a60248201526912539597d05353d5539560b21b604482015260640161075d565b606760009054906101000a90046001600160a01b03166001600160a01b0316638049fde76040518163ffffffff1660e01b815260040160206040518083038186803b15801561194957600080fd5b505afa15801561195d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119819190615410565b6067546001600160a01b031663f7b3c6fd61199a6140ff565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b1580156119d957600080fd5b505afa1580156119ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a119190615410565b10611a535760405162461bcd60e51b81526020600482015260126024820152714d41585f50454e44494e475f4f524445525360701b604482015260640161075d565b8015611a985760405162461bcd60e51b81526020600482015260146024820152731053149150511657d091525391d7d0d313d4d15160621b604482015260640161075d565b60008260e0015111611abc5760405162461bcd60e51b815260040161075d906156fb565b836001600160a01b031663737113b589611ae38560e001518a614c7090919063ffffffff16565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401602060405180830381600087803b158015611b2157600080fd5b505af1158015611b35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b599190615410565b610140830151611b699042615bb4565b1015611ba55760405162461bcd60e51b815260206004820152600b60248201526a4541524c595f434c4f534560a81b604482015260640161075d565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b158015611bea57600080fd5b505afa158015611bfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c229190614f18565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015611c5a57600080fd5b505afa158015611c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c929190614f18565b6001600160a01b031663c5f5951a611ca86140ff565b8b8b6040518463ffffffff1660e01b8152600401611cc893929190615691565b60206040518083038186803b158015611ce057600080fd5b505afa158015611cf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1891906150aa565b905080611e2a57606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015611d6d57600080fd5b505afa158015611d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da59190614f18565b6001600160a01b031663c0a027f48a60016040518363ffffffff1660e01b8152600401611dd39291906159df565b602060405180830381600087803b158015611ded57600080fd5b505af1158015611e01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e259190615410565b611f30565b606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015611e7857600080fd5b505afa158015611e8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb09190614f18565b6001600160a01b031663c0a027f48a60076040518363ffffffff1660e01b8152600401611ede9291906159df565b602060405180830381600087803b158015611ef857600080fd5b505af1158015611f0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f309190615410565b606754604080516101e081019091529197506001600160a01b03169063d8137fe890806080810180611f606140ff565b6001600160a01b031681526020018e81526020018d81526020018c8152602001600081526020016000815260200160001515815260200160008152602001600081526020016000815260200160008152508152602001600081526020016000815260200160008152508860006040518463ffffffff1660e01b8152600401611fea939291906158b8565b600060405180830381600087803b15801561200457600080fd5b505af1158015612018573d6000803e3d6000fd5b505050506120246140ff565b604080518b8152600060208201529081018890524260608201526001600160a01b0391909116907f1dc637f3b162f19a813b26fe5ed9122af72c7c58d7ff359728fd6517c110bf649060800160405180910390a250505050509392505050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156120d257600080fd5b505afa1580156120e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210a9190614f18565b6001600160a01b0316336001600160a01b03161461213a5760405162461bcd60e51b815260040161075d906157e3565b612142614c95565b565b61214c61427b565b336000908152606b602052604090205460ff1661217b5760405162461bcd60e51b815260040161075d90615771565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b1580156121c057600080fd5b505afa1580156121d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f89190614f18565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561223057600080fd5b505afa158015612244573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122689190614f18565b9050600387600381111561227e5761227e615c2c565b141561234457606754604051636e6f99cd60e11b81526001600160a01b039091169063dcdf339a906122b890899089908990600401615691565b60206040518083038186803b1580156122d057600080fd5b505afa1580156122e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230891906150aa565b61233f5760405162461bcd60e51b81526020600482015260086024820152671393d7d31253525560c21b604482015260640161075d565b61268c565b6067546040516351d407ff60e11b81526000916001600160a01b03169063a3a80ffe90612379908a908a908a90600401615691565b6101606040518083038186803b15801561239257600080fd5b505afa1580156123a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ca919061535a565b905060008160e00151116123f05760405162461bcd60e51b815260040161075d906156fb565b600188600381111561240457612404615c2c565b14158061241657506000816101200151115b61244a5760405162461bcd60e51b81526020600482015260056024820152641393d7d4d360da1b604482015260640161075d565b600288600381111561245e5761245e615c2c565b1415612599576068548151602083015160408085015160a086015160c0870151606088015160e08901519451636bc84d5960e01b81526001600160a01b0397881660048201526024810196909652604486019390935260648501919091521515608484015260a483015260c48201526000929190911690636bc84d599060e40160206040518083038186803b1580156124f657600080fd5b505afa15801561250a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252e9190615410565b90508161012001516000148061255e57508160c0015161255557816101200151811061255e565b81610120015181115b6125935760405162461bcd60e51b8152602060048201526006602482015265121054d7d4d360d21b604482015260640161075d565b5061268a565b816001600160a01b031663737113b582602001516125c88460e001518560600151614c7090919063ffffffff16565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401602060405180830381600087803b15801561260657600080fd5b505af115801561261a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263e9190615410565b61014082015161264e9042615bb4565b101561268a5760405162461bcd60e51b815260206004820152600b60248201526a4541524c595f434c4f534560a81b604482015260640161075d565b505b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b1580156126d157600080fd5b505afa1580156126e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127099190614f18565b90506000816001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b15801561274657600080fd5b505afa15801561275a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061277e9190614f18565b9050600060405180608001604052808a6001600160a01b031681526020018981526020018881526020018b60038111156127ba576127ba615c2c565b81525090506000606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561280f57600080fd5b505afa158015612823573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128479190614f18565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561287f57600080fd5b505afa158015612893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b79190614f18565b6001600160a01b031663c5f5951a8b8b8b6040518463ffffffff1660e01b81526004016128e693929190615691565b60206040518083038186803b1580156128fe57600080fd5b505afa158015612912573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293691906150aa565b905060006001600160a01b03851663c0a027f48b60038f600381111561295e5761295e615c2c565b14612976578461296f576003612979565b6008612979565b60025b6040518363ffffffff1660e01b81526004016129969291906159df565b602060405180830381600087803b1580156129b057600080fd5b505af11580156129c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129e89190615410565b606754604080516080810182526001600160a01b038f81168252602082018f90529181018d9052929350169063d775d54890606081018f6003811115612a3057612a30615c2c565b815250836040518363ffffffff1660e01b8152600401612a5192919061589d565b600060405180830381600087803b158015612a6b57600080fd5b505af1158015612a7f573d6000803e3d6000fd5b50505050836001600160a01b031663c23c886c84612a9b6140ff565b6040518363ffffffff1660e01b8152600401612ab8929190615912565b600060405180830381600087803b158015612ad257600080fd5b505af1158015612ae6573d6000803e3d6000fd5b5050604080518d815260208101859052428183015290516001600160a01b038f1693507fd0ac65cbccd4e7062356a9be37735153d991bdc4de08f024a8fffc0600f7048892509081900360600190a260405163dd2f3c0560e01b81526001600160a01b0386169063dd2f3c05903490612b679085908d908d90600401615938565b6000604051808303818588803b158015612b8057600080fd5b505af1158015612b94573d6000803e3d6000fd5b5050505050505050505050505050505050565b600054610100900460ff1615808015612bc75750600054600160ff909116105b80612be15750303b158015612be1575060005460ff166001145b612c445760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161075d565b6000805460ff191660011790558015612c67576000805461ff0019166101001790555b606780546001600160a01b038086166001600160a01b03199283161790925560688054928516929091169190911790556002606955612ca4614ce7565b8015612cea576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015612d3d57600080fd5b505afa158015612d51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d759190614f18565b6001600160a01b0316336001600160a01b031614612da55760405162461bcd60e51b815260040161075d906157e3565b6001600160a01b0382166000818152606b6020908152604091829020805460ff19168515159081179091558251938452908301527f966c160e1c4dbc7df8d69af4ace01e9297c3cf016397b7914971f2fbfa32672d910160405180910390a15050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015612e5657600080fd5b505afa158015612e6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e8e9190614f18565b6001600160a01b0316336001600160a01b031614612ebe5760405162461bcd60e51b815260040161075d906157e3565b612142614d16565b6001600160a01b03838116600090815260656020526040902054606091163314612f2a5760405162461bcd60e51b81526020600482015260156024820152741111531151d0551157d393d517d054141493d59151605a1b604482015260640161075d565b606680546001600160a01b0319166001600160a01b03861617905560405160009081903090612f5c9087908790615681565b600060405180830381855af49150503d8060008114612f97576040519150601f19603f3d011682016040523d82523d6000602084013e612f9c565b606091505b509150915081612fe857604481511015612fb557600080fd5b60048101905080806020019051810190612fcf9190615143565b60405162461bcd60e51b815260040161075d91906156e8565b606680546001600160a01b031916905595945050505050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561304f57600080fd5b505afa158015613063573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130879190614f18565b6001600160a01b0316336001600160a01b0316146130b75760405162461bcd60e51b815260040161075d906157e3565b6001600160a01b0381166130fc5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015260640161075d565b606a80546001600160a01b0319166001600160a01b0392909216919091179055565b61312661427b565b6067546000906001600160a01b031663b8878a2c6131426140ff565b85856040518463ffffffff1660e01b815260040161316293929190615691565b6101806040518083038186803b15801561317b57600080fd5b505afa15801561318f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b391906151f0565b9050606954816101400151436131c99190615bb4565b10156131e75760405162461bcd60e51b815260040161075d90615749565b6067546001600160a01b0316638b83351a816132016140ff565b84610160015185606001516132169190615b5b565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561326557600080fd5b505af1158015613279573d6000803e3d6000fd5b50506067546001600160a01b0316915063b4b0f56790506132986140ff565b85856040518463ffffffff1660e01b81526004016132b893929190615691565b600060405180830381600087803b1580156132d257600080fd5b505af11580156132e6573d6000803e3d6000fd5b505050506132f26140ff565b6001600160a01b03167f99b2cab0fe1db813d380331f51c117d5622d07c79686cc4ecd043e8d56ace094848442856060015160405161334a949392919093845260208401929092526040830152606082015260800190565b60405180910390a2505050565b336000908152606b602052604090205460ff166133865760405162461bcd60e51b815260040161075d90615771565b60005b838110156134a457606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b1580156133df57600080fd5b505afa1580156133f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134179190614f18565b6001600160a01b031663dd2f3c053487878581811061343857613438615c42565b9050602002013586866040518563ffffffff1660e01b815260040161345f93929190615938565b6000604051808303818588803b15801561347857600080fd5b505af115801561348c573d6000803e3d6000fd5b5050505050808061349c90615bfb565b915050613389565b5050505050565b336000908152606b602052604090205460ff166134da5760405162461bcd60e51b815260040161075d90615771565b606754604051630d32c90760e01b8152600481018390526001600160a01b0390911690630d32c90790602401600060405180830381600087803b15801561352057600080fd5b505af11580156134a4573d6000803e3d6000fd5b61353c61427b565b6067546000906001600160a01b031663b8878a2c6135586140ff565b89896040518463ffffffff1660e01b815260040161357893929190615691565b6101806040518083038186803b15801561359157600080fd5b505afa1580156135a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135c991906151f0565b9050606954816101400151436135df9190615bb4565b10156135fd5760405162461bcd60e51b815260040161075d90615749565b82158061361a575080608001516136165782851161361a565b8285105b6136515760405162461bcd60e51b8152602060048201526008602482015267057524f4e475f54560c41b604482015260640161075d565b81158061366e5750806080015161366a5781851061366e565b8185115b6136a55760405162461bcd60e51b815260206004820152600860248201526715d493d391d7d4d360c21b604482015260640161075d565b6101008101859052610120810184905260c0810183905260e0810182905260675460405163574564a760e11b81526001600160a01b039091169063ae8ac94e906136f3908490600401615805565b600060405180830381600087803b15801561370d57600080fd5b505af1158015613721573d6000803e3d6000fd5b5050505061372d6140ff565b604080518981526020810189905290810187905260608101859052608081018490524260a08201526001600160a01b0391909116907f710a8db87f04e82a9de40076812593a965f4aa48693196d2144c07ff9710e8909060c00160405180910390a250505050505050565b60006137a261427b565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b1580156137e757600080fd5b505afa1580156137fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381f9190614f18565b6067549091506000906001600160a01b031663a3a80ffe61383e6140ff565b8b8b6040518463ffffffff1660e01b815260040161385e93929190615691565b6101606040518083038186803b15801561387757600080fd5b505afa15801561388b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138af919061535a565b6067549091506000906001600160a01b0316638c8ff1d56138ce6140ff565b8c8c6040518463ffffffff1660e01b81526004016138ee93929190615691565b60a06040518083038186803b15801561390657600080fd5b505afa15801561391a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061393e9190615298565b90508060600151156139895760405162461bcd60e51b81526020600482015260146024820152731053149150511657d091525391d7d0d313d4d15160621b604482015260640161075d565b60008260e00151116139ad5760405162461bcd60e51b815260040161075d906156fb565b6068548251602084015160408086015160c0870151606088015160e08901519351630284c13960e11b81526001600160a01b0396871660048201526024810195909552604485019290925215156064840152608483015260a4820152600092919091169063050982729060c40160206040518083038186803b158015613a3257600080fd5b505afa158015613a46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a6a9190615410565b60405163302809fd60e21b81529091506001600160a01b0385169063c0a027f490613a9b908e9060049081016159df565b602060405180830381600087803b158015613ab557600080fd5b505af1158015613ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aed9190615410565b9450836001600160a01b031663cbe91bd986604051806101000160405280613b136140ff565b6001600160a01b031681526020018f81526020018e81526020018d6001811115613b3f57613b3f615c2c565b81526020018c8152602001866080015181526020018581526020018760e001518152506040518363ffffffff1660e01b8152600401613b7f929190615a03565b600060405180830381600087803b158015613b9957600080fd5b505af1158015613bad573d6000803e3d6000fd5b50505050613bc6826000015184606001518b8b85614d53565b606085015260e084015260675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b158015613c1557600080fd5b505afa158015613c29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c4d9190614f18565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015613c8557600080fd5b505afa158015613c99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cbd9190614f18565b6001600160a01b031663c5f5951a613cd36140ff565b8e8e6040518463ffffffff1660e01b8152600401613cf393929190615691565b60206040518083038186803b158015613d0b57600080fd5b505afa158015613d1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d4391906150aa565b9050808015613d63575060018a6001811115613d6157613d61615c2c565b145b15613d9e5760405162461bcd60e51b815260206004820152600b60248201526a1393d517d0531313d5d15160aa1b604482015260640161075d565b60008460e00151118015613eae5750846001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015613de657600080fd5b505afa158015613dfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e1e9190614f18565b6020850151604051634cadbb2b60e11b8152600481019190915282151560248201526001600160a01b03919091169063995b76569060440160206040518083038186803b158015613e6e57600080fd5b505afa158015613e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ea69190615410565b8460e0015110155b8015613fb65750846001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015613eee57600080fd5b505afa158015613f02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f269190614f18565b6020850151604051639b2f6cab60e01b8152600481019190915282151560248201526001600160a01b039190911690639b2f6cab9060440160206040518083038186803b158015613f7657600080fd5b505afa158015613f8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fae9190615410565b8460e0015111155b613fd25760405162461bcd60e51b815260040161075d9061571d565b613fda6140ff565b6001600160a01b03167f48452067591e9581b9c1f3135e16ae22829a7c8afc6b3d6a1afa2cd295cc11338d8d8d88878960800151426040516140229796959493929190615ac3565b60405180910390a260675460405163f0cb9b1160e01b81526001600160a01b039091169063f0cb9b119061405a908790600401615903565b600060405180830381600087803b15801561407457600080fd5b505af1158015614088573d6000803e3d6000fd5b505060405163dd2f3c0560e01b81526001600160a01b038816925063dd2f3c05915034906140be908a908d908d90600401615938565b6000604051808303818588803b1580156140d757600080fd5b505af11580156140eb573d6000803e3d6000fd5b505050505050505050509695505050505050565b6066546000906001600160a01b031661411757503390565b506066546001600160a01b031690565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561417557600080fd5b505afa158015614189573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141ad9190614f18565b6001600160a01b0316336001600160a01b0316146141dd5760405162461bcd60e51b815260040161075d906157e3565b600081116142175760405162461bcd60e51b8152602060048201526007602482015266056414c55455f360cc1b604482015260640161075d565b606981905560408051818152601381830152726c696d69744f726465727354696d656c6f636b60681b60608201526020810183905290517f8cf3e35f6221b16e1670a3413180c9484bf5aa71787905909fa82a6a2662e9ab9181900360800190a150565b60335460ff16156121425760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161075d565b6067546000906001600160a01b031663a3a80ffe6142dd6140ff565b86866040518463ffffffff1660e01b81526004016142fd93929190615691565b6101606040518083038186803b15801561431657600080fd5b505afa15801561432a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061434e919061535a565b60e001516067549091506000906001600160a01b0316638c8ff1d56143716140ff565b87876040518463ffffffff1660e01b815260040161439193929190615691565b60a06040518083038186803b1580156143a957600080fd5b505afa1580156143bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143e19190615298565b602001519050600082116144075760405162461bcd60e51b815260040161075d906156fb565b6069546144148243615bb4565b10156144325760405162461bcd60e51b815260040161075d90615749565b6001600160ff1b0383106144775760405162461bcd60e51b815260206004820152600c60248201526b0494e434f52524543545f54560a41b604482015260640161075d565b6067546001600160a01b0316637fdb96f36144906140ff565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018890526044810187905260648101869052608401600060405180830381600087803b1580156144e657600080fd5b505af11580156144fa573d6000803e3d6000fd5b505050506145066140ff565b60408051878152602081018790529081018590524260608201526001600160a01b0391909116907f01c13b316ce9327f58f220b36e368c197eda79df0102d7f4363f1e7fe29323e89060800160405180910390a25050505050565b6067546000906001600160a01b031663a3a80ffe61457d6140ff565b88886040518463ffffffff1660e01b815260040161459d93929190615691565b6101606040518083038186803b1580156145b657600080fd5b505afa1580156145ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145ee919061535a565b6067549091506000906001600160a01b0316638c8ff1d561460d6140ff565b89896040518463ffffffff1660e01b815260040161462d93929190615691565b60a06040518083038186803b15801561464557600080fd5b505afa158015614659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061467d9190615298565b60400151905060008260e00151116146a75760405162461bcd60e51b815260040161075d906156fb565b6001600160ff1b0385106146ec5760405162461bcd60e51b815260206004820152600c60248201526b125390d3d4949150d517d4d360a21b604482015260640161075d565b60006147198360e00151606460508660a001516147099190615b95565b6147139190615b73565b90614dff565b905085158061475857508260c0015161474457808360a0015161473c9190615b5b565b861115614758565b808360a001516147549190615bb4565b8610155b6147915760405162461bcd60e51b815260206004820152600a602482015269534c5f544f4f5f42494760b01b604482015260640161075d565b60695461479e8343615bb4565b10156147bc5760405162461bcd60e51b815260040161075d90615749565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b15801561480157600080fd5b505afa158015614815573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148399190614f18565b90508615806149335750806001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561487c57600080fd5b505afa158015614890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148b49190614f18565b6001600160a01b03166324abd3fb8a6040518263ffffffff1660e01b81526004016148e191815260200190565b60206040518083038186803b1580156148f957600080fd5b505afa15801561490d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061493191906150aa565b155b15614a20576067546001600160a01b031663a35441816149516140ff565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018c9052604481018b9052606481018a9052608401600060405180830381600087803b1580156149a757600080fd5b505af11580156149bb573d6000803e3d6000fd5b505050506149c76140ff565b604080518b8152602081018b90529081018990524260608201526001600160a01b0391909116907f6a750d0aaea2df37b3b72b79412df54b9e55109ccfaedf5dcecc2af9993a61de9060800160405180910390a2614c65565b60405163302809fd60e21b81526000906001600160a01b0383169063c0a027f490614a52908d906005906004016159df565b602060405180830381600087803b158015614a6c57600080fd5b505af1158015614a80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614aa49190615410565b9050816001600160a01b031663b8213bfa826040518060c00160405280614ac96140ff565b6001600160a01b031681526020018e81526020018d81526020018960a0015181526020018960c00151151581526020018c8152506040518363ffffffff1660e01b8152600401614b6a929190600060e08201905083825260018060a01b0383511660208301526020830151604083015260408301516060830152606083015160808301526080830151151560a083015260a083015160c08301529392505050565b600060405180830381600087803b158015614b8457600080fd5b505af1158015614b98573d6000803e3d6000fd5b50505050614ba46140ff565b604080518c8152602081018c90529081018a9052606081018390524260808201526001600160a01b0391909116907fb24bbc82fd04bd3dab7c96c1cabc7a0f7a1a87dfa2b47239926fbde0a0bfa8be9060a00160405180910390a260405163dd2f3c0560e01b81526001600160a01b0383169063dd2f3c05903490614c319085908c908c90600401615938565b6000604051808303818588803b158015614c4a57600080fd5b505af1158015614c5e573d6000803e3d6000fd5b5050505050505b505050505050505050565b60006402540be400614c828385615b95565b614c8c9190615b73565b90505b92915050565b614c9d614e11565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600054610100900460ff16614d0e5760405162461bcd60e51b815260040161075d90615798565b612142614e5a565b614d1e61427b565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258614cca3390565b60008080856001811115614d6957614d69615c2c565b1415614da75782614d7a8588615b5b565b614d849190615bb4565b905080614d966402540be40089615b95565b614da09190615b73565b9150614df5565b6001856001811115614dbb57614dbb615c2c565b1415614df55782614dcc8588615bb4565b614dd69190615bb4565b905080614de86402540be40089615b95565b614df29190615b73565b91505b9550959350505050565b600081614c826402540be40085615b95565b60335460ff166121425760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161075d565b600054610100900460ff16614e815760405162461bcd60e51b815260040161075d90615798565b6033805460ff19169055565b8051614e9881615c81565b919050565b60008083601f840112614eaf57600080fd5b50813567ffffffffffffffff811115614ec757600080fd5b6020830191508360208260051b8501011115614ee257600080fd5b9250929050565b8051614e9881615c96565b600060208284031215614f0657600080fd5b8135614f1181615c81565b9392505050565b600060208284031215614f2a57600080fd5b8151614f1181615c81565b60008060408385031215614f4857600080fd5b8235614f5381615c81565b91506020830135614f6381615c81565b809150509250929050565b60008060408385031215614f8157600080fd5b8235614f8c81615c81565b91506020830135614f6381615c96565b600080600060408486031215614fb157600080fd5b8335614fbc81615c81565b9250602084013567ffffffffffffffff80821115614fd957600080fd5b818601915086601f830112614fed57600080fd5b813581811115614ffc57600080fd5b87602082850101111561500e57600080fd5b6020830194508093505050509250925092565b6000806000806040858703121561503757600080fd5b843567ffffffffffffffff8082111561504f57600080fd5b61505b88838901614e9d565b9096509450602087013591508082111561507457600080fd5b5061508187828801614e9d565b95989497509550505050565b60006020828403121561509f57600080fd5b8135614f1181615c96565b6000602082840312156150bc57600080fd5b8151614f1181615c96565b60008060008060008060a087890312156150e057600080fd5b86356150eb81615ca4565b955060208701356150fb81615c81565b94506040870135935060608701359250608087013567ffffffffffffffff81111561512557600080fd5b61513189828a01614e9d565b979a9699509497509295939492505050565b60006020828403121561515557600080fd5b815167ffffffffffffffff8082111561516d57600080fd5b818401915084601f83011261518157600080fd5b81518181111561519357615193615c58565b604051601f8201601f19908116603f011681019083821181831017156151bb576151bb615c58565b816040528281528760208487010111156151d457600080fd5b6151e5836020830160208801615bcb565b979650505050505050565b6000610180828403121561520357600080fd5b61520b615b0d565b61521483614e8d565b815260208301516020820152604083015160408201526060830151606082015261524060808401614ee9565b608082015260a0838101519082015260c0808401519082015260e08084015190820152610100808401519082015261012080840151908201526101408084015190820152610160928301519281019290925250919050565b600060a082840312156152aa57600080fd5b60405160a0810181811067ffffffffffffffff821117156152cd576152cd615c58565b806040525082518152602083015160208201526040830151604082015260608301516152f881615c96565b60608201526080928301519281019290925250919050565b60008060008385036101a081121561532757600080fd5b6101608082121561533757600080fd5b859450840135905061534881615ca4565b92959294505050610180919091013590565b6000610160828403121561536d57600080fd5b615375615b37565b61537e83614e8d565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201526153be60c08401614ee9565b60c082015260e0838101519082015261010080840151908201526101208084015190820152610140928301519281019290925250919050565b60006020828403121561540957600080fd5b5035919050565b60006020828403121561542257600080fd5b5051919050565b6000806040838503121561543c57600080fd5b50508035926020909101359150565b60008060008060008060a0878903121561546457600080fd5b863595506020870135945060408701356002811061548157600080fd5b935060608701359250608087013567ffffffffffffffff81111561512557600080fd5b6000806000606084860312156154b957600080fd5b505081359360208301359350604090920135919050565b60008060008060008060a087890312156154e957600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff81111561512557600080fd5b60008060008060008060c0878903121561553557600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600081518084526155a0816020860160208601615bcb565b601f01601f19169290920160200192915050565b600281106155c4576155c4615c2c565b9052565b80516001600160a01b03168252602080820151908301526040808201519083015260608101516155f781615c6e565b806060840152505050565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015161565460c084018215159052565b5060e081810151908301526101008082015190830152610120808201519083015261014090810151910152565b8183823760009101908152919050565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b03851681526020810184905260408101839052608081016156d983615c6e565b82606083015295945050505050565b602081526000614c8c6020830184615588565b6020808252600890820152674e4f5f545241444560c01b604082015260600190565b60208082526012908201527113115591549051d157d25390d3d4949150d560721b604082015260600190565b6020808252600e908201526d4c494d49545f54494d454c4f434b60901b604082015260600190565b6020808252600d908201526c27a7262cafa7a822a920aa27a960991b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b602080825260089082015267474f565f4f4e4c5960c01b604082015260600190565b81516001600160a01b0316815261018081016020830151602083015260408301516040830152606083015160608301526080830151615848608084018215159052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151818401525061016080840151818401525092915050565b60a081016158ab82856155c8565b8260808301529392505050565b6000610200820190506158cc828651615602565b602085015161016083015260408501516101808301526060909401516101a08201526101c081019290925215156101e09091015290565b6101608101614c8f8284615602565b60a0810161592082856155c8565b6001600160a01b039290921660809190910152919050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b878110156159d157868503605f190183528135368a9003601e1901811261598857600080fd5b8901803567ffffffffffffffff8111156159a157600080fd5b8036038b13156159b057600080fd5b6159bd878288850161555f565b965050509183019190830190600101615962565b509298975050505050505050565b82815260408101600983106159f6576159f6615c2c565b8260208301529392505050565b60006101208201905083825260018060a01b03835116602083015260208301516040830152604083015160608301526060830151615a4460808401826155b4565b50608083015160a083015260a083015160c083015260c083015160e083015260e08301516101008301529392505050565b6000610100820190508982528860208301528715156040830152866060830152856080830152615aa485615c6e565b8460a08301528360c08301528260e08301529998505050505050505050565b878152602081018790526102208101615adf60408301886155b4565b615aec6060830187615602565b846101c0830152836101e08301528261020083015298975050505050505050565b604051610180810167ffffffffffffffff81118282101715615b3157615b31615c58565b60405290565b604051610160810167ffffffffffffffff81118282101715615b3157615b31615c58565b60008219821115615b6e57615b6e615c16565b500190565b600082615b9057634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615615baf57615baf615c16565b500290565b600082821015615bc657615bc6615c16565b500390565b60005b83811015615be6578181015183820152602001615bce565b83811115615bf5576000848401525b50505050565b6000600019821415615c0f57615c0f615c16565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60048110615c7e57615c7e615c2c565b50565b6001600160a01b0381168114615c7e57600080fd5b8015158114615c7e57600080fd5b60048110615c7e57600080fdfea264697066735822122072f48643396ca170a4aca563fe0663561cd3d0f49be2fb490da87c9e4a87a53a64736f6c63430008070033","sourceMap":"376:22917:111:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;640:31;;;;;;;;;;;;;;;;;;;33468:25:154;;;33456:2;33441:18;640:31:111;;;;;;;;606:27;;;;;;;;;;-1:-1:-1;606:27:111;;;;-1:-1:-1;;;;;606:27:111;;;;;;-1:-1:-1;;;;;15696:32:154;;;;15678:51;;15666:2;15651:18;606:27:111;15532:203:154;15902:340:111;;;;;;:::i;:::-;;:::i;:::-;;569:31;;;;;;;;;;-1:-1:-1;569:31:111;;;;-1:-1:-1;;;;;569:31:111;;;7173:4036;;;;;;:::i;:::-;;:::i;11443:1818::-;;;;;;:::i;:::-;;:::i;513:88:103:-;;;;;;;;;;-1:-1:-1;570:10:103;592:1;558:23;;;:11;:23;;;;;:36;;-1:-1:-1;;;;;;558:36:103;;;15902:340:111;4007:63;;;;;;;;;;;;;:::i;16624:2689::-;;;;;;:::i;:::-;;:::i;3245:238::-;;;;;;;;;;-1:-1:-1;3245:238:111;;;;;:::i;:::-;;:::i;677:23::-;;;;;;;;;;-1:-1:-1;677:23:111;;;;-1:-1:-1;;;;;677:23:111;;;1858:84:25;;;;;;;;;;-1:-1:-1;1928:7:25;;;;1858:84;;;19343:14:154;;19336:22;19318:41;;19306:2;19291:18;1858:84:25;19178:187:154;4076:183:111;;;;;;;;;;-1:-1:-1;4076:183:111;;;;;:::i;:::-;;:::i;707:42::-;;;;;;;;;;-1:-1:-1;707:42:111;;;;;:::i;:::-;;;;;;;;;;;;;;;;3889:59;;;;;;;;;;;;;:::i;607:695:103:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4265:164:111:-;;;;;;;;;;-1:-1:-1;4265:164:111;;;;;:::i;:::-;;:::i;15003:563::-;;;;;;;;;;-1:-1:-1;15003:563:111;;;;;:::i;:::-;;:::i;174:46:103:-;;;;;;;;;;-1:-1:-1;174:46:103;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;174:46:103;;;13456:287:111;;;;;;:::i;:::-;;:::i;19409:132::-;;;;;;;;;;-1:-1:-1;19409:132:111;;;;;:::i;:::-;;:::i;14042:797::-;;;;;;;;;;-1:-1:-1;14042:797:111;;;;;:::i;:::-;;:::i;263:244:103:-;;;;;;;;;;-1:-1:-1;263:244:103;;;;;:::i;:::-;478:10;466:23;;;;:11;:23;;;;;:34;;-1:-1:-1;;;;;;466:34:103;-1:-1:-1;;;;;466:34:103;;;;;;;;;;263:244;4775:2182:111;;;;;;:::i;:::-;;:::i;1308:197:103:-;;;;;;;;;;;;;:::i;3622:210:111:-;;;;;;;;;;-1:-1:-1;3622:210:111;;;;;:::i;:::-;;:::i;15902:340::-;1482:19:25;:17;:19::i;:::-;16102:37:111::1;16112:10;16124:6;16132;16102:9;:37::i;:::-;16152:27:::0;;16149:86:::1;;16181:54;16191:10;16203:6;16211;16219:15;;16181:9;:54::i;:::-;15902:340:::0;;;;;;:::o;7173:4036::-;7347:12;1482:19:25;:17;:19::i;:::-;7402:8:111::1;::::0;:26:::1;::::0;;-1:-1:-1;;;7402:26:111;;;;7372:27:::1;::::0;-1:-1:-1;;;;;7402:8:111::1;::::0;-1:-1:-1;;7402:26:111::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7372:56;;7438:24;7465:10;-1:-1:-1::0;;;;;7465:23:111::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7556:8;::::0;:33:::1;::::0;;-1:-1:-1;;;7556:33:111;;;;7438:52;;-1:-1:-1;;;;;;7556:8:111;;::::1;::::0;-1:-1:-1;;7556:33:111::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:33;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7509:8;::::0;-1:-1:-1;;;;;7509:8:111::1;:29;7539:13;:11;:13::i;:::-;7509:44;::::0;;-1:-1:-1;;;;;;;7509:44:111;;;;;;-1:-1:-1;;;;;15696:32:154;;;;7509:44:111::1;::::0;::::1;15678:51:154::0;7509:44:111;15651:18:154;;;;;7509:44:111::1;::::0;;;;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:80;7501:111;;;::::0;-1:-1:-1;;;7501:111:111;;26648:2:154;7501:111:111::1;::::0;::::1;26630:21:154::0;26687:2;26667:18;;;26660:30;-1:-1:-1;;;26706:18:154;;;26699:48;26764:18;;7501:111:111::1;;;;;;;;;7877:8;::::0;:27:::1;::::0;;-1:-1:-1;;;7877:27:111;;;;-1:-1:-1;;;;;7877:8:111;;::::1;::::0;:25:::1;::::0;:27:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7801:8;::::0;-1:-1:-1;;;;;7801:8:111::1;:29;7831:13;:11;:13::i;:::-;7801:57;::::0;;-1:-1:-1;;;;;;;7801:57:111;;;;;;-1:-1:-1;;;;;16601:32:154;;;;7801:57:111::1;::::0;::::1;16583:51:154::0;7846:11:111::1;::::0;;::::1;;16650:18:154::0;;;16643:34;7801:57:111;;16556:18:154;;;;;7801:57:111;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7723:8;::::0;-1:-1:-1;;;;;7723:8:111::1;:31;7755:13;:11;:13::i;:::-;7723:59;::::0;;-1:-1:-1;;;;;;;7723:59:111;;;;;;-1:-1:-1;;;;;16601:32:154;;;;7723:59:111::1;::::0;::::1;16583:51:154::0;7770:11:111::1;::::0;;::::1;;16650:18:154::0;;;16643:34;7723:59:111;;16556:18:154;;;;;7723:59:111;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7652:8;::::0;-1:-1:-1;;;;;7652:8:111::1;:24;7677:13;:11;:13::i;:::-;7652:52;::::0;;-1:-1:-1;;;;;;;7652:52:111;;;;;;-1:-1:-1;;;;;16601:32:154;;;;7652:52:111::1;::::0;::::1;16583:51:154::0;7692:11:111::1;::::0;;::::1;;16650:18:154::0;;;16643:34;7652:52:111;;16556:18:154;;;;;7652:52:111;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:130;;;;:::i;:::-;:206;;;;:::i;:::-;:252;7631:318;;;::::0;-1:-1:-1;;;7631:318:111;;25194:2:154;7631:318:111::1;::::0;::::1;25176:21:154::0;25233:2;25213:18;;;25206:30;-1:-1:-1;;;25252:18:154;;;25245:49;25311:18;;7631:318:111::1;24992:343:154::0;7631:318:111::1;8006:42;::::0;-1:-1:-1;;;8006:42:111;;8036:11:::1;::::0;::::1;;8006:42;::::0;::::1;33468:25:154::0;-1:-1:-1;;;;;8006:29:111;::::1;::::0;::::1;::::0;33441:18:154;;8006:42:111::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7968:34;:18;::::0;::::1;;7991:10;::::0;::::1;;7968:22;:34::i;:::-;:80;;7960:106;;;::::0;-1:-1:-1;;;7960:106:111;;21715:2:154;7960:106:111::1;::::0;::::1;21697:21:154::0;21754:2;21734:18;;;21727:30;-1:-1:-1;;;21773:18:154;;;21766:43;21826:18;;7960:106:111::1;21513:337:154::0;7960:106:111::1;8086:4;::::0;::::1;;:9:::0;;:62:::1;;-1:-1:-1::0;8100:5:111::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;:47;;8136:1;:11;;;8129:1;:4;;;:18;8100:47;;;8115:1;:11;;;8108:1;:4;;;:18;8100:47;8078:83;;;::::0;-1:-1:-1;;;8078:83:111;;24188:2:154;8078:83:111::1;::::0;::::1;24170:21:154::0;24227:1;24207:18;;;24200:29;-1:-1:-1;;;24245:18:154;;;24238:38;24293:18;;8078:83:111::1;23986:331:154::0;8078:83:111::1;8179:4;::::0;::::1;;:9:::0;;:62:::1;;-1:-1:-1::0;8193:5:111::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;:47;;8229:1;:11;;;8222:1;:4;;;:18;8193:47;;;8208:1;:11;;;8201:1;:4;;;:18;8193:47;8171:83;;;::::0;-1:-1:-1;;;8171:83:111;;24858:2:154;8171:83:111::1;::::0;::::1;24840:21:154::0;24897:1;24877:18;;;24870:29;-1:-1:-1;;;24915:18:154;;;24908:38;24963:18;;8171:83:111::1;24656:331:154::0;8171:83:111::1;8278:34;8269:5;:43;;;;;;;;:::i;:::-;;;:94;;;;-1:-1:-1::0;8325:38:111::1;8316:5;:47;;;;;;;;:::i;:::-;;;8269:94;8265:2818;;;8419:1;8406;:10;;;:14;:99;;;;-1:-1:-1::0;8458:47:111::1;::::0;-1:-1:-1;;;8458:47:111;;8486:11:::1;::::0;::::1;;8458:47;::::0;::::1;34938:25:154::0;8499:5:111::1;34979:18:154::0;;;34972:50;-1:-1:-1;;;;;8458:27:111;::::1;::::0;::::1;::::0;34911:18:154;;8458:47:111::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8444:1;:10;;;:61;;8406:99;:184;;;;-1:-1:-1::0;8543:47:111::1;::::0;-1:-1:-1;;;8543:47:111;;8571:11:::1;::::0;::::1;;8543:47;::::0;::::1;34938:25:154::0;8584:5:111::1;34979:18:154::0;;;34972:50;-1:-1:-1;;;;;8543:27:111;::::1;::::0;::::1;::::0;34911:18:154;;8543:47:111::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8529:1;:10;;;:61;;8406:184;8381:261;;;::::0;-1:-1:-1;;;8381:261:111;;22057:2:154;8381:261:111::1;::::0;::::1;22039:21:154::0;22096:2;22076:18;;;22069:30;-1:-1:-1;;;22115:18:154;;;22108:48;22173:18;;8381:261:111::1;21855:342:154::0;8381:261:111::1;8657:8;::::0;-1:-1:-1;;;;;8657:8:111::1;:21;8679:13;:11;:13::i;:::-;8702:8;::::0;8657:75:::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;;8657:75:111;;;-1:-1:-1;;;;;15998:15:154;;;8657:75:111::1;::::0;::::1;15980:34:154::0;8702:8:111;::::1;16030:18:154::0;;;16023:43;8713:18:111::1;::::0;::::1;;16082::154::0;;;16075:34;15915:18;;8657:75:111::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;8759:8:111::1;::::0;8746:10:::1;::::0;-1:-1:-1;;;;;;8759:8:111::1;::::0;-1:-1:-1;8759:33:111::1;8793:13;:11;:13::i;:::-;8759:61;::::0;;-1:-1:-1;;;;;;;8759:61:111;;;;;;-1:-1:-1;;;;;16601:32:154;;;;8759:61:111::1;::::0;::::1;16583:51:154::0;8808:11:111::1;::::0;;::::1;;16650:18:154::0;;;16643:34;8759:61:111;;16556:18:154;;;;;8759:61:111;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8835:8;::::0;8881:416:::1;::::0;;::::1;::::0;::::1;::::0;;;8746:74;;-1:-1:-1;;;;;;8835:8:111::1;::::0;:28:::1;::::0;8881:416;8933:13:::1;:11;:13::i;:::-;-1:-1:-1::0;;;;;8881:416:111::1;::::0;;::::1;8968:11:::0;;::::1;;8881:416:::0;;::::1;::::0;;;;;;;9028:18:::1;::::0;;::::1;;8881:416:::0;;;;;9068:5:::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;8881:416;;;;;;9095:1;:10;;;8881:416;;;;9127:1;:4;;;8881:416;;;;9153:1;:4;;;8881:416;;;;9179:1;:11;;;8881:416;;;;9212:10;8881:416;;;;9244:12;8881:416;;;;9278:1;8881:416;;::::0;8835:476:::1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9326:10;-1:-1:-1::0;;;;;9326:21:111::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9326:45:111::1;;9372:13;:11;:13::i;:::-;9387:1;:11;;;9400:5;9407;9326:87;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9449:13;:11;:13::i;:::-;-1:-1:-1::0;;;;;9433:112:111::1;;9464:11;::::0;::::1;;9477:5:::0;9484::::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;9491:1;:11;;;9504:1;9507:5;9514:10;9526:1;:18;;;9433:112;;;;;;;;;;;;;:::i;:::-;;;;;;;;8366:1190;8265:2818;;;9615:1;9602;:10;;;:14;:142;;;;-1:-1:-1::0;;;;;;9654:27:111;::::1;;9682:11;::::0;::::1;;-1:-1:-1::0;9696:5:111;:47:::1;::::0;::::1;;;;;;:::i;:::-;9654:90;::::0;-1:-1:-1;;;;;;9654:90:111::1;::::0;;;;;;::::1;::::0;::::1;34938:25:154::0;;;;9696:47:111::1;34979:18:154::0;;;34972:50;34911:18;;9654:90:111::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9640:1;:10;;;:104;;9602:142;:270;;;;-1:-1:-1::0;;;;;;9782:27:111;::::1;;9810:11;::::0;::::1;;-1:-1:-1::0;9824:5:111;:47:::1;::::0;::::1;;;;;;:::i;:::-;9782:90;::::0;-1:-1:-1;;;;;;9782:90:111::1;::::0;;;;;;::::1;::::0;::::1;34938:25:154::0;;;;9824:47:111::1;34979:18:154::0;;;34972:50;34911:18;;9782:90:111::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9768:1;:10;;;:104;;9602:270;9577:347;;;::::0;-1:-1:-1;;;9577:347:111;;22057:2:154;9577:347:111::1;::::0;::::1;22039:21:154::0;22096:2;22076:18;;;22069:30;-1:-1:-1;;;22115:18:154;;;22108:48;22173:18;;9577:347:111::1;21855:342:154::0;9577:347:111::1;9939:8;::::0;-1:-1:-1;;;;;9939:8:111::1;:21;9961:13;:11;:13::i;:::-;9984:8;::::0;9939:75:::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;;9939:75:111;;;-1:-1:-1;;;;;15998:15:154;;;9939:75:111::1;::::0;::::1;15980:34:154::0;9984:8:111;::::1;16030:18:154::0;;;16023:43;9995:18:111::1;::::0;::::1;;16082::154::0;;;16075:34;15915:18;;9939:75:111::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;10048:34:111::1;::::0;-1:-1:-1;10039:43:111::1;::::0;-1:-1:-1;;10039:43:111;::::1;:5;:43;;;;;;;;:::i;:::-;;:246;;10209:76;::::0;-1:-1:-1;;;10209:76:111;;-1:-1:-1;;;;;10209:19:111;::::1;::::0;::::1;::::0;:76:::1;::::0;10229:11:::1;::::0;::::1;;::::0;10242:42:::1;::::0;10209:76:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10039:246;;;10110:72;::::0;-1:-1:-1;;;10110:72:111;;-1:-1:-1;;;;;10110:19:111;::::1;::::0;::::1;::::0;:72:::1;::::0;10130:11:::1;::::0;::::1;;::::0;10143:38:::1;::::0;10110:72:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10301:8;::::0;10351:560:::1;::::0;;10407:398;;;;;;10029:256;;-1:-1:-1;;;;;;10301:8:111::1;::::0;:32:::1;::::0;10351:560;::::1;::::0;::::1;::::0;10454:13:::1;:11;:13::i;:::-;-1:-1:-1::0;;;;;10407:398:111::1;;;;;10493:1;:11;;;10407:398;;;;10530:1;10407:398;;;;10557:1;10407:398;;;;10584:1;:18;;;10407:398;;;;10628:1;10407:398;;;;10655:1;:5;;;;;;;;;;:::i;:::-;10407:398;;;;;;10686:1;:10;;;10407:398;;;;10722:1;:4;;;10407:398;;;;10752:1;:4;;;10407:398;;;;10782:1;10407:398;;::::0;10351:560:::1;;;;10827:1;10351:560;;;;10850:1;:11;;;10351:560;;;;10883:10;10351:560;;::::0;10929:7:::1;10954:4;10301:671;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11013:13;:11;:13::i;:::-;10992:80;::::0;;11028:11:::1;::::0;;::::1;;35258:25:154::0;;11041:4:111::1;35299:18:154::0;;;35292:50;35358:18;;;35351:34;;;11056:15:111::1;35416:2:154::0;35401:18;;35394:34;10992:80:111;;-1:-1:-1;;;;;10992:80:111;;;::::1;::::0;::::1;::::0;;;;35245:3:154;10992:80:111;;::::1;8265:2818;11117:8;::::0;11109:44:::1;::::0;11094:9:::1;::::0;-1:-1:-1;;;;;11117:8:111::1;::::0;11139:9:::1;::::0;11094;11109:44;11094:9;11109:44;11139:9;11117:8;11109:44:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11093:60;;;11171:4;11163:39;;;::::0;-1:-1:-1;;;11163:39:111;;25542:2:154;11163:39:111::1;::::0;::::1;25524:21:154::0;25581:2;25561:18;;;25554:30;-1:-1:-1;;;25600:18:154;;;25593:52;25662:18;;11163:39:111::1;25340:346:154::0;11163:39:111::1;7361:3848;;;7173:4036:::0;;;;;:::o;11443:1818::-;11609:12;1482:19:25;:17;:19::i;:::-;11677:8:111::1;::::0;:26:::1;::::0;;-1:-1:-1;;;11677:26:111;;;;11633:24:::1;::::0;-1:-1:-1;;;;;11677:8:111::1;::::0;-1:-1:-1;;11677:26:111::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11660:57:111::1;;:59;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11753:8;::::0;11745:44:::1;::::0;11633:86;;-1:-1:-1;11730:9:111::1;::::0;-1:-1:-1;;;;;11753:8:111;;::::1;::::0;11775:9:::1;::::0;11730;11745:44;11730:9;11745:44;11775:9;11753:8;11745:44:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11729:60;;;11807:4;11799:39;;;::::0;-1:-1:-1;;;11799:39:111;;25542:2:154;11799:39:111::1;::::0;::::1;25524:21:154::0;25581:2;25561:18;;;25554:30;-1:-1:-1;;;25600:18:154;;;25593:52;25662:18;;11799:39:111::1;25340:346:154::0;11799:39:111::1;11882:8;::::0;11849:30:::1;::::0;-1:-1:-1;;;;;11882:8:111::1;:19;11902:13;:11;:13::i;:::-;11882:54;::::0;;-1:-1:-1;11882:54:111;;;-1:-1:-1;;;;;;11882:54:111;;;-1:-1:-1;;;;;16908:32:154;;;;11882:54:111::1;::::0;::::1;16890:51:154::0;16957:18;;;16950:34;;;17000:18;;;16993:34;;;11882:54:111;16863:18:154;;;;;11882:54:111::1;::::0;;;;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11971:8;::::0;11849:87;;-1:-1:-1;11946:22:111::1;::::0;-1:-1:-1;;;;;11971:8:111::1;:23;11995:13;:11;:13::i;:::-;11971:58;::::0;;-1:-1:-1;11971:58:111;;;-1:-1:-1;;;;;;11971:58:111;;;-1:-1:-1;;;;;16908:32:154;;;;11971:58:111::1;::::0;::::1;16890:51:154::0;16957:18;;;16950:34;;;17000:18;;;16993:34;;;11971:58:111;16863:18:154;;;;;-1:-1:-1;;11971:58:111;;;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:76;;;11946:101;;12077:1;:17;;;12066:7;:28;;12058:51;;;::::0;-1:-1:-1;;;12058:51:111;;29450:2:154;12058:51:111::1;::::0;::::1;29432:21:154::0;29489:2;29469:18;;;29462:30;-1:-1:-1;;;29508:18:154;;;29501:40;29558:18;;12058:51:111::1;29248:334:154::0;12058:51:111::1;12174:8;::::0;:33:::1;::::0;;-1:-1:-1;;;12174:33:111;;;;-1:-1:-1;;;;;12174:8:111;;::::1;::::0;-1:-1:-1;;12174:33:111::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:33;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12127:8;::::0;-1:-1:-1;;;;;12127:8:111::1;:29;12157:13;:11;:13::i;:::-;12127:44;::::0;;-1:-1:-1;;;;;;;12127:44:111;;;;;;-1:-1:-1;;;;;15696:32:154;;;;12127:44:111::1;::::0;::::1;15678:51:154::0;12127:44:111;15651:18:154;;;;;12127:44:111::1;::::0;;;;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:80;12119:111;;;::::0;-1:-1:-1;;;12119:111:111;;26648:2:154;12119:111:111::1;::::0;::::1;26630:21:154::0;26687:2;26667:18;;;26660:30;-1:-1:-1;;;26706:18:154;;;26699:48;26764:18;;12119:111:111::1;26446:342:154::0;12119:111:111::1;12249:17;12248:18;12240:51;;;::::0;-1:-1:-1;;;12240:51:111;;28424:2:154;12240:51:111::1;::::0;::::1;28406:21:154::0;28463:2;28443:18;;;28436:30;-1:-1:-1;;;28482:18:154;;;28475:50;28542:18;;12240:51:111::1;28222:344:154::0;12240:51:111::1;12322:1;12309;:10;;;:14;12301:35;;;::::0;-1:-1:-1;;;12301:35:111;;21029:2:154;12301:35:111::1;::::0;::::1;21011:21:154::0;21068:1;21048:18;;;21041:29;-1:-1:-1;;;21086:18:154;;;21079:38;21134:18;;12301:35:111::1;20827:331:154::0;12301:35:111::1;12442:10;::::0;::::1;::::0;-1:-1:-1;;;;;12387:30:111;::::1;::::0;::::1;::::0;12418:10;;12430:23:::1;::::0;:7;;:11:::1;:23::i;:::-;12387:67;::::0;-1:-1:-1;;;;;;12387:67:111::1;::::0;;;;;;::::1;::::0;::::1;37445:25:154::0;;;;37486:18;;;37479:34;37418:18;;12387:67:111::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12372:11;::::0;::::1;::::0;12354:29:::1;::::0;:15:::1;:29;:::i;:::-;:100;;12346:124;;;::::0;-1:-1:-1;;;12346:124:111;;29789:2:154;12346:124:111::1;::::0;::::1;29771:21:154::0;29828:2;29808:18;;;29801:30;-1:-1:-1;;;29847:18:154;;;29840:41;29898:18;;12346:124:111::1;29587:335:154::0;12346:124:111::1;12494:8;::::0;:26:::1;::::0;;-1:-1:-1;;;12494:26:111;;;;12481:10:::1;::::0;-1:-1:-1;;;;;12494:8:111::1;::::0;-1:-1:-1;;12494:26:111::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12494:39:111::1;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12494:52:111::1;;12547:13;:11;:13::i;:::-;12494:87;::::0;;-1:-1:-1;12494:87:111;;;-1:-1:-1;;;;;;12494:87:111;;;-1:-1:-1;;;;;16908:32:154;;;;12494:87:111::1;::::0;::::1;16890:51:154::0;16957:18;;;16950:34;;;17000:18;;;16993:34;;;12494:87:111;16863:18:154;;;;;12494:87:111::1;::::0;;;;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12481:100;;12602:5;:228;;12742:8;::::0;:26:::1;::::0;;-1:-1:-1;;;12742:26:111;;;;-1:-1:-1;;;;;12742:8:111;;::::1;::::0;-1:-1:-1;;12742:26:111::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:88;::::0;-1:-1:-1;;;12742:88:111;;-1:-1:-1;;;;;12742:35:111;;;::::1;::::0;::::1;::::0;:88:::1;::::0;12778:10;;-1:-1:-1;;12742:88:111::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12602:228;;;12629:8;::::0;:26:::1;::::0;;-1:-1:-1;;;12629:26:111;;;;-1:-1:-1;;;;;12629:8:111;;::::1;::::0;-1:-1:-1;;12629:26:111::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:92;::::0;-1:-1:-1;;;12629:92:111;;-1:-1:-1;;;;;12629:35:111;;;::::1;::::0;::::1;::::0;:92:::1;::::0;12665:10;;12677:43:::1;::::0;12629:92:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12841:8;::::0;12887:213:::1;::::0;;12939:90;;;;;;12592:238;;-1:-1:-1;;;;;;12841:8:111::1;::::0;:32:::1;::::0;12887:213;::::1;::::0;::::1;::::0;12961:13:::1;:11;:13::i;:::-;-1:-1:-1::0;;;;;12939:90:111::1;;;;;12976:10;12939:90;;;;12988:6;12939:90;;;;12996:7;12939:90;;;;13005:1;12939:90;;;;13008:1;12939:90;;;;13011:5;12939:90;;;;;;13018:1;12939:90;;;;13021:1;12939:90;;;;13024:1;12939:90;;;;13027:1;12939:90;;::::0;12887:213:::1;;;;13047:1;12887:213;;;;13066:1;12887:213;;;;13085:1;12887:213;;::::0;13114:7:::1;13135:5;12841:309;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13195:13;:11;:13::i;:::-;13174:80;::::0;;35258:25:154;;;13222:5:111::1;35314:2:154::0;35299:18;;35292:50;35358:18;;;35351:34;;;13238:15:111::1;35416:2:154::0;35401:18;;35394:34;13174:80:111;;-1:-1:-1;;;;;13174:80:111;;;::::1;::::0;::::1;::::0;;;;35245:3:154;13174:80:111;;::::1;11622:1639;;;;;11443:1818:::0;;;;;:::o;4007:63::-;2847:8;;:14;;;-1:-1:-1;;;2847:14:111;;;;-1:-1:-1;;;;;2847:8:111;;;;-1:-1:-1;;2847:14:111;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2833:28:111;:10;:28;2825:49;;;;-1:-1:-1;;;2825:49:111;;28773:2:154;2825:49:111;;;28755:21:154;28812:1;28792:18;;;28785:29;-1:-1:-1;;;28830:18:154;;;28823:38;28878:18;;2825:49:111;28571:331:154;2825:49:111;4053:10:::1;:8;:10::i;:::-;4007:63::o:0;16624:2689::-;1482:19:25;:17;:19::i;:::-;2951:10:111::1;2940:22;::::0;;;:10:::1;:22;::::0;;;;;::::1;;2932:48;;;::::0;-1:-1:-1;;;2932:48:111;;27331:2:154;2932:48:111::1;::::0;::::1;27313:21:154::0;27370:2;27350:18;;;27343:30;-1:-1:-1;;;27389:18:154;;;27382:43;27442:18;;2932:48:111::1;27129:337:154::0;2932:48:111::1;16916:8:::2;::::0;:26:::2;::::0;;-1:-1:-1;;;16916:26:111;;;;16872:24:::2;::::0;-1:-1:-1;;;;;16916:8:111::2;::::0;-1:-1:-1;;16916:26:111::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;:8;:26;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16899:57:111::2;;:59;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16872:86:::0;-1:-1:-1;16986:31:111::2;16972:10;:45;;;;;;;;:::i;:::-;;16968:1193;;;17050:8;::::0;:55:::2;::::0;-1:-1:-1;;;17050:55:111;;-1:-1:-1;;;;;16908:32:154;;;17050:55:111::2;::::0;::::2;16890:51:154::0;16957:18;;;16950:34;;;17000:18;;;16993:34;;;17050:8:111;;::::2;::::0;:26:::2;::::0;16863:18:154;;17050:55:111::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17042:76;;;::::0;-1:-1:-1;;;17042:76:111;;26995:2:154;17042:76:111::2;::::0;::::2;26977:21:154::0;27034:1;27014:18;;;27007:29;-1:-1:-1;;;27052:18:154;;;27045:38;27100:18;;17042:76:111::2;26793:331:154::0;17042:76:111::2;16968:1193;;;17183:8;::::0;:48:::2;::::0;-1:-1:-1;;;17183:48:111;;-1:-1:-1;;;;;16908:32:154;;;17183:48:111::2;::::0;::::2;16890:51:154::0;16957:18;;;16950:34;;;17000:18;;;16993:34;;;17150:30:111::2;::::0;17183:8:::2;::::0;:19:::2;::::0;16863:18:154;;17183:48:111::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17150:81;;17267:1;17254;:10;;;:14;17246:35;;;::::0;-1:-1:-1;;;17246:35:111;;21029:2:154;17246:35:111::2;::::0;::::2;21011:21:154::0;21068:1;21048:18;;;21041:29;-1:-1:-1;;;21086:18:154;;;21079:38;21134:18;;17246:35:111::2;20827:331:154::0;17246:35:111::2;17317:29;17303:10;:43;;;;;;;;:::i;:::-;;;:55;;;;17357:1;17350;:4;;;:8;17303:55;17295:73;;;::::0;-1:-1:-1;;;17295:73:111;;26315:2:154;17295:73:111::2;::::0;::::2;26297:21:154::0;26354:1;26334:18;;;26327:29;-1:-1:-1;;;26372:18:154;;;26365:35;26417:18;;17295:73:111::2;26113:328:154::0;17295:73:111::2;17401:30;17387:10;:44;;;;;;;;:::i;:::-;;17383:768;;;17468:9;::::0;17540:8;;17586:11:::2;::::0;::::2;::::0;17635:7:::2;::::0;;::::2;::::0;17680:11:::2;::::0;::::2;::::0;17729:5:::2;::::0;::::2;::::0;17772:17:::2;::::0;::::2;::::0;17827:10:::2;::::0;::::2;::::0;17468:403;;-1:-1:-1;;;17468:403:111;;-1:-1:-1;;;;;18857:32:154;;;17468:403:111::2;::::0;::::2;18839:51:154::0;18906:18;;;18899:34;;;;18949:18;;;18942:34;;;;18992:18;;;18985:34;;;;19063:14;19056:22;19035:19;;;19028:51;19095:19;;;19088:35;19139:19;;;19132:35;17451:13:111::2;::::0;17468:9;;;::::2;::::0;:34:::2;::::0;18811:19:154;;17468:403:111::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17451:420;;17897:1;:4;;;17905:1;17897:9;:56;;;;17911:1;:5;;;:41;;17948:1;:4;;;17937:8;:15;17911:41;;;17930:1;:4;;;17919:8;:15;17911:41;17889:75;;;::::0;-1:-1:-1;;;17889:75:111;;24524:2:154;17889:75:111::2;::::0;::::2;24506:21:154::0;24563:1;24543:18;;;24536:29;-1:-1:-1;;;24581:18:154;;;24574:36;24627:18;;17889:75:111::2;24322:329:154::0;17889:75:111::2;17433:546;17383:768;;;18073:11;::::0;::::2;::::0;18108:10:::2;::::0;::::2;::::0;18086:17:::2;::::0;::::2;::::0;-1:-1:-1;;;;;18042:30:111;::::2;::::0;::::2;::::0;18073:11;;18086:33:::2;::::0;:21:::2;:33::i;:::-;18042:78;::::0;-1:-1:-1;;;;;;18042:78:111::2;::::0;;;;;;::::2;::::0;::::2;37445:25:154::0;;;;37486:18;;;37479:34;37418:18;;18042:78:111::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18027:11;::::0;::::2;::::0;18009:29:::2;::::0;:15:::2;:29;:::i;:::-;:111;;18001:135;;;::::0;-1:-1:-1;;;18001:135:111;;29789:2:154;18001:135:111::2;::::0;::::2;29771:21:154::0;29828:2;29808:18;;;29801:30;-1:-1:-1;;;29847:18:154;;;29840:41;29898:18;;18001:135:111::2;29587:335:154::0;18001:135:111::2;17136:1025;16968:1193;18201:8;::::0;:26:::2;::::0;;-1:-1:-1;;;18201:26:111;;;;18171:27:::2;::::0;-1:-1:-1;;;;;18201:8:111::2;::::0;-1:-1:-1;;18201:26:111::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;:8;:26;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18171:56;;18237:17;18257:10;-1:-1:-1::0;;;;;18257:21:111::2;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18237:43;;18291:49;18343:124;;;;;;;;18382:7;-1:-1:-1::0;;;;;18343:124:111::2;;;;;18403:10;18343:124;;;;18427:6;18343:124;;;;18447:10;18343:124;;;;;;;;:::i;:::-;::::0;;18491:8:::2;::::0;:26:::2;::::0;;-1:-1:-1;;;18491:26:111;;;;18291:176;;-1:-1:-1;18478:10:111::2;::::0;-1:-1:-1;;;;;18491:8:111;;::::2;::::0;-1:-1:-1;;18491:26:111::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;;:8;:26;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18491:39:111::2;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:81;::::0;-1:-1:-1;;;18491:81:111;;-1:-1:-1;;;;;16908:32:154;;;18491:81:111::2;::::0;::::2;16890:51:154::0;16957:18;;;16950:34;;;17000:18;;;16993:34;;;18491:52:111;;;::::2;::::0;::::2;::::0;16863:18:154;;18491:81:111::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18478:94:::0;-1:-1:-1;18583:12:111::2;-1:-1:-1::0;;;;;18598:19:111;::::2;;18631:10:::0;18669:31:::2;18655:10:::0;:45;;::::2;;;;;;:::i;:::-;;:254;;18775:5;:134;;18871:38;18655:254;;18775:134;18804:42;18655:254;;;18719:37;18655:254;18598:321;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18930:8;::::0;18975:74:::2;::::0;;::::2;::::0;::::2;::::0;;-1:-1:-1;;;;;18975:74:111;;::::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;;18583:336;;-1:-1:-1;18930:8:111::2;::::0;:31:::2;::::0;18975:74;;;19038:10;18975:74:::2;::::0;::::2;;;;;;:::i;:::-;;;::::0;19063:7:::2;18930:150;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;;;;;;;19091:28:111;::::2;::::0;-1:-1:-1;19091:28:111::2;19120:16:::0;19138:13:::2;:11;:13::i;:::-;19091:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;19167:66:111::2;::::0;;39214:25:154;;;39270:2;39255:18;;39248:34;;;19217:15:111::2;39298:18:154::0;;;39291:34;19167:66:111;;-1:-1:-1;;;;;19167:66:111;::::2;::::0;-1:-1:-1;19167:66:111::2;::::0;-1:-1:-1;19167:66:111;;;;39202:2:154;19167:66:111;;::::2;19244:62;::::0;-1:-1:-1;;;19244:62:111;;-1:-1:-1;;;;;19244:18:111;::::2;::::0;-1:-1:-1;;19270:9:111::2;::::0;19244:62:::2;::::0;19281:7;;19290:15;;;;19244:62:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;16861:2452;;;;;;16624:2689:::0;;;;;;:::o;3245:238::-;3279:19:24;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:24;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:24;1713:19:37;:23;;;3387:66:24;;-1:-1:-1;3436:12:24;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:24;;23773:2:154;3325:201:24;;;23755:21:154;23812:2;23792:18;;;23785:30;23851:34;23831:18;;;23824:62;-1:-1:-1;;;23902:18:154;;;23895:44;23956:19;;3325:201:24;23571:410:154;3325:201:24;3536:12;:16;;-1:-1:-1;;3536:16:24;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:24;;;;;3562:65;3335:8:111::1;:37:::0;;-1:-1:-1;;;;;3335:37:111;;::::1;-1:-1:-1::0;;;;;;3335:37:111;;::::1;;::::0;;;3382:9:::1;:34:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;3448:1:::1;3426:19;:23:::0;3459:17:::1;:15;:17::i;:::-;3651:14:24::0;3647:99;;;3697:5;3681:21;;-1:-1:-1;;3681:21:24;;;3721:14;;-1:-1:-1;20207:36:154;;3721:14:24;;20195:2:154;20180:18;3721:14:24;;;;;;;3647:99;3269:483;3245:238:111;;:::o;4076:183::-;2847:8;;:14;;;-1:-1:-1;;;2847:14:111;;;;-1:-1:-1;;;;;2847:8:111;;;;-1:-1:-1;;2847:14:111;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2833:28:111;:10;:28;2825:49;;;;-1:-1:-1;;;2825:49:111;;28773:2:154;2825:49:111;;;28755:21:154;28812:1;28792:18;;;28785:29;-1:-1:-1;;;28830:18:154;;;28823:38;28878:18;;2825:49:111;28571:331:154;2825:49:111;-1:-1:-1;;;;;4163:21:111;::::1;;::::0;;;:10:::1;:21;::::0;;;;;;;;:35;;-1:-1:-1;;4163:35:111::1;::::0;::::1;;::::0;;::::1;::::0;;;4213:39;;16288:51:154;;;16355:18;;;16348:50;4213:39:111;;::::1;::::0;;;;;;;;::::1;4076:183:::0;;:::o;3889:59::-;2847:8;;:14;;;-1:-1:-1;;;2847:14:111;;;;-1:-1:-1;;;;;2847:8:111;;;;-1:-1:-1;;2847:14:111;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2833:28:111;:10;:28;2825:49;;;;-1:-1:-1;;;2825:49:111;;28773:2:154;2825:49:111;;;28755:21:154;28812:1;28792:18;;;28785:29;-1:-1:-1;;;28830:18:154;;;28823:38;28878:18;;2825:49:111;28571:331:154;2825:49:111;3933:8:::1;:6;:8::i;607:695:103:-:0;-1:-1:-1;;;;;732:19:103;;;;;;;:11;:19;;;;;;700:12;;732:19;755:10;732:33;724:67;;;;-1:-1:-1;;;724:67:103;;21365:2:154;724:67:103;;;21347:21:154;21404:2;21384:18;;;21377:30;-1:-1:-1;;;21423:18:154;;;21416:51;21484:18;;724:67:103;21163:345:154;724:67:103;802:14;:23;;-1:-1:-1;;;;;;802:23:103;-1:-1:-1;;;;;802:23:103;;;;;873:37;;-1:-1:-1;;;;881:4:103;;873:37;;900:9;;;;873:37;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;835:75;;;;925:7;920:314;;1080:2;1064:6;:13;:18;1060:32;;;1084:8;;;1060:32;1155:4;1147:6;1143:17;1133:27;;1205:6;1194:28;;;;;;;;;;;;:::i;:::-;1187:36;;-1:-1:-1;;;1187:36:103;;;;;;;;:::i;920:314::-;1244:14;:27;;-1:-1:-1;;;;;;1244:27:103;;;1289:6;;-1:-1:-1;;;;;607:695:103:o;4265:164:111:-;2847:8;;:14;;;-1:-1:-1;;;2847:14:111;;;;-1:-1:-1;;;;;2847:8:111;;;;-1:-1:-1;;2847:14:111;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2833:28:111;:10;:28;2825:49;;;;-1:-1:-1;;;2825:49:111;;28773:2:154;2825:49:111;;;28755:21:154;28812:1;28792:18;;;28785:29;-1:-1:-1;;;28830:18:154;;;28823:38;28878:18;;2825:49:111;28571:331:154;2825:49:111;-1:-1:-1;;;;;4352:23:111;::::1;4344:48;;;::::0;-1:-1:-1;;;4344:48:111;;23432:2:154;4344:48:111::1;::::0;::::1;23414:21:154::0;23471:2;23451:18;;;23444:30;-1:-1:-1;;;23490:18:154;;;23483:42;23542:18;;4344:48:111::1;23230:336:154::0;4344:48:111::1;4402:8;:20:::0;;-1:-1:-1;;;;;;4402:20:111::1;-1:-1:-1::0;;;;;4402:20:111;;;::::1;::::0;;;::::1;::::0;;4265:164::o;15003:563::-;1482:19:25;:17;:19::i;:::-;15138:8:111::1;::::0;15096:39:::1;::::0;-1:-1:-1;;;;;15138:8:111::1;:26;15165:13;:11;:13::i;:::-;15138:61;::::0;;-1:-1:-1;15138:61:111;;;-1:-1:-1;;;;;;15138:61:111;;;-1:-1:-1;;;;;16908:32:154;;;;15138:61:111::1;::::0;::::1;16890:51:154::0;16957:18;;;16950:34;;;17000:18;;;16993:34;;;15138:61:111;16863:18:154;;;;;15138:61:111::1;::::0;;;;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15096:103;;15243:19;;15232:1;:7;;;15217:12;:22;;;;:::i;:::-;:45;;15209:72;;;::::0;-1:-1:-1;;;15209:72:111;;22404:2:154;15209:72:111::1;::::0;::::1;22386:21:154::0;22443:2;22423:18;;;22416:30;-1:-1:-1;;;22462:18:154;;;22455:44;22516:18;;15209:72:111::1;22202:338:154::0;15209:72:111::1;15292:8;::::0;-1:-1:-1;;;;;15292:8:111::1;:21;:8:::0;15333:13:::1;:11;:13::i;:::-;15365:1;:14;;;15348:1;:14;;;:31;;;;:::i;:::-;15292:88;::::0;;-1:-1:-1;;;;;;;15292:88:111;;;;;;-1:-1:-1;;;;;15998:15:154;;;15292:88:111::1;::::0;::::1;15980:34:154::0;16050:15;;;;16030:18;;;16023:43;16082:18;;;16075:34;15292:88:111;;15915:18:154;;;;;-1:-1:-1;;15292:88:111;;;;;;;-1:-1:-1;15292:88:111;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;15390:8:111::1;::::0;-1:-1:-1;;;;;15390:8:111::1;::::0;-1:-1:-1;15390:33:111::1;::::0;-1:-1:-1;15424:13:111::1;:11;:13::i;:::-;15390:68;::::0;;-1:-1:-1;15390:68:111;;;-1:-1:-1;;;;;;15390:68:111;;;-1:-1:-1;;;;;16908:32:154;;;;15390:68:111::1;::::0;::::1;16890:51:154::0;16957:18;;;16950:34;;;17000:18;;;16993:34;;;15390:68:111;16863:18:154;;;;;-1:-1:-1;;15390:68:111;;;;;;;-1:-1:-1;15390:68:111;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15492:13;:11;:13::i;:::-;15544:14;::::0;;::::1;::::0;15474:85:::1;::::0;;39567:25:154;;;39623:2;39608:18;;39601:34;;;15527:15:111::1;39651:18:154::0;;;39644:34;39694:18;;;39687:34;;;;15474:85:111;-1:-1:-1;;;;;15474:85:111;;;::::1;::::0;::::1;::::0;;;;39554:3:154;15474:85:111;;::::1;15086:480;15003:563:::0;;:::o;13456:287::-;2951:10;2940:22;;;;:10;:22;;;;;;;;2932:48;;;;-1:-1:-1;;;2932:48:111;;27331:2:154;2932:48:111;;;27313:21:154;27370:2;27350:18;;;27343:30;-1:-1:-1;;;27389:18:154;;;27382:43;27442:18;;2932:48:111;27129:337:154;2932:48:111;13596:6:::1;13592:145;13608:17:::0;;::::1;13592:145;;;13645:8;::::0;:26:::1;::::0;;-1:-1:-1;;;13645:26:111;;;;-1:-1:-1;;;;;13645:8:111;;::::1;::::0;-1:-1:-1;;13645:26:111::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13645:34:111::1;;13687:9;13698:7:::0;;13706:1;13698:10;;::::1;;;;;:::i;:::-;;;;;;;13710:15;;13645:81;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;13627:3;;;;;:::i;:::-;;;;13592:145;;;;13456:287:::0;;;;:::o;19409:132::-;2951:10;2940:22;;;;:10;:22;;;;;;;;2932:48;;;;-1:-1:-1;;;2932:48:111;;27331:2:154;2932:48:111;;;27313:21:154;27370:2;27350:18;;;27343:30;-1:-1:-1;;;27389:18:154;;;27382:43;27442:18;;2932:48:111;27129:337:154;2932:48:111;19487:8:::1;::::0;:47:::1;::::0;-1:-1:-1;;;19487:47:111;;::::1;::::0;::::1;33468:25:154::0;;;-1:-1:-1;;;;;19487:8:111;;::::1;::::0;:42:::1;::::0;33441:18:154;;19487:47:111::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;14042:797:::0;1482:19:25;:17;:19::i;:::-;14282:8:111::1;::::0;14240:39:::1;::::0;-1:-1:-1;;;;;14282:8:111::1;:26;14309:13;:11;:13::i;:::-;14282:61;::::0;;-1:-1:-1;14282:61:111;;;-1:-1:-1;;;;;;14282:61:111;;;-1:-1:-1;;;;;16908:32:154;;;;14282:61:111::1;::::0;::::1;16890:51:154::0;16957:18;;;16950:34;;;17000:18;;;16993:34;;;14282:61:111;16863:18:154;;;;;14282:61:111::1;::::0;;;;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14240:103;;14387:19;;14376:1;:7;;;14361:12;:22;;;;:::i;:::-;:45;;14353:72;;;::::0;-1:-1:-1;;;14353:72:111;;22404:2:154;14353:72:111::1;::::0;::::1;22386:21:154::0;22443:2;22423:18;;;22416:30;-1:-1:-1;;;22462:18:154;;;22455:44;22516:18;;14353:72:111::1;22202:338:154::0;14353:72:111::1;14444:8:::0;;;:49:::1;;;14457:1;:5;;;:35;;14489:3;14480:6;:12;14457:35;;;14474:3;14465:6;:12;14457:35;14436:70;;;::::0;-1:-1:-1;;;14436:70:111;;24188:2:154;14436:70:111::1;::::0;::::1;24170:21:154::0;24227:1;24207:18;;;24200:29;-1:-1:-1;;;24245:18:154;;;24238:38;24293:18;;14436:70:111::1;23986:331:154::0;14436:70:111::1;14524:8:::0;;;:49:::1;;;14537:1;:5;;;:35;;14569:3;14560:6;:12;14537:35;;;14554:3;14545:6;:12;14537:35;14516:70;;;::::0;-1:-1:-1;;;14516:70:111;;24858:2:154;14516:70:111::1;::::0;::::1;24840:21:154::0;24897:1;24877:18;;;24870:29;-1:-1:-1;;;24915:18:154;;;24908:38;24963:18;;14516:70:111::1;24656:331:154::0;14516:70:111::1;14597:7;::::0;::::1;:16:::0;;;14623:11:::1;::::0;::::1;:24:::0;;;14657:4:::1;::::0;::::1;:10:::0;;;14677:4:::1;::::0;::::1;:10:::0;;;14698:8:::1;::::0;-1:-1:-1;14698:32:111;-1:-1:-1;;;14698:32:111;;-1:-1:-1;;;;;14698:8:111;;::::1;::::0;:29:::1;::::0;:32:::1;::::0;14597:7;;14698:32:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14763:13;:11;:13::i;:::-;14746:86;::::0;;40487:25:154;;;40543:2;40528:18;;40521:34;;;40571:18;;;40564:34;;;40629:2;40614:18;;40607:34;;;40672:3;40657:19;;40650:35;;;14816:15:111::1;40716:3:154::0;40701:19;;40694:35;14746:86:111;;-1:-1:-1;;;;;14746:86:111;;;::::1;::::0;::::1;::::0;;;;40474:3:154;14746:86:111;;::::1;14230:609;14042:797:::0;;;;;;:::o;4775:2182::-;4994:12;1482:19:25;:17;:19::i;:::-;5047:8:111::1;::::0;:26:::1;::::0;;-1:-1:-1;;;5047:26:111;;;;5017:27:::1;::::0;-1:-1:-1;;;;;5047:8:111::1;::::0;-1:-1:-1;;5047:26:111::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5117:8;::::0;5017:56;;-1:-1:-1;5084:30:111::1;::::0;-1:-1:-1;;;;;5117:8:111::1;:19;5137:13;:11;:13::i;:::-;5117:54;::::0;;-1:-1:-1;5117:54:111;;;-1:-1:-1;;;;;;5117:54:111;;;-1:-1:-1;;;;;16908:32:154;;;;5117:54:111::1;::::0;::::1;16890:51:154::0;16957:18;;;16950:34;;;17000:18;;;16993:34;;;5117:54:111;16863:18:154;;;;;5117:54:111::1;::::0;;;;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5218:8;::::0;5084:87;;-1:-1:-1;5181:34:111::1;::::0;-1:-1:-1;;;;;5218:8:111::1;:23;5242:13;:11;:13::i;:::-;5218:58;::::0;;-1:-1:-1;5218:58:111;;;-1:-1:-1;;;;;;5218:58:111;;;-1:-1:-1;;;;;16908:32:154;;;;5218:58:111::1;::::0;::::1;16890:51:154::0;16957:18;;;16950:34;;;17000:18;;;16993:34;;;5218:58:111;16863:18:154;;;;;-1:-1:-1;;5218:58:111;;;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5181:95;;5296:1;:19;;;5295:20;5287:53;;;::::0;-1:-1:-1;;;5287:53:111;;28424:2:154;5287:53:111::1;::::0;::::1;28406:21:154::0;28463:2;28443:18;;;28436:30;-1:-1:-1;;;28482:18:154;;;28475:50;28542:18;;5287:53:111::1;28222:344:154::0;5287:53:111::1;5371:1;5358;:10;;;:14;5350:35;;;::::0;-1:-1:-1;;;5350:35:111;;21029:2:154;5350:35:111::1;::::0;::::1;21011:21:154::0;21068:1;21048:18;;;21041:29;-1:-1:-1;;;21086:18:154;;;21079:38;21134:18;;5350:35:111::1;20827:331:154::0;5350:35:111::1;5414:9;::::0;5457:8;;5479:11:::1;::::0;::::1;::::0;5504:7:::1;::::0;;::::1;::::0;5525:5:::1;::::0;::::1;::::0;5544:17:::1;::::0;::::1;::::0;5575:10:::1;::::0;::::1;::::0;5414:181;;-1:-1:-1;;;5414:181:111;;-1:-1:-1;;;;;17337:32:154;;;5414:181:111::1;::::0;::::1;17319:51:154::0;17386:18;;;17379:34;;;;17429:18;;;17422:34;;;;17499:14;17492:22;17472:18;;;17465:50;17531:19;;;17524:35;17575:19;;;17568:35;5396:15:111::1;::::0;5414:9;;;::::1;::::0;:29:::1;::::0;17291:19:154;;5414:181:111::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5616:73;::::0;-1:-1:-1;;;5616:73:111;;5396:199;;-1:-1:-1;;;;;;5616:19:111;::::1;::::0;::::1;::::0;:73:::1;::::0;5636:10;;5648:40:::1;::::0;5616:73;::::1;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5606:83;;5699:10;-1:-1:-1::0;;;;;5699:40:111::1;;5753:7;5774:129;;;;;;;;5811:13;:11;:13::i;:::-;-1:-1:-1::0;;;;;5774:129:111::1;;;;;5826:10;5774:129;;;;5838:6;5774:129;;;;5846:5;5774:129;;;;;;;;:::i;:::-;;;;;5853:7;5774:129;;;;5862:1;:16;;;5774:129;;;;5880:10;5774:129;;;;5892:1;:10;;;5774:129;;::::0;5699:214:::1;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5958:158;5993:1;:18;;;6025:1;:17;;;6056:5;6075:7;6096:10;5958:21;:158::i;:::-;5937:17;::::0;::::1;5924:192:::0;5925:10:::1;::::0;::::1;5924:192:::0;6140:8:::1;::::0;:26:::1;::::0;;-1:-1:-1;;;6140:26:111;;;;-1:-1:-1;;;;;;;6140:8:111::1;::::0;-1:-1:-1;;6140:26:111::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6140:39:111::1;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6140:52:111::1;;6193:13;:11;:13::i;:::-;6140:87;::::0;-1:-1:-1;;;;;;6140:87:111::1;::::0;;;;;;-1:-1:-1;;;;;16908:32:154;;;6140:87:111::1;::::0;::::1;16890:51:154::0;16957:18;;;16950:34;;;17000:18;;;16993:34;;;16863:18;;6140:87:111::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6127:100;;6241:5;:55;;;;-1:-1:-1::0;6260:35:111::1;6251:5;:44;;;;;;;;:::i;:::-;;6241:55;6238:81;;;6298:21;::::0;-1:-1:-1;;;6298:21:111;;23092:2:154;6298:21:111::1;::::0;::::1;23074::154::0;23131:2;23111:18;;;23104:30;-1:-1:-1;;;23150:18:154;;;23143:41;23201:18;;6298:21:111::1;22890:335:154::0;6238:81:111::1;6363:1;6350;:10;;;:14;:109;;;;;6398:10;-1:-1:-1::0;;;;;6398:23:111::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6440:11;::::0;::::1;::::0;6398:61:::1;::::0;-1:-1:-1;;;6398:61:111;;::::1;::::0;::::1;34938:25:154::0;;;;35006:14;;34999:22;34979:18;;;34972:50;-1:-1:-1;;;;;6398:41:111;;;::::1;::::0;::::1;::::0;34911:18:154;;6398:61:111::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6384:1;:10;;;:75;;6350:109;:204;;;;;6493:10;-1:-1:-1::0;;;;;6493:23:111::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6535:11;::::0;::::1;::::0;6493:61:::1;::::0;-1:-1:-1;;;6493:61:111;;::::1;::::0;::::1;34938:25:154::0;;;;35006:14;;34999:22;34979:18;;;34972:50;-1:-1:-1;;;;;6493:41:111;;;::::1;::::0;::::1;::::0;34911:18:154;;6493:61:111::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6479:1;:10;;;:75;;6350:204;6329:269;;;::::0;-1:-1:-1;;;6329:269:111;;22057:2:154;6329:269:111::1;::::0;::::1;22039:21:154::0;22096:2;22076:18;;;22069:30;-1:-1:-1;;;22115:18:154;;;22108:48;22173:18;;6329:269:111::1;21855:342:154::0;6329:269:111::1;6641:13;:11;:13::i;:::-;-1:-1:-1::0;;;;;6614:218:111::1;;6669:10;6694:6;6715:5;6735:1;6751:10;6776:1;:16;;;6807:15;6614:218;;;;;;;;;;;;:::i;:::-;;;;;;;;6855:8;::::0;:23:::1;::::0;-1:-1:-1;;;6855:23:111;;-1:-1:-1;;;;;6855:8:111;;::::1;::::0;-1:-1:-1;;6855:23:111::1;::::0;6876:1;;6855:23:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6888:62:111::1;::::0;-1:-1:-1;;;6888:62:111;;-1:-1:-1;;;;;6888:18:111;::::1;::::0;-1:-1:-1;;;;6914:9:111::1;::::0;6888:62:::1;::::0;6925:7;;6934:15;;;;6888:62:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;5007:1950;;;;;4775:2182:::0;;;;;;;;:::o;1308:197:103:-;1375:14;;1352:7;;-1:-1:-1;;;;;1375:14:103;1371:128;;-1:-1:-1;1426:10:103;;1308:197::o;1371:128::-;-1:-1:-1;1474:14:103;;-1:-1:-1;;;;;1474:14:103;;1308:197::o;3622:210:111:-;2847:8;;:14;;;-1:-1:-1;;;2847:14:111;;;;-1:-1:-1;;;;;2847:8:111;;;;-1:-1:-1;;2847:14:111;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2833:28:111;:10;:28;2825:49;;;;-1:-1:-1;;;2825:49:111;;28773:2:154;2825:49:111;;;28755:21:154;28812:1;28792:18;;;28785:29;-1:-1:-1;;;28830:18:154;;;28823:38;28878:18;;2825:49:111;28571:331:154;2825:49:111;3713:1:::1;3703:7;:11;3695:31;;;::::0;-1:-1:-1;;;3695:31:111;;30470:2:154;3695:31:111::1;::::0;::::1;30452:21:154::0;30509:1;30489:18;;;30482:29;-1:-1:-1;;;30527:18:154;;;30520:37;30574:18;;3695:31:111::1;30268:330:154::0;3695:31:111::1;3736:19;:29:::0;;;3780:45:::1;::::0;;25903:21:154;;;25960:2;25940:18;;;25933:30;-1:-1:-1;;;25994:2:154;25979:18;;25972:49;26088:4;26073:20;;26066:36;;;3780:45:111;;::::1;::::0;;;;26053:3:154;3780:45:111;;::::1;3622:210:::0;:::o;2010:106:25:-;1928:7;;;;2079:9;2071:38;;;;-1:-1:-1;;;2071:38:25;;22747:2:154;2071:38:25;;;22729:21:154;22786:2;22766:18;;;22759:30;-1:-1:-1;;;22805:18:154;;;22798:46;22861:18;;2071:38:25;22545:340:154;19775:624:111;19872:8;;19856:13;;-1:-1:-1;;;;;19872:8:111;:19;19892:13;:11;:13::i;:::-;19872:54;;;-1:-1:-1;19872:54:111;;;-1:-1:-1;;;;;;19872:54:111;;;-1:-1:-1;;;;;16908:32:154;;;;19872:54:111;;;16890:51:154;16957:18;;;16950:34;;;17000:18;;;16993:34;;;19872:54:111;16863:18:154;;;;;19872:54:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:63;;;19966:8;;19872:63;;-1:-1:-1;19945:18:111;;-1:-1:-1;;;;;19966:8:111;:23;19990:13;:11;:13::i;:::-;19966:58;;;-1:-1:-1;19966:58:111;;;-1:-1:-1;;;;;;19966:58:111;;;-1:-1:-1;;;;;16908:32:154;;;;19966:58:111;;;16890:51:154;16957:18;;;16950:34;;;17000:18;;;16993:34;;;19966:58:111;16863:18:154;;;;;-1:-1:-1;;19966:58:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:72;;;19945:93;;20068:1;20057:8;:12;20049:33;;;;-1:-1:-1;;;20049:33:111;;21029:2:154;20049:33:111;;;21011:21:154;21068:1;21048:18;;;21041:29;-1:-1:-1;;;21086:18:154;;;21079:38;21134:18;;20049:33:111;20827:331:154;20049:33:111;20132:19;;20100:28;20115:13;20100:12;:28;:::i;:::-;:51;;20092:78;;;;-1:-1:-1;;;20092:78:111;;22404:2:154;20092:78:111;;;22386:21:154;22443:2;22423:18;;;22416:30;-1:-1:-1;;;22462:18:154;;;22455:44;22516:18;;20092:78:111;22202:338:154;20092:78:111;-1:-1:-1;;;;;20188:31:111;;20180:56;;;;-1:-1:-1;;;20180:56:111;;30129:2:154;20180:56:111;;;30111:21:154;30168:2;30148:18;;;30141:30;-1:-1:-1;;;30187:18:154;;;30180:42;30239:18;;20180:56:111;29927:336:154;20180:56:111;20247:8;;-1:-1:-1;;;;;20247:8:111;:17;20265:13;:11;:13::i;:::-;20247:60;;;-1:-1:-1;;;;;;;20247:60:111;;;;;;-1:-1:-1;;;;;18357:32:154;;;;20247:60:111;;;18339:51:154;18406:18;;;18399:34;;;18449:18;;;18442:34;;;18492:18;;;18485:34;;;20247:60:111;18311:19:154;;;;;-1:-1:-1;;20247:60:111;;;;;;;-1:-1:-1;20247:60:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20333:13;:11;:13::i;:::-;20323:69;;;39567:25:154;;;39623:2;39608:18;;39601:34;;;39651:18;;;39644:34;;;20376:15:111;39709:2:154;39694:18;;39687:34;20323:69:111;;-1:-1:-1;;;;;20323:69:111;;;;;;;;;;39554:3:154;20323:69:111;;;19846:553;;19775:624;;;:::o;20672:1581::-;20820:8;;20787:30;;-1:-1:-1;;;;;20820:8:111;:19;20840:13;:11;:13::i;:::-;20820:54;;;-1:-1:-1;20820:54:111;;;-1:-1:-1;;;;;;20820:54:111;;;-1:-1:-1;;;;;16908:32:154;;;;20820:54:111;;;16890:51:154;16957:18;;;16950:34;;;17000:18;;;16993:34;;;20820:54:111;16863:18:154;;;;;20820:54:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20905:8;;20787:87;;-1:-1:-1;20884:18:111;;-1:-1:-1;;;;;20905:8:111;:23;20929:13;:11;:13::i;:::-;20905:58;;;-1:-1:-1;20905:58:111;;;-1:-1:-1;;;;;;20905:58:111;;;-1:-1:-1;;;;;16908:32:154;;;;20905:58:111;;;16890:51:154;16957:18;;;16950:34;;;17000:18;;;16993:34;;;20905:58:111;16863:18:154;;;;;-1:-1:-1;;20905:58:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:72;;;20884:93;;21009:1;20996;:10;;;:14;20988:35;;;;-1:-1:-1;;;20988:35:111;;21029:2:154;20988:35:111;;;21011:21:154;21068:1;21048:18;;;21041:29;-1:-1:-1;;;21086:18:154;;;21079:38;21134:18;;20988:35:111;20827:331:154;20988:35:111;-1:-1:-1;;;;;21041:31:111;;21033:56;;;;-1:-1:-1;;;21033:56:111;;29109:2:154;21033:56:111;;;29091:21:154;29148:2;29128:18;;;29121:30;-1:-1:-1;;;29167:18:154;;;29160:42;29219:18;;21033:56:111;28907:336:154;21033:56:111;21100:14;21117:49;21155:1;:10;;;21146:3;548:2;21119:1;:11;;;:23;;;;:::i;:::-;21118:31;;;;:::i;:::-;21117:37;;:49::i;:::-;21100:66;-1:-1:-1;21197:11:111;;;:94;;;21213:1;:5;;;:77;;21281:9;21267:1;:11;;;:23;;;;:::i;:::-;21257:6;:33;;21213:77;;;21245:9;21231:1;:11;;;:23;;;;:::i;:::-;21221:6;:33;;21213:77;21176:151;;;;-1:-1:-1;;;21176:151:111;;28085:2:154;21176:151:111;;;28067:21:154;28124:2;28104:18;;;28097:30;-1:-1:-1;;;28143:18:154;;;28136:40;28193:18;;21176:151:111;27883:334:154;21176:151:111;21378:19;;21346:28;21361:13;21346:12;:28;:::i;:::-;:51;;21338:78;;;;-1:-1:-1;;;21338:78:111;;22404:2:154;21338:78:111;;;22386:21:154;22443:2;22423:18;;;22416:30;-1:-1:-1;;;22462:18:154;;;22455:44;22516:18;;21338:78:111;22202:338:154;21338:78:111;21457:8;;:26;;;-1:-1:-1;;;21457:26:111;;;;21427:27;;-1:-1:-1;;;;;21457:8:111;;-1:-1:-1;;21457:26:111;;;;;;;;;;;;;;:8;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21427:56;-1:-1:-1;21498:11:111;;;:73;;;21514:10;-1:-1:-1;;;;;21514:23:111;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:57;;-1:-1:-1;;;21514:57:111;;;;;33468:25:154;;;-1:-1:-1;;;;;21514:45:111;;;;;;;33441:18:154;;21514:57:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21513:58;21498:73;21494:753;;;21587:8;;-1:-1:-1;;;;;21587:8:111;:17;21605:13;:11;:13::i;:::-;21587:60;;;-1:-1:-1;;;;;;;21587:60:111;;;;;;-1:-1:-1;;;;;18357:32:154;;;;21587:60:111;;;18339:51:154;18406:18;;;18399:34;;;18449:18;;;18442:34;;;18492:18;;;18485:34;;;21587:60:111;18311:19:154;;;;;-1:-1:-1;;21587:60:111;;;;;;;-1:-1:-1;21587:60:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21676:13;:11;:13::i;:::-;21666:69;;;39567:25:154;;;39623:2;39608:18;;39601:34;;;39651:18;;;39644:34;;;21719:15:111;39709:2:154;39694:18;;39687:34;21666:69:111;;-1:-1:-1;;;;;21666:69:111;;;;;;;;;;39554:3:154;21666:69:111;;;21494:753;;;21794:69;;-1:-1:-1;;;21794:69:111;;21779:12;;-1:-1:-1;;;;;21794:19:111;;;;;:69;;21814:10;;21826:36;;21794:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21779:84;;21877:10;-1:-1:-1;;;;;21877:30:111;;21925:7;21950:89;;;;;;;;21977:13;:11;:13::i;:::-;-1:-1:-1;;;;;21950:89:111;;;;;21992:10;21950:89;;;;22004:6;21950:89;;;;22012:1;:11;;;21950:89;;;;22025:1;:5;;;21950:89;;;;;;22032:6;21950:89;;;21877:176;;;;;;;;;;;;;;;36788:4:154;36830:3;36819:9;36815:19;36807:27;;36861:6;36850:9;36843:25;36940:1;36936;36931:3;36927:11;36923:19;36914:6;36908:13;36904:39;36899:2;36888:9;36884:18;36877:67;36998:2;36990:6;36986:15;36980:22;36975:2;36964:9;36960:18;36953:50;37057:2;37049:6;37045:15;37039:22;37034:2;37023:9;37019:18;37012:50;37117:2;37109:6;37105:15;37099:22;37093:3;37082:9;37078:19;37071:51;37191:3;37183:6;37179:16;37173:23;37166:31;37159:39;37153:3;37142:9;37138:19;37131:68;37254:3;37246:6;37242:16;37236:23;37230:3;37219:9;37215:19;37208:52;36610:656;;;;;;21877:176:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22091:13;:11;:13::i;:::-;22073:86;;;39991:25:154;;;40047:2;40032:18;;40025:34;;;40075:18;;;40068:34;;;40133:2;40118:18;;40111:34;;;22143:15:111;40176:3:154;40161:19;;40154:35;22073:86:111;;-1:-1:-1;;;;;22073:86:111;;;;;;;;;;-1:-1:-1;22073:86:111;;;22174:62;;-1:-1:-1;;;22174:62:111;;-1:-1:-1;;;;;22174:18:111;;;-1:-1:-1;;22200:9:111;;22174:62;;22211:7;;22220:15;;;;22174:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21752:495;21494:753;20777:1476;;;;20672:1581;;;;;:::o;130:127:130:-;190:4;119;214:13;218:9;214:1;:13;:::i;:::-;213:37;;;;:::i;:::-;206:44;;130:127;;;;;:::o;2676:117:25:-;1729:16;:14;:16::i;:::-;2734:7:::1;:15:::0;;-1:-1:-1;;2734:15:25::1;::::0;;2764:22:::1;929:10:38::0;2773:12:25::1;2764:22;::::0;;-1:-1:-1;;;;;15696:32:154;;;;15678:51;;2764:22:25;;;;;15666:2:154;2764:22:25;;::::1;2676:117::o:0;1063:97::-;5374:13:24;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:24;;;;;;;:::i;:::-;1126:27:25::1;:25;:27::i;2429:115::-:0;1482:19;:17;:19::i;:::-;2488:7:::1;:14:::0;;-1:-1:-1;;2488:14:25::1;2498:4;2488:14;::::0;;2517:20:::1;2524:12;929:10:38::0;;850:96;22623:667:111;22835:16;;;22883:5;:43;;;;;;;;:::i;:::-;;22879:405;;;22988:5;22954:31;22975:10;22954:18;:31;:::i;:::-;:39;;;;:::i;:::-;22942:51;-1:-1:-1;22942:51:111;23022:30;504:4;23022:17;:30;:::i;:::-;23021:46;;;;:::i;:::-;23007:60;;22879:405;;;23097:35;23088:5;:44;;;;;;;;:::i;:::-;;23084:200;;;23194:5;23160:31;23181:10;23160:18;:31;:::i;:::-;:39;;;;:::i;:::-;23148:51;-1:-1:-1;23148:51:111;23228:30;504:4;23228:17;:30;:::i;:::-;23227:46;;;;:::i;:::-;23213:60;;23084:200;22623:667;;;;;;;;:::o;263:127:130:-;323:4;374:9;347:23;119:4;347:1;:23;:::i;2188:106:25:-;1928:7;;;;2246:41;;;;-1:-1:-1;;;2246:41:25;;20680:2:154;2246:41:25;;;20662:21:154;20719:2;20699:18;;;20692:30;-1:-1:-1;;;20738:18:154;;;20731:50;20798:18;;2246:41:25;20478:344:154;1166:95:25;5374:13:24;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:24;;;;;;;:::i;:::-;1239:7:25::1;:15:::0;;-1:-1:-1;;1239:15:25::1;::::0;;1166:95::o;14:138:154:-;93:13;;115:31;93:13;115:31;:::i;:::-;14:138;;;:::o;157:374::-;227:8;237:6;291:3;284:4;276:6;272:17;268:27;258:55;;309:1;306;299:12;258:55;-1:-1:-1;332:20:154;;375:18;364:30;;361:50;;;407:1;404;397:12;361:50;444:4;436:6;432:17;420:29;;504:3;497:4;487:6;484:1;480:14;472:6;468:27;464:38;461:47;458:67;;;521:1;518;511:12;458:67;157:374;;;;;:::o;536:132::-;612:13;;634:28;612:13;634:28;:::i;673:247::-;732:6;785:2;773:9;764:7;760:23;756:32;753:52;;;801:1;798;791:12;753:52;840:9;827:23;859:31;884:5;859:31;:::i;:::-;909:5;673:247;-1:-1:-1;;;673:247:154:o;925:251::-;995:6;1048:2;1036:9;1027:7;1023:23;1019:32;1016:52;;;1064:1;1061;1054:12;1016:52;1096:9;1090:16;1115:31;1140:5;1115:31;:::i;1181:388::-;1249:6;1257;1310:2;1298:9;1289:7;1285:23;1281:32;1278:52;;;1326:1;1323;1316:12;1278:52;1365:9;1352:23;1384:31;1409:5;1384:31;:::i;:::-;1434:5;-1:-1:-1;1491:2:154;1476:18;;1463:32;1504:33;1463:32;1504:33;:::i;:::-;1556:7;1546:17;;;1181:388;;;;;:::o;1574:382::-;1639:6;1647;1700:2;1688:9;1679:7;1675:23;1671:32;1668:52;;;1716:1;1713;1706:12;1668:52;1755:9;1742:23;1774:31;1799:5;1774:31;:::i;:::-;1824:5;-1:-1:-1;1881:2:154;1866:18;;1853:32;1894:30;1853:32;1894:30;:::i;1961:726::-;2040:6;2048;2056;2109:2;2097:9;2088:7;2084:23;2080:32;2077:52;;;2125:1;2122;2115:12;2077:52;2164:9;2151:23;2183:31;2208:5;2183:31;:::i;:::-;2233:5;-1:-1:-1;2289:2:154;2274:18;;2261:32;2312:18;2342:14;;;2339:34;;;2369:1;2366;2359:12;2339:34;2407:6;2396:9;2392:22;2382:32;;2452:7;2445:4;2441:2;2437:13;2433:27;2423:55;;2474:1;2471;2464:12;2423:55;2514:2;2501:16;2540:2;2532:6;2529:14;2526:34;;;2556:1;2553;2546:12;2526:34;2601:7;2596:2;2587:6;2583:2;2579:15;2575:24;2572:37;2569:57;;;2622:1;2619;2612:12;2569:57;2653:2;2649;2645:11;2635:21;;2675:6;2665:16;;;;;1961:726;;;;;:::o;2692:798::-;2825:6;2833;2841;2849;2902:2;2890:9;2881:7;2877:23;2873:32;2870:52;;;2918:1;2915;2908:12;2870:52;2958:9;2945:23;2987:18;3028:2;3020:6;3017:14;3014:34;;;3044:1;3041;3034:12;3014:34;3083:77;3152:7;3143:6;3132:9;3128:22;3083:77;:::i;:::-;3179:8;;-1:-1:-1;3057:103:154;-1:-1:-1;3267:2:154;3252:18;;3239:32;;-1:-1:-1;3283:16:154;;;3280:36;;;3312:1;3309;3302:12;3280:36;;3351:79;3422:7;3411:8;3400:9;3396:24;3351:79;:::i;:::-;2692:798;;;;-1:-1:-1;3449:8:154;-1:-1:-1;;;;2692:798:154:o;3495:241::-;3551:6;3604:2;3592:9;3583:7;3579:23;3575:32;3572:52;;;3620:1;3617;3610:12;3572:52;3659:9;3646:23;3678:28;3700:5;3678:28;:::i;3741:245::-;3808:6;3861:2;3849:9;3840:7;3836:23;3832:32;3829:52;;;3877:1;3874;3867:12;3829:52;3909:9;3903:16;3928:28;3950:5;3928:28;:::i;4828:894::-;4978:6;4986;4994;5002;5010;5018;5071:3;5059:9;5050:7;5046:23;5042:33;5039:53;;;5088:1;5085;5078:12;5039:53;5127:9;5114:23;5146:39;5179:5;5146:39;:::i;:::-;5204:5;-1:-1:-1;5261:2:154;5246:18;;5233:32;5274:33;5233:32;5274:33;:::i;:::-;5326:7;-1:-1:-1;5380:2:154;5365:18;;5352:32;;-1:-1:-1;5431:2:154;5416:18;;5403:32;;-1:-1:-1;5486:3:154;5471:19;;5458:33;5514:18;5503:30;;5500:50;;;5546:1;5543;5536:12;5500:50;5585:77;5654:7;5645:6;5634:9;5630:22;5585:77;:::i;:::-;4828:894;;;;-1:-1:-1;4828:894:154;;-1:-1:-1;4828:894:154;;5681:8;;4828:894;-1:-1:-1;;;4828:894:154:o;5727:884::-;5807:6;5860:2;5848:9;5839:7;5835:23;5831:32;5828:52;;;5876:1;5873;5866:12;5828:52;5909:9;5903:16;5938:18;5979:2;5971:6;5968:14;5965:34;;;5995:1;5992;5985:12;5965:34;6033:6;6022:9;6018:22;6008:32;;6078:7;6071:4;6067:2;6063:13;6059:27;6049:55;;6100:1;6097;6090:12;6049:55;6129:2;6123:9;6151:2;6147;6144:10;6141:36;;;6157:18;;:::i;:::-;6232:2;6226:9;6200:2;6286:13;;-1:-1:-1;;6282:22:154;;;6306:2;6278:31;6274:40;6262:53;;;6330:18;;;6350:22;;;6327:46;6324:72;;;6376:18;;:::i;:::-;6416:10;6412:2;6405:22;6451:2;6443:6;6436:18;6491:7;6486:2;6481;6477;6473:11;6469:20;6466:33;6463:53;;;6512:1;6509;6502:12;6463:53;6525:55;6577:2;6572;6564:6;6560:15;6555:2;6551;6547:11;6525:55;:::i;:::-;6599:6;5727:884;-1:-1:-1;;;;;;;5727:884:154:o;6616:1066::-;6720:6;6773:3;6761:9;6752:7;6748:23;6744:33;6741:53;;;6790:1;6787;6780:12;6741:53;6816:17;;:::i;:::-;6856:40;6886:9;6856:40;:::i;:::-;6849:5;6842:55;6950:2;6939:9;6935:18;6929:25;6924:2;6917:5;6913:14;6906:49;7008:2;6997:9;6993:18;6987:25;6982:2;6975:5;6971:14;6964:49;7066:2;7055:9;7051:18;7045:25;7040:2;7033:5;7029:14;7022:49;7104:47;7146:3;7135:9;7131:19;7104:47;:::i;:::-;7098:3;7087:15;;7080:72;7206:3;7191:19;;;7185:26;7168:15;;;7161:51;7266:3;7251:19;;;7245:26;7228:15;;;7221:51;7326:3;7311:19;;;7305:26;7288:15;;;7281:51;7351:3;7392:18;;;7386:25;7370:14;;;7363:49;7431:3;7472:18;;;7466:25;7450:14;;;7443:49;7511:3;7552:18;;;7546:25;7530:14;;;7523:49;7591:3;7632:18;;;7626:25;7610:14;;;7603:49;;;;-1:-1:-1;7091:5:154;6616:1066;-1:-1:-1;6616:1066:154:o;7687:750::-;7786:6;7839:3;7827:9;7818:7;7814:23;7810:33;7807:53;;;7856:1;7853;7846:12;7807:53;7889:2;7883:9;7931:3;7923:6;7919:16;8001:6;7989:10;7986:22;7965:18;7953:10;7950:34;7947:62;7944:88;;;8012:18;;:::i;:::-;8052:10;8048:2;8041:22;;8093:9;8087:16;8079:6;8072:32;8158:2;8147:9;8143:18;8137:25;8132:2;8124:6;8120:15;8113:50;8217:2;8206:9;8202:18;8196:25;8191:2;8183:6;8179:15;8172:50;8265:2;8254:9;8250:18;8244:25;8278:28;8300:5;8278:28;:::i;:::-;8334:2;8322:15;;8315:30;8400:3;8385:19;;;8379:26;8361:16;;;8354:52;;;;-1:-1:-1;8326:6:154;7687:750;-1:-1:-1;7687:750:154:o;8442:514::-;8571:6;8579;8587;8631:9;8622:7;8618:23;8661:3;8657:2;8653:12;8650:32;;;8678:1;8675;8668:12;8650:32;8701:3;8724:2;8720;8716:11;8713:31;;;8740:1;8737;8730:12;8713:31;8763:9;;-1:-1:-1;8807:18:154;;8794:32;;-1:-1:-1;8835:39:154;8794:32;8835:39;:::i;:::-;8442:514;;8893:5;;-1:-1:-1;;;8945:3:154;8930:19;;;;8917:33;;8442:514::o;8961:982::-;9056:6;9109:3;9097:9;9088:7;9084:23;9080:33;9077:53;;;9126:1;9123;9116:12;9077:53;9152:22;;:::i;:::-;9197:40;9227:9;9197:40;:::i;:::-;9190:5;9183:55;9291:2;9280:9;9276:18;9270:25;9265:2;9258:5;9254:14;9247:49;9349:2;9338:9;9334:18;9328:25;9323:2;9316:5;9312:14;9305:49;9407:2;9396:9;9392:18;9386:25;9381:2;9374:5;9370:14;9363:49;9466:3;9455:9;9451:19;9445:26;9439:3;9432:5;9428:15;9421:51;9526:3;9515:9;9511:19;9505:26;9499:3;9492:5;9488:15;9481:51;9565:47;9607:3;9596:9;9592:19;9565:47;:::i;:::-;9559:3;9548:15;;9541:72;9667:3;9652:19;;;9646:26;9629:15;;;9622:51;9692:3;9733:18;;;9727:25;9711:14;;;9704:49;9772:3;9813:18;;;9807:25;9791:14;;;9784:49;9852:3;9893:18;;;9887:25;9871:14;;;9864:49;;;;-1:-1:-1;9552:5:154;8961:982;-1:-1:-1;8961:982:154:o;9948:180::-;10007:6;10060:2;10048:9;10039:7;10035:23;10031:32;10028:52;;;10076:1;10073;10066:12;10028:52;-1:-1:-1;10099:23:154;;9948:180;-1:-1:-1;9948:180:154:o;10133:184::-;10203:6;10256:2;10244:9;10235:7;10231:23;10227:32;10224:52;;;10272:1;10269;10262:12;10224:52;-1:-1:-1;10295:16:154;;10133:184;-1:-1:-1;10133:184:154:o;10322:248::-;10390:6;10398;10451:2;10439:9;10430:7;10426:23;10422:32;10419:52;;;10467:1;10464;10457:12;10419:52;-1:-1:-1;;10490:23:154;;;10560:2;10545:18;;;10532:32;;-1:-1:-1;10322:248:154:o;10575:822::-;10725:6;10733;10741;10749;10757;10765;10818:3;10806:9;10797:7;10793:23;10789:33;10786:53;;;10835:1;10832;10825:12;10786:53;10871:9;10858:23;10848:33;;10928:2;10917:9;10913:18;10900:32;10890:42;;10982:2;10971:9;10967:18;10954:32;11015:1;11008:5;11005:12;10995:40;;11031:1;11028;11021:12;10995:40;11054:5;-1:-1:-1;11106:2:154;11091:18;;11078:32;;-1:-1:-1;11161:3:154;11146:19;;11133:33;11189:18;11178:30;;11175:50;;;11221:1;11218;11211:12;11402:316;11479:6;11487;11495;11548:2;11536:9;11527:7;11523:23;11519:32;11516:52;;;11564:1;11561;11554:12;11516:52;-1:-1:-1;;11587:23:154;;;11657:2;11642:18;;11629:32;;-1:-1:-1;11708:2:154;11693:18;;;11680:32;;11402:316;-1:-1:-1;11402:316:154:o;11723:729::-;11856:6;11864;11872;11880;11888;11896;11949:3;11937:9;11928:7;11924:23;11920:33;11917:53;;;11966:1;11963;11956:12;11917:53;12002:9;11989:23;11979:33;;12059:2;12048:9;12044:18;12031:32;12021:42;;12110:2;12099:9;12095:18;12082:32;12072:42;;12161:2;12150:9;12146:18;12133:32;12123:42;;12216:3;12205:9;12201:19;12188:33;12244:18;12236:6;12233:30;12230:50;;;12276:1;12273;12266:12;12457:523;12561:6;12569;12577;12585;12593;12601;12654:3;12642:9;12633:7;12629:23;12625:33;12622:53;;;12671:1;12668;12661:12;12622:53;-1:-1:-1;;12694:23:154;;;12764:2;12749:18;;12736:32;;-1:-1:-1;12815:2:154;12800:18;;12787:32;;12866:2;12851:18;;12838:32;;-1:-1:-1;12917:3:154;12902:19;;12889:33;;-1:-1:-1;12969:3:154;12954:19;12941:33;;-1:-1:-1;12457:523:154;-1:-1:-1;12457:523:154:o;13190:266::-;13278:6;13273:3;13266:19;13330:6;13323:5;13316:4;13311:3;13307:14;13294:43;-1:-1:-1;13382:1:154;13357:16;;;13375:4;13353:27;;;13346:38;;;;13438:2;13417:15;;;-1:-1:-1;;13413:29:154;13404:39;;;13400:50;;13190:266::o;13461:257::-;13502:3;13540:5;13534:12;13567:6;13562:3;13555:19;13583:63;13639:6;13632:4;13627:3;13623:14;13616:4;13609:5;13605:16;13583:63;:::i;:::-;13700:2;13679:15;-1:-1:-1;;13675:29:154;13666:39;;;;13707:4;13662:50;;13461:257;-1:-1:-1;;13461:257:154:o;13723:141::-;13805:1;13798:5;13795:12;13785:46;;13811:18;;:::i;:::-;13840;;13723:141::o;13869:392::-;13956:12;;-1:-1:-1;;;;;13952:38:154;13940:51;;14040:4;14029:16;;;14023:23;14007:14;;;14000:47;14096:4;14085:16;;;14079:23;14063:14;;;14056:47;14149:4;14138:16;;14132:23;14164:46;14132:23;14164:46;:::i;:::-;14242:12;14235:4;14230:3;14226:14;14219:36;;13869:392;;:::o;14266:775::-;14344:12;;-1:-1:-1;;;;;13051:31:154;13039:44;;14411:4;14404:5;14400:16;14394:23;14387:4;14382:3;14378:14;14371:47;14467:4;14460:5;14456:16;14450:23;14443:4;14438:3;14434:14;14427:47;14523:4;14516:5;14512:16;14506:23;14499:4;14494:3;14490:14;14483:47;14579:4;14572:5;14568:16;14562:23;14555:4;14550:3;14546:14;14539:47;14635:4;14628:5;14624:16;14618:23;14611:4;14606:3;14602:14;14595:47;14688:4;14681:5;14677:16;14671:23;14703:45;14742:4;14737:3;14733:14;14719:12;13164:13;13157:21;13145:34;;13094:91;14703:45;-1:-1:-1;14797:4:154;14786:16;;;14780:23;14764:14;;;14757:47;14823:6;14865:14;;;14859:21;14845:12;;;14838:43;14900:6;14942:14;;;14936:21;14922:12;;;14915:43;14977:6;15019:14;;;15013:21;14999:12;;14992:43;14266:775::o;15046:271::-;15229:6;15221;15216:3;15203:33;15185:3;15255:16;;15280:13;;;15255:16;15046:271;-1:-1:-1;15046:271:154:o;17614:489::-;-1:-1:-1;;;;;17886:32:154;;17868:51;;17950:2;17935:18;;17928:34;;;17993:2;17978:18;;17971:34;;;17855:3;17840:19;;18014:40;18047:6;18014:40;:::i;:::-;18090:6;18085:2;18074:9;18070:18;18063:34;17614:489;;;;;;;:::o;19370:217::-;19517:2;19506:9;19499:21;19480:4;19537:44;19577:2;19566:9;19562:18;19554:6;19537:44;:::i;27471:407::-;27673:2;27655:21;;;27712:2;27692:18;;;27685:30;27751:34;27746:2;27731:18;;27724:62;-1:-1:-1;;;27817:2:154;27802:18;;27795:41;27868:3;27853:19;;27471:407::o;30603:1092::-;30837:13;;-1:-1:-1;;;;;13051:31:154;13039:44;;30805:3;30790:19;;30918:4;30910:6;30906:17;30900:24;30893:4;30882:9;30878:20;30871:54;30981:4;30973:6;30969:17;30963:24;30956:4;30945:9;30941:20;30934:54;31044:4;31036:6;31032:17;31026:24;31019:4;31008:9;31004:20;30997:54;31098:4;31090:6;31086:17;31080:24;31113:51;31158:4;31147:9;31143:20;31129:12;13164:13;13157:21;13145:34;;13094:91;31113:51;;31220:4;31212:6;31208:17;31202:24;31195:4;31184:9;31180:20;31173:54;31283:4;31275:6;31271:17;31265:24;31258:4;31247:9;31243:20;31236:54;31346:4;31338:6;31334:17;31328:24;31321:4;31310:9;31306:20;31299:54;31372:6;31432:2;31424:6;31420:15;31414:22;31409:2;31398:9;31394:18;31387:50;;31456:6;31516:2;31508:6;31504:15;31498:22;31493:2;31482:9;31478:18;31471:50;;31540:6;31600:2;31592:6;31588:15;31582:22;31577:2;31566:9;31562:18;31555:50;;31624:6;31684:2;31676:6;31672:15;31666:22;31661:2;31650:9;31646:18;31639:50;;30603:1092;;;;:::o;31700:353::-;31936:3;31921:19;;31949:54;31925:9;31985:6;31949:54;:::i;:::-;32040:6;32034:3;32023:9;32019:19;32012:35;31700:353;;;;;:::o;32058:627::-;32276:4;32318:3;32307:9;32303:19;32295:27;;32331:49;32370:9;32361:6;32355:13;32331:49;:::i;:::-;32438:4;32426:17;;32420:24;32411:6;32396:22;;32389:56;32503:4;32491:17;;32485:24;32476:6;32461:22;;32454:56;32568:4;32556:17;;;32550:24;32541:6;32526:22;;32519:56;32606:3;32591:19;;32584:35;;;;32663:14;32656:22;32650:3;32635:19;;;32628:51;32058:627;:::o;32690:245::-;32874:3;32859:19;;32887:42;32863:9;32911:6;32887:42;:::i;32940:377::-;33174:3;33159:19;;33187:54;33163:9;33223:6;33187:54;:::i;:::-;-1:-1:-1;;;;;33278:32:154;;;;33272:3;33257:19;;;;33250:61;33278:32;;-1:-1:-1;32940:377:154:o;33504:1261::-;33704:4;33752:2;33741:9;33737:18;33782:6;33771:9;33764:25;33808:2;33846;33841;33830:9;33826:18;33819:30;33869:6;33899;33891;33884:22;33937:2;33926:9;33922:18;33915:25;;33999:2;33989:6;33986:1;33982:14;33971:9;33967:30;33963:39;33949:53;;34025:6;34049:1;34059:677;34073:6;34070:1;34067:13;34059:677;;;34138:22;;;-1:-1:-1;;34134:36:154;34122:49;;34210:20;;34285:14;34281:27;;;-1:-1:-1;;34277:41:154;34253:66;;34243:94;;34333:1;34330;34323:12;34243:94;34363:31;;34421:19;;34467:18;34456:30;;34453:50;;;34499:1;34496;34489:12;34453:50;34551:6;34535:14;34531:27;34523:6;34519:40;34516:60;;;34572:1;34569;34562:12;34516:60;34599:57;34649:6;34641;34636:2;34629:5;34625:14;34599:57;:::i;:::-;34589:67;-1:-1:-1;;;34714:12:154;;;;34679:15;;;;34095:1;34088:9;34059:677;;;-1:-1:-1;34753:6:154;;33504:1261;-1:-1:-1;;;;;;;;33504:1261:154:o;35439:318::-;35627:25;;;35615:2;35600:18;;35682:1;35671:13;;35661:47;;35688:18;;:::i;:::-;35744:6;35739:2;35728:9;35724:18;35717:34;35439:318;;;;;:::o;35762:843::-;35960:4;36002:3;35991:9;35987:19;35979:27;;36033:6;36022:9;36015:25;36112:1;36108;36103:3;36099:11;36095:19;36086:6;36080:13;36076:39;36071:2;36060:9;36056:18;36049:67;36170:2;36162:6;36158:15;36152:22;36147:2;36136:9;36132:18;36125:50;36229:2;36221:6;36217:15;36211:22;36206:2;36195:9;36191:18;36184:50;36281:2;36273:6;36269:15;36263:22;36294:61;36350:3;36339:9;36335:19;36321:12;36294:61;:::i;:::-;;36410:3;36402:6;36398:16;36392:23;36386:3;36375:9;36371:19;36364:52;36471:3;36463:6;36459:16;36453:23;36447:3;36436:9;36432:19;36425:52;36532:3;36524:6;36520:16;36514:23;36508:3;36497:9;36493:19;36486:52;36593:3;36585:6;36581:16;36575:23;36569:3;36558:9;36554:19;36547:52;35762:843;;;;;:::o;37524:769::-;37837:4;37879:3;37868:9;37864:19;37856:27;;37910:6;37899:9;37892:25;37953:6;37948:2;37937:9;37933:18;37926:34;38010:6;38003:14;37996:22;37991:2;37980:9;37976:18;37969:50;38055:6;38050:2;38039:9;38035:18;38028:34;38099:6;38093:3;38082:9;38078:19;38071:35;38115:40;38148:6;38115:40;:::i;:::-;38192:6;38186:3;38175:9;38171:19;38164:35;38236:6;38230:3;38219:9;38215:19;38208:35;38280:6;38274:3;38263:9;38259:19;38252:35;37524:769;;;;;;;;;;;:::o;38298:709::-;38678:25;;;38734:2;38719:18;;38712:34;;;38665:3;38650:19;;38755:54;38805:2;38790:18;;38782:6;38755:54;:::i;:::-;38818:51;38865:2;38854:9;38850:18;38842:6;38818:51;:::i;:::-;38906:6;38900:3;38889:9;38885:19;38878:35;38950:6;38944:3;38933:9;38929:19;38922:35;38994:6;38988:3;38977:9;38973:19;38966:35;38298:709;;;;;;;;;;:::o;40740:247::-;40807:2;40801:9;40849:3;40837:16;;40883:18;40868:34;;40904:22;;;40865:62;40862:88;;;40930:18;;:::i;:::-;40966:2;40959:22;40740:247;:::o;40992:252::-;41064:2;41058:9;41106:3;41094:16;;41140:18;41125:34;;41161:22;;;41122:62;41119:88;;;41187:18;;:::i;41249:128::-;41289:3;41320:1;41316:6;41313:1;41310:13;41307:39;;;41326:18;;:::i;:::-;-1:-1:-1;41362:9:154;;41249:128::o;41382:217::-;41422:1;41448;41438:132;;41492:10;41487:3;41483:20;41480:1;41473:31;41527:4;41524:1;41517:15;41555:4;41552:1;41545:15;41438:132;-1:-1:-1;41584:9:154;;41382:217::o;41604:168::-;41644:7;41710:1;41706;41702:6;41698:14;41695:1;41692:21;41687:1;41680:9;41673:17;41669:45;41666:71;;;41717:18;;:::i;:::-;-1:-1:-1;41757:9:154;;41604:168::o;41777:125::-;41817:4;41845:1;41842;41839:8;41836:34;;;41850:18;;:::i;:::-;-1:-1:-1;41887:9:154;;41777:125::o;41907:258::-;41979:1;41989:113;42003:6;42000:1;41997:13;41989:113;;;42079:11;;;42073:18;42060:11;;;42053:39;42025:2;42018:10;41989:113;;;42120:6;42117:1;42114:13;42111:48;;;42155:1;42146:6;42141:3;42137:16;42130:27;42111:48;;41907:258;;;:::o;42170:135::-;42209:3;-1:-1:-1;;42230:17:154;;42227:43;;;42250:18;;:::i;:::-;-1:-1:-1;42297:1:154;42286:13;;42170:135::o;42310:127::-;42371:10;42366:3;42362:20;42359:1;42352:31;42402:4;42399:1;42392:15;42426:4;42423:1;42416:15;42442:127;42503:10;42498:3;42494:20;42491:1;42484:31;42534:4;42531:1;42524:15;42558:4;42555:1;42548:15;42574:127;42635:10;42630:3;42626:20;42623:1;42616:31;42666:4;42663:1;42656:15;42690:4;42687:1;42680:15;42706:127;42767:10;42762:3;42758:20;42755:1;42748:31;42798:4;42795:1;42788:15;42822:4;42819:1;42812:15;42838:115;42921:1;42914:5;42911:12;42901:46;;42927:18;;:::i;:::-;42838:115;:::o;42958:131::-;-1:-1:-1;;;;;43033:31:154;;43023:42;;43013:70;;43079:1;43076;43069:12;43094:118;43180:5;43173:13;43166:21;43159:5;43156:32;43146:60;;43202:1;43199;43192:12;43217:109;43300:1;43293:5;43290:12;43280:40;;43316:1;43313;43306:12","linkReferences":{}},"methodIdentifiers":{"__msgSender()":"d1a91ff2","cancelOpenLimitOrder(uint256,uint256)":"b9b6573a","cancelPendingMarketOrder(uint256)":"c5ed6a08","closeTradeMarket(uint256,uint256,uint256)":"2c3cbce4","delegatedAction(address,bytes)":"9a10cc32","delegations(address)":"bffe3486","executeLimitOrder(uint8,address,uint256,uint256,bytes[])":"46f6c8f5","executeMarketOrders(uint256[],bytes[])":"c0b4d24d","initialize(address,address)":"485cc955","isOperator(address)":"6d70f7ae","limitOrdersTimelock()":"0890d22a","openTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint8,uint256)":"19cde9a1","operator()":"570ca735","pairInfos()":"1346b0ff","pause()":"8456cb59","paused()":"5c975abb","removeDelegate()":"36fb8b15","setDelegate(address)":"ca5eb5e1","setLimitOrdersTimelock(uint256)":"d4a1caa7","setMarketExecFeeReciever(address)":"9e2033f5","storageT()":"16fff074","unpause()":"3f4ba83a","updateMargin(uint256,uint256,uint8,uint256,bytes[])":"cd90b8a4","updateOpenLimitOrder(uint256,uint256,uint256,uint256,uint256,uint256)":"c641558e","updateOperator(address,bool)":"6d44a3b2","updateTpAndSl(uint256,uint256,uint256,uint256,bytes[])":"15b760b1"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"AddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"LimitOrderInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"LimitOrderSameBlock\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum ITradingStorage.updateType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialPosToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSizeUSDC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct ITradingStorage.Trade\",\"name\":\"newTrade\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marginFees\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lossProtectionTier\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"MarginUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"open\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"MarketOrderInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"NumberUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"}],\"name\":\"OpenLimitCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"executionFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum IExecute.OpenLimitOrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slippageP\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"}],\"name\":\"OpenLimitPlaced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSl\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"OpenLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isOperator\",\"type\":\"bool\"}],\"name\":\"OperatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSl\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SlUpdateInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSl\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SlUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"TpUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"__msgSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"cancelOpenLimitOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"}],\"name\":\"cancelPendingMarketOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"closeTradeMarket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"call_data\",\"type\":\"bytes\"}],\"name\":\"delegatedAction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"delegations\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum ITradingStorage.LimitOrder\",\"name\":\"_orderType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"priceUpdateData\",\"type\":\"bytes[]\"}],\"name\":\"executeLimitOrder\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"orderId\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"priceUpdateData\",\"type\":\"bytes[]\"}],\"name\":\"executeMarketOrders\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_storageT\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_pairInfos\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"limitOrdersTimelock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialPosToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSizeUSDC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.Trade\",\"name\":\"t\",\"type\":\"tuple\"},{\"internalType\":\"enum IExecute.OpenLimitOrderType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"_slippageP\",\"type\":\"uint256\"}],\"name\":\"openTrade\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pairInfos\",\"outputs\":[{\"internalType\":\"contract IPairInfos\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blocks\",\"type\":\"uint256\"}],\"name\":\"setLimitOrdersTimelock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reciever\",\"type\":\"address\"}],\"name\":\"setMarketExecFeeReciever\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storageT\",\"outputs\":[{\"internalType\":\"contract ITradingStorage\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"enum ITradingStorage.updateType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"priceUpdateData\",\"type\":\"bytes[]\"}],\"name\":\"updateMargin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_slippageP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_sl\",\"type\":\"uint256\"}],\"name\":\"updateOpenLimitOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isOperator\",\"type\":\"bool\"}],\"name\":\"updateOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_newSl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_newTP\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"priceUpdateData\",\"type\":\"bytes[]\"}],\"name\":\"updateTpAndSl\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"cancelOpenLimitOrder(uint256,uint256)\":{\"params\":{\"_index\":\"The index of the order\",\"_pairIndex\":\"The index of the trading pair\"}},\"closeTradeMarket(uint256,uint256,uint256)\":{\"params\":{\"_amount\":\"The amount of collateral being closed\",\"_index\":\"The index of the trade\",\"_pairIndex\":\"The index of the trading pair\"}},\"executeLimitOrder(uint8,address,uint256,uint256,bytes[])\":{\"params\":{\"_index\":\"The index of the order\",\"_orderType\":\"The type of limit order (OPEN, CLOSE, TP, SL, LIQ)\",\"_pairIndex\":\"The index of the trading pair\",\"_trader\":\"The address of the trader\",\"priceUpdateData\":\"Pyth price update data\"}},\"executeMarketOrders(uint256[],bytes[])\":{\"params\":{\"orderId\":\"The array of orderIDs\",\"priceUpdateData\":\"Pyth price update calldata\"}},\"initialize(address,address)\":{\"params\":{\"_pairInfos\":\"The address of the pair information contract\",\"_storageT\":\"The address of the storage contract\"}},\"openTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint8,uint256)\":{\"params\":{\"_slippageP\":\"The slippage percentage\",\"_type\":\"Market or Limit or Stop Limit\",\"t\":\"The details of the trade to open\"}},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"setLimitOrdersTimelock(uint256)\":{\"params\":{\"_blocks\":\"The new time-lock duration in blocks\"}},\"updateMargin(uint256,uint256,uint8,uint256,bytes[])\":{\"params\":{\"_amount\":\"The Collateral by which to update the margin\",\"_index\":\"The index of the trade\",\"_pairIndex\":\"The index of the trading pair\",\"_type\":\"Withdraw or Deposit\",\"priceUpdateData\":\"Pyth price update\"}},\"updateOpenLimitOrder(uint256,uint256,uint256,uint256,uint256,uint256)\":{\"params\":{\"_index\":\"The index of the order\",\"_pairIndex\":\"The index of the trading pair\",\"_price\":\"The price level to set (_PRECISION)\",\"_sl\":\"The stop-loss price\",\"_tp\":\"The take-profit price\"}},\"updateTpAndSl(uint256,uint256,uint256,uint256,bytes[])\":{\"params\":{\"_index\":\"The index of the order\",\"_newSl\":\"The new stop-loss price\",\"_newTP\":\"The new take-profit price\",\"_pairIndex\":\"The index of the trading pair\",\"priceUpdateData\":\"Pyth price update data\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"cancelOpenLimitOrder(uint256,uint256)\":{\"notice\":\"Cancels an open limit order\"},\"cancelPendingMarketOrder(uint256)\":{\"notice\":\"FallBack method in case unregister is not working directly\"},\"closeTradeMarket(uint256,uint256,uint256)\":{\"notice\":\"Closes a trade using market execution\"},\"executeLimitOrder(uint8,address,uint256,uint256,bytes[])\":{\"notice\":\"Executes a limit order (either open or close). Callable by Operators\"},\"executeMarketOrders(uint256[],bytes[])\":{\"notice\":\"Operator intiated method to close pending market orders\"},\"initialize(address,address)\":{\"notice\":\"Initializes the proxy\"},\"openTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint8,uint256)\":{\"notice\":\"Opens a new Market/Limit trade\"},\"pause()\":{\"notice\":\"Pauses the contract\"},\"setLimitOrdersTimelock(uint256)\":{\"notice\":\"Sets the time-lock for limit order updates\"},\"unpause()\":{\"notice\":\"Unpauses the contract\"},\"updateMargin(uint256,uint256,uint8,uint256,bytes[])\":{\"notice\":\"Updates(Deposit/Withdraw) the margin for an open trade\"},\"updateOpenLimitOrder(uint256,uint256,uint256,uint256,uint256,uint256)\":{\"notice\":\"Updates an open limit order\"},\"updateTpAndSl(uint256,uint256,uint256,uint256,bytes[])\":{\"notice\":\"Updates the take-profit and stop-loss for a open Trade\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Trading.sol\":\"Trading\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@chainlink/=lib/chainlink/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":chainlink/=lib/chainlink/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":pyth-sdk-solidity/=lib/pyth-sdk-solidity/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/PausableUpgradeable.sol\":{\"keccak256\":\"0x40c636b4572ff5f1dc50cf22097e93c0723ee14eff87e99ac2b02636eeca1250\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c7d1f5e15633ab912b74c2f57e24559e66b03232300d4b27ff0f25bc452ecad\",\"dweb:/ipfs/QmYTJkc1cntYkKQ1Tu11nBcJLakiy93Tjytc4XHELo4GmR\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"src/Delegatable.sol\":{\"keccak256\":\"0x477287e08d3524d8159b6bacd44885e74c33de41ba15b5ae4a3dd5874617add8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ae9077e3a965df9dbf02a66660a6dc702b834ec0bf116153ee97299f479cf92\",\"dweb:/ipfs/QmciPUcoEDn5ouUV31QH5Geqin3v5vp9pABPK7p5d2QmUu\"]},\"src/Trading.sol\":{\"keccak256\":\"0xb344f4cb5b96b281bca51bb36628c7f54750901d11028d1c1dc6c5e6eff31128\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48eb16c48c95a3c91b0c30e9828ca9948b009fae7275dd149de9bc687398ca25\",\"dweb:/ipfs/Qmb5hxwYQk8CM4dw9x9sEzPbKLNrPxn2a563cfWmwAY4dp\"]},\"src/interfaces/ICallbacks.sol\":{\"keccak256\":\"0xaf271d97c8c47e52d493b1bbb1d0fb51768d6c94ac59aedbc71f5885649fcc3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3d0ae3efa5fd0448cc34d5c6166da6962186f7fa343490997f39ed593d4ab59\",\"dweb:/ipfs/QmRbxqvpg8UToeEX7sGQrToxhZKLeEKvBczrnZ9Qg887Lt\"]},\"src/interfaces/IExecute.sol\":{\"keccak256\":\"0x9d34356818b64942ede2aca017517b9ba329093207a0e417469641436d298c88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3536e9511c45ade7bb3a5ee5545e414fe55c4d3fc05410987a81d2c1590ed4b\",\"dweb:/ipfs/QmS5UbmedkTTnn2qYF5kz3xoEtQceaSpPMm4RdjQgf6isY\"]},\"src/interfaces/IPairInfos.sol\":{\"keccak256\":\"0x882f6c1b97ce23af4ab79a9d12d159ae177d6269fbbd1bc7b365786b8db1990a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3bd9136b25dd909dcbbfaee3f6c568bb8a94af552b52ddc3b0ea5a114d14048\",\"dweb:/ipfs/QmeCBEEbuBe25rQWCndoJHdHM2tBYcPb8CUE4aJr4KQmAP\"]},\"src/interfaces/IPairStorage.sol\":{\"keccak256\":\"0xeec105aed668f80ae66ae314acfe07103f82a5e280fbf234fe2a36d3d67d5a59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cca7c817e7d02629cb85cecc3312c9f4e9c1c22ecc2f0db80c25be9476ce7aff\",\"dweb:/ipfs/QmcnmFawRf9ygBUVQaLW9BD5d2YMSU5dgnkJWRXRHbMuSs\"]},\"src/interfaces/IPausable.sol\":{\"keccak256\":\"0x0cf760757842bd332ce27fac78b8dc0f7a36406529a213954bc463c2be174ecd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c69ee15b814b76caed732b47b729d1c2b361ed158b85220da30ea9aac893ad0e\",\"dweb:/ipfs/QmbF9HWVA7DCtNzK2LkRdvhMV1TuqTf9dzUzAKwQadHZnY\"]},\"src/interfaces/IPriceAggregator.sol\":{\"keccak256\":\"0x21992c3c324abffac8ccb282a5b40569787b786dd79fdf0df1fed6a4bf99b375\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fcb2ead0eeaccfd87a1003e01de8fc0ce97b8365bc9021a9f210dcdcee331ffe\",\"dweb:/ipfs/QmYXMuxPYKUbGSefB7c9AyTXxK7mS4hP9G4JL86mwANHnC\"]},\"src/interfaces/ITradingStorage.sol\":{\"keccak256\":\"0xa010a68fee744de912fbb3eddfb2012889ce22fa718b36cb5cecb90a51be8e8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4631c54588a7043a50e292fd3a84dcb7f25a27428759604c9d502a2469e56f1b\",\"dweb:/ipfs/QmREpbXoV8Z4ZgoxVFpViBCFrmijMXtBY2gDLfFGD7zD1S\"]},\"src/interfaces/IVaultManager.sol\":{\"keccak256\":\"0xa8ccf68fc5846dd0a638f7c337289d7a90b121ada4eb61802be4ff428319dd8e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de750a9805572838bfd630e9ae20f192f8d8a2d53226728aaf32ecd229e8cdb4\",\"dweb:/ipfs/Qmdqj88ry3c1AjABjY3D5PNvE84SXxDoj3M3JLDi8Zz5BS\"]},\"src/library/PositionMath.sol\":{\"keccak256\":\"0x02b855130b30da5e71c143006945ae31208082628e64720633c378029c42333c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a449300eedf6e864ef54e9e7d4c5d2e4c295f62d6a41925a3af33a0fb643b15c\",\"dweb:/ipfs/QmT6regWhrbyUUBui1ZLuW5DGfUFuCHpCVHQUxv9qbMVu1\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.7+commit.e28d00a7"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"string","name":"name","type":"string","indexed":false},{"internalType":"address","name":"a","type":"address","indexed":false}],"type":"event","name":"AddressUpdated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"LimitOrderInitiated","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"LimitOrderSameBlock","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"enum ITradingStorage.updateType","name":"_type","type":"uint8","indexed":false},{"internalType":"struct ITradingStorage.Trade","name":"newTrade","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"initialPosToken","type":"uint256"},{"internalType":"uint256","name":"positionSizeUSDC","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"indexed":false},{"internalType":"uint256","name":"marginFees","type":"uint256","indexed":false},{"internalType":"uint256","name":"lossProtectionTier","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"MarginUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"bool","name":"open","type":"bool","indexed":false},{"internalType":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"MarketOrderInitiated","anonymous":false},{"inputs":[{"internalType":"string","name":"name","type":"string","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"NumberUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false},{"internalType":"uint256","name":"collateral","type":"uint256","indexed":false}],"type":"event","name":"OpenLimitCanceled","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"bool","name":"isBuy","type":"bool","indexed":false},{"internalType":"uint256","name":"openPrice","type":"uint256","indexed":false},{"internalType":"uint256","name":"executionFee","type":"uint256","indexed":false},{"internalType":"enum IExecute.OpenLimitOrderType","name":"orderType","type":"uint8","indexed":false},{"internalType":"uint256","name":"slippageP","type":"uint256","indexed":false},{"internalType":"uint256","name":"collateral","type":"uint256","indexed":false}],"type":"event","name":"OpenLimitPlaced","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"newPrice","type":"uint256","indexed":false},{"internalType":"uint256","name":"newTp","type":"uint256","indexed":false},{"internalType":"uint256","name":"newSl","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"OpenLimitUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":false},{"internalType":"bool","name":"isOperator","type":"bool","indexed":false}],"type":"event","name":"OperatorUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"newSl","type":"uint256","indexed":false},{"internalType":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"SlUpdateInitiated","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"newSl","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"SlUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"newTp","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"TpUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"__msgSender","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"cancelOpenLimitOrder"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"cancelPendingMarketOrder"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"closeTradeMarket","outputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"bytes","name":"call_data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"delegatedAction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"delegations","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"enum ITradingStorage.LimitOrder","name":"_orderType","type":"uint8"},{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"bytes[]","name":"priceUpdateData","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"executeLimitOrder"},{"inputs":[{"internalType":"uint256[]","name":"orderId","type":"uint256[]"},{"internalType":"bytes[]","name":"priceUpdateData","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"executeMarketOrders"},{"inputs":[{"internalType":"address","name":"_storageT","type":"address"},{"internalType":"address","name":"_pairInfos","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"limitOrdersTimelock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct ITradingStorage.Trade","name":"t","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"initialPosToken","type":"uint256"},{"internalType":"uint256","name":"positionSizeUSDC","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"internalType":"enum IExecute.OpenLimitOrderType","name":"_type","type":"uint8"},{"internalType":"uint256","name":"_slippageP","type":"uint256"}],"stateMutability":"payable","type":"function","name":"openTrade","outputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pairInfos","outputs":[{"internalType":"contract IPairInfos","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"removeDelegate"},{"inputs":[{"internalType":"address","name":"delegate","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDelegate"},{"inputs":[{"internalType":"uint256","name":"_blocks","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setLimitOrdersTimelock"},{"inputs":[{"internalType":"address","name":"_reciever","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMarketExecFeeReciever"},{"inputs":[],"stateMutability":"view","type":"function","name":"storageT","outputs":[{"internalType":"contract ITradingStorage","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"enum ITradingStorage.updateType","name":"_type","type":"uint8"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes[]","name":"priceUpdateData","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"updateMargin","outputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_slippageP","type":"uint256"},{"internalType":"uint256","name":"_tp","type":"uint256"},{"internalType":"uint256","name":"_sl","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"updateOpenLimitOrder"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_isOperator","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"updateOperator"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"uint256","name":"_newSl","type":"uint256"},{"internalType":"uint256","name":"_newTP","type":"uint256"},{"internalType":"bytes[]","name":"priceUpdateData","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"updateTpAndSl"}],"devdoc":{"kind":"dev","methods":{"cancelOpenLimitOrder(uint256,uint256)":{"params":{"_index":"The index of the order","_pairIndex":"The index of the trading pair"}},"closeTradeMarket(uint256,uint256,uint256)":{"params":{"_amount":"The amount of collateral being closed","_index":"The index of the trade","_pairIndex":"The index of the trading pair"}},"executeLimitOrder(uint8,address,uint256,uint256,bytes[])":{"params":{"_index":"The index of the order","_orderType":"The type of limit order (OPEN, CLOSE, TP, SL, LIQ)","_pairIndex":"The index of the trading pair","_trader":"The address of the trader","priceUpdateData":"Pyth price update data"}},"executeMarketOrders(uint256[],bytes[])":{"params":{"orderId":"The array of orderIDs","priceUpdateData":"Pyth price update calldata"}},"initialize(address,address)":{"params":{"_pairInfos":"The address of the pair information contract","_storageT":"The address of the storage contract"}},"openTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint8,uint256)":{"params":{"_slippageP":"The slippage percentage","_type":"Market or Limit or Stop Limit","t":"The details of the trade to open"}},"paused()":{"details":"Returns true if the contract is paused, and false otherwise."},"setLimitOrdersTimelock(uint256)":{"params":{"_blocks":"The new time-lock duration in blocks"}},"updateMargin(uint256,uint256,uint8,uint256,bytes[])":{"params":{"_amount":"The Collateral by which to update the margin","_index":"The index of the trade","_pairIndex":"The index of the trading pair","_type":"Withdraw or Deposit","priceUpdateData":"Pyth price update"}},"updateOpenLimitOrder(uint256,uint256,uint256,uint256,uint256,uint256)":{"params":{"_index":"The index of the order","_pairIndex":"The index of the trading pair","_price":"The price level to set (_PRECISION)","_sl":"The stop-loss price","_tp":"The take-profit price"}},"updateTpAndSl(uint256,uint256,uint256,uint256,bytes[])":{"params":{"_index":"The index of the order","_newSl":"The new stop-loss price","_newTP":"The new take-profit price","_pairIndex":"The index of the trading pair","priceUpdateData":"Pyth price update data"}}},"version":1},"userdoc":{"kind":"user","methods":{"cancelOpenLimitOrder(uint256,uint256)":{"notice":"Cancels an open limit order"},"cancelPendingMarketOrder(uint256)":{"notice":"FallBack method in case unregister is not working directly"},"closeTradeMarket(uint256,uint256,uint256)":{"notice":"Closes a trade using market execution"},"executeLimitOrder(uint8,address,uint256,uint256,bytes[])":{"notice":"Executes a limit order (either open or close). Callable by Operators"},"executeMarketOrders(uint256[],bytes[])":{"notice":"Operator intiated method to close pending market orders"},"initialize(address,address)":{"notice":"Initializes the proxy"},"openTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint8,uint256)":{"notice":"Opens a new Market/Limit trade"},"pause()":{"notice":"Pauses the contract"},"setLimitOrdersTimelock(uint256)":{"notice":"Sets the time-lock for limit order updates"},"unpause()":{"notice":"Unpauses the contract"},"updateMargin(uint256,uint256,uint8,uint256,bytes[])":{"notice":"Updates(Deposit/Withdraw) the margin for an open trade"},"updateOpenLimitOrder(uint256,uint256,uint256,uint256,uint256,uint256)":{"notice":"Updates an open limit order"},"updateTpAndSl(uint256,uint256,uint256,uint256,bytes[])":{"notice":"Updates the take-profit and stop-loss for a open Trade"}},"version":1}},"settings":{"remappings":["@chainlink/=lib/chainlink/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","chainlink/=lib/chainlink/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","pyth-sdk-solidity/=lib/pyth-sdk-solidity/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Trading.sol":"Trading"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/security/PausableUpgradeable.sol":{"keccak256":"0x40c636b4572ff5f1dc50cf22097e93c0723ee14eff87e99ac2b02636eeca1250","urls":["bzz-raw://9c7d1f5e15633ab912b74c2f57e24559e66b03232300d4b27ff0f25bc452ecad","dweb:/ipfs/QmYTJkc1cntYkKQ1Tu11nBcJLakiy93Tjytc4XHELo4GmR"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"src/Delegatable.sol":{"keccak256":"0x477287e08d3524d8159b6bacd44885e74c33de41ba15b5ae4a3dd5874617add8","urls":["bzz-raw://6ae9077e3a965df9dbf02a66660a6dc702b834ec0bf116153ee97299f479cf92","dweb:/ipfs/QmciPUcoEDn5ouUV31QH5Geqin3v5vp9pABPK7p5d2QmUu"],"license":"MIT"},"src/Trading.sol":{"keccak256":"0xb344f4cb5b96b281bca51bb36628c7f54750901d11028d1c1dc6c5e6eff31128","urls":["bzz-raw://48eb16c48c95a3c91b0c30e9828ca9948b009fae7275dd149de9bc687398ca25","dweb:/ipfs/Qmb5hxwYQk8CM4dw9x9sEzPbKLNrPxn2a563cfWmwAY4dp"],"license":"MIT"},"src/interfaces/ICallbacks.sol":{"keccak256":"0xaf271d97c8c47e52d493b1bbb1d0fb51768d6c94ac59aedbc71f5885649fcc3c","urls":["bzz-raw://f3d0ae3efa5fd0448cc34d5c6166da6962186f7fa343490997f39ed593d4ab59","dweb:/ipfs/QmRbxqvpg8UToeEX7sGQrToxhZKLeEKvBczrnZ9Qg887Lt"],"license":"MIT"},"src/interfaces/IExecute.sol":{"keccak256":"0x9d34356818b64942ede2aca017517b9ba329093207a0e417469641436d298c88","urls":["bzz-raw://f3536e9511c45ade7bb3a5ee5545e414fe55c4d3fc05410987a81d2c1590ed4b","dweb:/ipfs/QmS5UbmedkTTnn2qYF5kz3xoEtQceaSpPMm4RdjQgf6isY"],"license":"MIT"},"src/interfaces/IPairInfos.sol":{"keccak256":"0x882f6c1b97ce23af4ab79a9d12d159ae177d6269fbbd1bc7b365786b8db1990a","urls":["bzz-raw://d3bd9136b25dd909dcbbfaee3f6c568bb8a94af552b52ddc3b0ea5a114d14048","dweb:/ipfs/QmeCBEEbuBe25rQWCndoJHdHM2tBYcPb8CUE4aJr4KQmAP"],"license":"MIT"},"src/interfaces/IPairStorage.sol":{"keccak256":"0xeec105aed668f80ae66ae314acfe07103f82a5e280fbf234fe2a36d3d67d5a59","urls":["bzz-raw://cca7c817e7d02629cb85cecc3312c9f4e9c1c22ecc2f0db80c25be9476ce7aff","dweb:/ipfs/QmcnmFawRf9ygBUVQaLW9BD5d2YMSU5dgnkJWRXRHbMuSs"],"license":"MIT"},"src/interfaces/IPausable.sol":{"keccak256":"0x0cf760757842bd332ce27fac78b8dc0f7a36406529a213954bc463c2be174ecd","urls":["bzz-raw://c69ee15b814b76caed732b47b729d1c2b361ed158b85220da30ea9aac893ad0e","dweb:/ipfs/QmbF9HWVA7DCtNzK2LkRdvhMV1TuqTf9dzUzAKwQadHZnY"],"license":"MIT"},"src/interfaces/IPriceAggregator.sol":{"keccak256":"0x21992c3c324abffac8ccb282a5b40569787b786dd79fdf0df1fed6a4bf99b375","urls":["bzz-raw://fcb2ead0eeaccfd87a1003e01de8fc0ce97b8365bc9021a9f210dcdcee331ffe","dweb:/ipfs/QmYXMuxPYKUbGSefB7c9AyTXxK7mS4hP9G4JL86mwANHnC"],"license":"MIT"},"src/interfaces/ITradingStorage.sol":{"keccak256":"0xa010a68fee744de912fbb3eddfb2012889ce22fa718b36cb5cecb90a51be8e8f","urls":["bzz-raw://4631c54588a7043a50e292fd3a84dcb7f25a27428759604c9d502a2469e56f1b","dweb:/ipfs/QmREpbXoV8Z4ZgoxVFpViBCFrmijMXtBY2gDLfFGD7zD1S"],"license":"MIT"},"src/interfaces/IVaultManager.sol":{"keccak256":"0xa8ccf68fc5846dd0a638f7c337289d7a90b121ada4eb61802be4ff428319dd8e","urls":["bzz-raw://de750a9805572838bfd630e9ae20f192f8d8a2d53226728aaf32ecd229e8cdb4","dweb:/ipfs/Qmdqj88ry3c1AjABjY3D5PNvE84SXxDoj3M3JLDi8Zz5BS"],"license":"MIT"},"src/library/PositionMath.sol":{"keccak256":"0x02b855130b30da5e71c143006945ae31208082628e64720633c378029c42333c","urls":["bzz-raw://a449300eedf6e864ef54e9e7d4c5d2e4c295f62d6a41925a3af33a0fb643b15c","dweb:/ipfs/QmT6regWhrbyUUBui1ZLuW5DGfUFuCHpCVHQUxv9qbMVu1"],"license":"MIT"}},"version":1},"id":111}
|
|
1
|
+
{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"_MAX_SLIPPAGE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"__msgSender","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"cancelOpenLimitOrder","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelPendingMarketOrder","inputs":[{"name":"_id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeTradeMarket","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"orderId","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"delegatedAction","inputs":[{"name":"trader","type":"address","internalType":"address"},{"name":"call_data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"},{"type":"function","name":"delegations","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"executeLimitOrder","inputs":[{"name":"_orderType","type":"uint8","internalType":"enum ITradingStorage.LimitOrder"},{"name":"_trader","type":"address","internalType":"address"},{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"priceUpdateData","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeMarketOrders","inputs":[{"name":"orderId","type":"uint256[]","internalType":"uint256[]"},{"name":"priceUpdateData","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"initialize","inputs":[{"name":"_storageT","type":"address","internalType":"address"},{"name":"_pairInfos","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isOperator","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"limitOrdersTimelock","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"openTrade","inputs":[{"name":"t","type":"tuple","internalType":"struct ITradingStorage.Trade","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"initialPosToken","type":"uint256","internalType":"uint256"},{"name":"positionSizeUSDC","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"}]},{"name":"_type","type":"uint8","internalType":"enum IExecute.OpenLimitOrderType"},{"name":"_slippageP","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"orderId","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"operator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pairInfos","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPairInfos"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"removeDelegate","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDelegate","inputs":[{"name":"delegate","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setLimitOrdersTimelock","inputs":[{"name":"_blocks","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMarketExecFeeReciever","inputs":[{"name":"_reciever","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"storageT","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ITradingStorage"}],"stateMutability":"view"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateMargin","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_type","type":"uint8","internalType":"enum ITradingStorage.updateType"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"priceUpdateData","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"orderId","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"updateOpenLimitOrder","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_slippageP","type":"uint256","internalType":"uint256"},{"name":"_tp","type":"uint256","internalType":"uint256"},{"name":"_sl","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperator","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_isOperator","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateTpAndSl","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_newSl","type":"uint256","internalType":"uint256"},{"name":"_newTP","type":"uint256","internalType":"uint256"},{"name":"priceUpdateData","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"LimitOrderInitiated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MarginUpdated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_type","type":"uint8","indexed":false,"internalType":"enum ITradingStorage.updateType"},{"name":"newTrade","type":"tuple","indexed":false,"internalType":"struct ITradingStorage.Trade","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"initialPosToken","type":"uint256","internalType":"uint256"},{"name":"positionSizeUSDC","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"}]},{"name":"marginFees","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lossProtectionTier","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MarketOrderInitiated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"open","type":"bool","indexed":false,"internalType":"bool"},{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"isBuy","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"NumberUpdated","inputs":[{"name":"name","type":"string","indexed":false,"internalType":"string"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OpenLimitCanceled","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"collateral","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OpenLimitPlaced","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"isBuy","type":"bool","indexed":false,"internalType":"bool"},{"name":"openPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"executionFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"orderType","type":"uint8","indexed":false,"internalType":"enum IExecute.OpenLimitOrderType"},{"name":"slippageP","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"collateral","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OpenLimitUpdated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newTp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newSl","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUpdated","inputs":[{"name":"operator","type":"address","indexed":false,"internalType":"address"},{"name":"isOperator","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SlUpdateInitiated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newSl","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlUpdated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newSl","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TpUpdated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newTp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615ef180620000f36000396000f3fe60806040526004361061019c5760003560e01c80636d70f7ae116100ec578063c48a02a21161008a578063ca5eb5e111610064578063ca5eb5e11461047f578063cd90b8a4146104c9578063d1a91ff2146104dc578063d4a1caa7146104f157600080fd5b8063c48a02a214610426578063c5ed6a081461043f578063c641558e1461045f57600080fd5b80639e2033f5116100c65780639e2033f51461039d578063b9b6573a146103bd578063bffe3486146103dd578063c0b4d24d1461041357600080fd5b80636d70f7ae146103385780638456cb59146103685780639a10cc321461037d57600080fd5b806336fb8b1511610159578063485cc95511610133578063485cc955146102b4578063570ca735146102d45780635c975abb146102f45780636d44a3b21461031857600080fd5b806336fb8b151461025d5780633f4ba83a1461028c57806346f6c8f5146102a157600080fd5b80630890d22a146101a15780631346b0ff146101ca57806315b760b11461020257806316fff0741461021757806319cde9a1146102375780632c3cbce41461024a575b600080fd5b3480156101ad57600080fd5b506101b760695481565b6040519081526020015b60405180910390f35b3480156101d657600080fd5b506068546101ea906001600160a01b031681565b6040516001600160a01b0390911681526020016101c1565b6102156102103660046156da565b610511565b005b34801561022357600080fd5b506067546101ea906001600160a01b031681565b6101b761024536600461551a565b61053f565b6101b76102583660046156ae565b61176c565b34801561026957600080fd5b5061021533600090815260656020526040902080546001600160a01b0319169055565b34801561029857600080fd5b506102156121f9565b6102156102af3660046152d1565b6122b9565b3480156102c057600080fd5b506102156102cf36600461513f565b612d34565b3480156102e057600080fd5b50606a546101ea906001600160a01b031681565b34801561030057600080fd5b5060335460ff165b60405190151581526020016101c1565b34801561032457600080fd5b50610215610333366004615178565b612e7c565b34801561034457600080fd5b506103086103533660046150fe565b606b6020526000908152604090205460ff1681565b34801561037457600080fd5b50610215612f95565b61039061038b3660046151a6565b613053565b6040516101c191906158f2565b3480156103a957600080fd5b506102156103b83660046150fe565b61318e565b3480156103c957600080fd5b506102156103d8366004615633565b6132ab565b3480156103e957600080fd5b506101ea6103f83660046150fe565b6065602052600090815260409020546001600160a01b031681565b61021561042136600461522b565b6134e4565b34801561043257600080fd5b506101b764ba43b7400081565b34801561044b57600080fd5b5061021561045a366004615601565b613638565b34801561046b57600080fd5b5061021561047a366004615726565b6136c1565b34801561048b57600080fd5b5061021561049a3660046150fe565b33600090815260656020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6101b76104d7366004615655565b61396c565b3480156104e857600080fd5b506101ea6142e3565b3480156104fd57600080fd5b5061021561050c366004615601565b61430b565b61051961445f565b6105248686856144a5565b801561053757610537868686858561476b565b505050505050565b600061054961445f565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b15801561058e57600080fd5b505afa1580156105a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c69190615122565b90506000816001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561060357600080fd5b505afa158015610617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063b9190615122565b9050606760009054906101000a90046001600160a01b03166001600160a01b0316638049fde76040518163ffffffff1660e01b815260040160206040518083038186803b15801561068b57600080fd5b505afa15801561069f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c3919061561a565b6067546001600160a01b031663f7b3c6fd6106dc6142e3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b15801561071b57600080fd5b505afa15801561072f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610753919061561a565b1061079a5760405162461bcd60e51b81526020600482015260126024820152714d41585f50454e44494e475f4f524445525360701b60448201526064015b60405180910390fd5b606760009054906101000a90046001600160a01b03166001600160a01b031663f65d9dbe6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107e857600080fd5b505afa1580156107fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610820919061561a565b6067546001600160a01b03166397e7995a6108396142e3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208a0135602482015260440160206040518083038186803b15801561088257600080fd5b505afa158015610896573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ba919061561a565b6067546001600160a01b0316639c8912f16108d36142e3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208b0135602482015260440160206040518083038186803b15801561091c57600080fd5b505afa158015610930573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610954919061561a565b6067546001600160a01b0316631c8636b461096d6142e3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208c0135602482015260440160206040518083038186803b1580156109b657600080fd5b505afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee919061561a565b6109f89190615d65565b610a029190615d65565b10610a455760405162461bcd60e51b815260206004820152601360248201527226a0ac2faa2920a222a9afa822a92fa820a4a960691b6044820152606401610791565b60405163238cd23f60e01b8152602087013560048201526001600160a01b0382169063238cd23f9060240160206040518083038186803b158015610a8857600080fd5b505afa158015610a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac0919061561a565b610ad2608088013560e0890135614e7a565b1015610b105760405162461bcd60e51b815260206004820152600d60248201526c42454c4f575f4d494e5f504f5360981b6044820152606401610791565b6101008601351580610b4f5750610b2d60e0870160c08801615297565b610b42578560a0013586610100013510610b4f565b8560a00135866101000135115b610b865760405162461bcd60e51b8152602060048201526008602482015267057524f4e475f54560c41b6044820152606401610791565b6101208601351580610bc55750610ba360e0870160c08801615297565b610bb8578560a0013586610120013511610bc5565b8560a00135866101200135105b610bfc5760405162461bcd60e51b815260206004820152600860248201526715d493d391d7d4d360c21b6044820152606401610791565b64ba43b740008410610c435760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f534c49505041474560801b6044820152606401610791565b6000856003811115610c5757610c57615e36565b14158015610c7757506003856003811115610c7457610c74615e36565b14155b156111305760008660e00135118015610d155750604051634cadbb2b60e11b815260208701356004820152600060248201526001600160a01b0382169063995b76569060440160206040518083038186803b158015610cd557600080fd5b505afa158015610ce9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0d919061561a565b8660e0013510155b8015610da65750604051639b2f6cab60e01b815260208701356004820152600060248201526001600160a01b03821690639b2f6cab9060440160206040518083038186803b158015610d6657600080fd5b505afa158015610d7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9e919061561a565b8660e0013511155b610dc25760405162461bcd60e51b815260040161079190615927565b6067546001600160a01b0316638b83351a610ddb6142e3565b60675460405160e084901b6001600160e01b03191681526001600160a01b0392831660048201529116602482015260808901356044820152606401600060405180830381600087803b158015610e3057600080fd5b505af1158015610e44573d6000803e3d6000fd5b5050606754600092506001600160a01b031690506344d44f5a610e656142e3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208a0135602482015260440160206040518083038186803b158015610eae57600080fd5b505afa158015610ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee6919061561a565b6067546040805161018081019091529192506001600160a01b03169063fdb153e29080610f116142e3565b6001600160a01b0316815260208b81013590820152604081018590526080808c0135606083015201610f4960e08c0160c08d01615297565b151581526020018a60e0013581526020018a610100013581526020018a610120013581526020018a60a00135815260200188815260200143815260200160008152506040518263ffffffff1660e01b8152600401610fa79190615a0f565b600060405180830381600087803b158015610fc157600080fd5b505af1158015610fd5573d6000803e3d6000fd5b50505050826001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b15801561101257600080fd5b505afa158015611026573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104a9190615122565b6001600160a01b031663ec5706106110606142e3565b8960200135848a6040518563ffffffff1660e01b815260040161108694939291906158bc565b600060405180830381600087803b1580156110a057600080fd5b505af11580156110b4573d6000803e3d6000fd5b505050506110c06142e3565b6001600160a01b03167f174df203b38fe4bbf31688bea280abf3c60a2d5a4214fdf30984abdcf6f15fca60208901358361110060e08c0160c08d01615297565b8b60a0013560008c8c8f60800135604051611122989796959493929190615c7f565b60405180910390a2506116c6565b60008660e001351180156111e457506001600160a01b03811663995b76566020880135600388600381111561116757611167615e36565b6040516001600160e01b031960e086901b168152600481019390935214602482015260440160206040518083038186803b1580156111a457600080fd5b505afa1580156111b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc919061561a565b8660e0013510155b801561129057506001600160a01b038116639b2f6cab6020880135600388600381111561121357611213615e36565b6040516001600160e01b031960e086901b168152600481019390935214602482015260440160206040518083038186803b15801561125057600080fd5b505afa158015611264573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611288919061561a565b8660e0013511155b6112ac5760405162461bcd60e51b815260040161079190615927565b60038560038111156112c0576112c0615e36565b141561138557604051631fca5ed960e01b8152602087013560048201526001600160a01b03821690631fca5ed99060240160206040518083038186803b15801561130957600080fd5b505afa15801561131d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134191906152b4565b6113855760405162461bcd60e51b815260206004820152601560248201527414139317d3d491115497d393d517d0531313d5d151605a1b6044820152606401610791565b6067546001600160a01b0316638b83351a61139e6142e3565b60675460405160e084901b6001600160e01b03191681526001600160a01b0392831660048201529116602482015260808901356044820152606401600060405180830381600087803b1580156113f357600080fd5b505af1158015611407573d6000803e3d6000fd5b5060009250611414915050565b85600381111561142657611426615e36565b146114b55760405163302809fd60e21b81526001600160a01b0383169063c0a027f49061145e9060208a013590600690600401615be9565b602060405180830381600087803b15801561147857600080fd5b505af115801561148c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b0919061561a565b61153a565b60405163302809fd60e21b81526001600160a01b0383169063c0a027f4906114e89060208a013590600090600401615be9565b602060405180830381600087803b15801561150257600080fd5b505af1158015611516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153a919061561a565b606754604080516101e081019091529194506001600160a01b03169063d8137fe89080608081018061156a6142e3565b6001600160a01b031681526020018b60200135815260200160008152602001600081526020018b608001358152602001600081526020018b60c00160208101906115b49190615297565b151581526020018b60e0013581526020018b610100013581526020018b6101200135815260200160008152508152602001600081526020018960a001358152602001878152508560016040518463ffffffff1660e01b815260040161161b93929190615ac2565b600060405180830381600087803b15801561163557600080fd5b505af1158015611649573d6000803e3d6000fd5b505050506116556142e3565b6001600160a01b03167fe9092f5bd9dedfcde131b74a84f9c41981d96f1114420e39a57d92d9324ee07660208801356001864261169860e08d0160c08e01615297565b6040805195865293151560208601529284019190915260608301521515608082015260a00160405180910390a25b606a546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611713576040519150601f19603f3d011682016040523d82523d6000602084013e611718565b606091505b50509050806117625760405162461bcd60e51b815260206004820152601660248201527511561150d5551253d397d1915157d393d517d4d1539560521b6044820152606401610791565b5050509392505050565b600061177661445f565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b1580156117bb57600080fd5b505afa1580156117cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f39190615122565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561182b57600080fd5b505afa15801561183f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118639190615122565b606a546040519192506000916001600160a01b039091169034908381818185875af1925050503d80600081146118b5576040519150601f19603f3d011682016040523d82523d6000602084013e6118ba565b606091505b50509050806119045760405162461bcd60e51b815260206004820152601660248201527511561150d5551253d397d1915157d393d517d4d1539560521b6044820152606401610791565b6067546000906001600160a01b031663a3a80ffe6119206142e3565b89896040518463ffffffff1660e01b81526004016119409392919061589b565b6101606040518083038186803b15801561195957600080fd5b505afa15801561196d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119919190615564565b6067549091506000906001600160a01b0316638c8ff1d56119b06142e3565b8a8a6040518463ffffffff1660e01b81526004016119d09392919061589b565b60a06040518083038186803b1580156119e857600080fd5b505afa1580156119fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2091906154a2565b6060015190508160600151861115611a675760405162461bcd60e51b815260206004820152600a60248201526912539597d05353d5539560b21b6044820152606401610791565b606760009054906101000a90046001600160a01b03166001600160a01b0316638049fde76040518163ffffffff1660e01b815260040160206040518083038186803b158015611ab557600080fd5b505afa158015611ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aed919061561a565b6067546001600160a01b031663f7b3c6fd611b066142e3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b158015611b4557600080fd5b505afa158015611b59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7d919061561a565b10611bbf5760405162461bcd60e51b81526020600482015260126024820152714d41585f50454e44494e475f4f524445525360701b6044820152606401610791565b8015611c045760405162461bcd60e51b81526020600482015260146024820152731053149150511657d091525391d7d0d313d4d15160621b6044820152606401610791565b60008260e0015111611c285760405162461bcd60e51b815260040161079190615905565b836001600160a01b031663737113b589611c4f8560e001518a614e7a90919063ffffffff16565b6040516001600160e01b031960e085901b1681526004810192909252602482015260440160206040518083038186803b158015611c8b57600080fd5b505afa158015611c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc3919061561a565b610140830151611cd39042615dbe565b1015611d0f5760405162461bcd60e51b815260206004820152600b60248201526a4541524c595f434c4f534560a81b6044820152606401610791565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b158015611d5457600080fd5b505afa158015611d68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8c9190615122565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015611dc457600080fd5b505afa158015611dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfc9190615122565b6001600160a01b031663c5f5951a611e126142e3565b8b8b6040518463ffffffff1660e01b8152600401611e329392919061589b565b60206040518083038186803b158015611e4a57600080fd5b505afa158015611e5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8291906152b4565b905080611f9457606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015611ed757600080fd5b505afa158015611eeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0f9190615122565b6001600160a01b031663c0a027f48a60016040518363ffffffff1660e01b8152600401611f3d929190615be9565b602060405180830381600087803b158015611f5757600080fd5b505af1158015611f6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8f919061561a565b61209a565b606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015611fe257600080fd5b505afa158015611ff6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201a9190615122565b6001600160a01b031663c0a027f48a60076040518363ffffffff1660e01b8152600401612048929190615be9565b602060405180830381600087803b15801561206257600080fd5b505af1158015612076573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209a919061561a565b606754604080516101e081019091529197506001600160a01b03169063d8137fe8908060808101806120ca6142e3565b6001600160a01b031681526020018e81526020018d81526020018c8152602001600081526020016000815260200160001515815260200160008152602001600081526020016000815260200160008152508152602001600081526020016000815260200160008152508860006040518463ffffffff1660e01b815260040161215493929190615ac2565b600060405180830381600087803b15801561216e57600080fd5b505af1158015612182573d6000803e3d6000fd5b5050505061218e6142e3565b60c0840151604080518c8152600060208201528082018a90524260608201529115156080830152516001600160a01b0392909216917fe9092f5bd9dedfcde131b74a84f9c41981d96f1114420e39a57d92d9324ee0769181900360a00190a250505050509392505050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561224757600080fd5b505afa15801561225b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227f9190615122565b6001600160a01b0316336001600160a01b0316146122af5760405162461bcd60e51b8152600401610791906159ed565b6122b7614e9f565b565b6122c161445f565b336000908152606b602052604090205460ff166122f05760405162461bcd60e51b81526004016107919061597b565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b15801561233557600080fd5b505afa158015612349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236d9190615122565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156123a557600080fd5b505afa1580156123b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123dd9190615122565b905060038760038111156123f3576123f3615e36565b14156124b957606754604051636e6f99cd60e11b81526001600160a01b039091169063dcdf339a9061242d9089908990899060040161589b565b60206040518083038186803b15801561244557600080fd5b505afa158015612459573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247d91906152b4565b6124b45760405162461bcd60e51b81526020600482015260086024820152671393d7d31253525560c21b6044820152606401610791565b612819565b6067546040516351d407ff60e11b81526000916001600160a01b03169063a3a80ffe906124ee908a908a908a9060040161589b565b6101606040518083038186803b15801561250757600080fd5b505afa15801561251b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253f9190615564565b905060008160e00151116125655760405162461bcd60e51b815260040161079190615905565b600188600381111561257957612579615e36565b14158061258b57506000816101200151115b6125bf5760405162461bcd60e51b81526020600482015260056024820152641393d7d4d360da1b6044820152606401610791565b60028860038111156125d3576125d3615e36565b141561270e576068548151602083015160408085015160a086015160c0870151606088015160e08901519451636bc84d5960e01b81526001600160a01b0397881660048201526024810196909652604486019390935260648501919091521515608484015260a483015260c48201526000929190911690636bc84d599060e40160206040518083038186803b15801561266b57600080fd5b505afa15801561267f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126a3919061561a565b9050816101200151600014806126d357508160c001516126ca5781610120015181106126d3565b81610120015181115b6127085760405162461bcd60e51b8152602060048201526006602482015265121054d7d4d360d21b6044820152606401610791565b50612817565b600088600381111561272257612722615e36565b141561281757816001600160a01b031663737113b582602001516127578460e001518560600151614e7a90919063ffffffff16565b6040516001600160e01b031960e085901b1681526004810192909252602482015260440160206040518083038186803b15801561279357600080fd5b505afa1580156127a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127cb919061561a565b6101408201516127db9042615dbe565b10156128175760405162461bcd60e51b815260206004820152600b60248201526a4541524c595f434c4f534560a81b6044820152606401610791565b505b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b15801561285e57600080fd5b505afa158015612872573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128969190615122565b90506000816001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b1580156128d357600080fd5b505afa1580156128e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061290b9190615122565b9050600060405180608001604052808a6001600160a01b031681526020018981526020018881526020018b600381111561294757612947615e36565b81525090506000606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561299c57600080fd5b505afa1580156129b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d49190615122565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015612a0c57600080fd5b505afa158015612a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a449190615122565b6001600160a01b031663c5f5951a8b8b8b6040518463ffffffff1660e01b8152600401612a739392919061589b565b60206040518083038186803b158015612a8b57600080fd5b505afa158015612a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac391906152b4565b905060006001600160a01b03851663c0a027f48b60038f6003811115612aeb57612aeb615e36565b14612b035784612afc576003612b06565b6008612b06565b60025b6040518363ffffffff1660e01b8152600401612b23929190615be9565b602060405180830381600087803b158015612b3d57600080fd5b505af1158015612b51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b75919061561a565b606754604080516080810182526001600160a01b038f81168252602082018f90529181018d9052929350169063d775d54890606081018f6003811115612bbd57612bbd615e36565b815250836040518363ffffffff1660e01b8152600401612bde929190615aa7565b600060405180830381600087803b158015612bf857600080fd5b505af1158015612c0c573d6000803e3d6000fd5b50505050836001600160a01b031663c23c886c84612c286142e3565b6040518363ffffffff1660e01b8152600401612c45929190615b1c565b600060405180830381600087803b158015612c5f57600080fd5b505af1158015612c73573d6000803e3d6000fd5b5050604080518d815260208101859052428183015290516001600160a01b038f1693507fd0ac65cbccd4e7062356a9be37735153d991bdc4de08f024a8fffc0600f7048892509081900360600190a260405163dd2f3c0560e01b81526001600160a01b0386169063dd2f3c05903490612cf49085908d908d90600401615b42565b6000604051808303818588803b158015612d0d57600080fd5b505af1158015612d21573d6000803e3d6000fd5b5050505050505050505050505050505050565b600054610100900460ff1615808015612d545750600054600160ff909116105b80612d6e5750303b158015612d6e575060005460ff166001145b612dd15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610791565b6000805460ff191660011790558015612df4576000805461ff0019166101001790555b606780546001600160a01b038086166001600160a01b03199283161790925560688054928516929091169190911790556002606955612e31614ef1565b8015612e77576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015612eca57600080fd5b505afa158015612ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f029190615122565b6001600160a01b0316336001600160a01b031614612f325760405162461bcd60e51b8152600401610791906159ed565b6001600160a01b0382166000818152606b6020908152604091829020805460ff19168515159081179091558251938452908301527f966c160e1c4dbc7df8d69af4ace01e9297c3cf016397b7914971f2fbfa32672d910160405180910390a15050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015612fe357600080fd5b505afa158015612ff7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061301b9190615122565b6001600160a01b0316336001600160a01b03161461304b5760405162461bcd60e51b8152600401610791906159ed565b6122b7614f20565b6001600160a01b038381166000908152606560205260409020546060911633146130b75760405162461bcd60e51b81526020600482015260156024820152741111531151d0551157d393d517d054141493d59151605a1b6044820152606401610791565b606680546001600160a01b0319166001600160a01b038616179055604051600090819030906130e9908790879061588b565b600060405180830381855af49150503d8060008114613124576040519150601f19603f3d011682016040523d82523d6000602084013e613129565b606091505b5091509150816131755760448151101561314257600080fd5b6004810190508080602001905181019061315c919061534d565b60405162461bcd60e51b815260040161079191906158f2565b606680546001600160a01b031916905595945050505050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156131dc57600080fd5b505afa1580156131f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132149190615122565b6001600160a01b0316336001600160a01b0316146132445760405162461bcd60e51b8152600401610791906159ed565b6001600160a01b0381166132895760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610791565b606a80546001600160a01b0319166001600160a01b0392909216919091179055565b6132b361445f565b6067546000906001600160a01b031663b8878a2c6132cf6142e3565b85856040518463ffffffff1660e01b81526004016132ef9392919061589b565b6101806040518083038186803b15801561330857600080fd5b505afa15801561331c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334091906153fa565b9050606954816101400151436133569190615dbe565b10156133745760405162461bcd60e51b815260040161079190615953565b6067546001600160a01b0316638b83351a8161338e6142e3565b84610160015185606001516133a39190615d65565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b1580156133f257600080fd5b505af1158015613406573d6000803e3d6000fd5b50506067546001600160a01b0316915063b4b0f56790506134256142e3565b85856040518463ffffffff1660e01b81526004016134459392919061589b565b600060405180830381600087803b15801561345f57600080fd5b505af1158015613473573d6000803e3d6000fd5b5050505061347f6142e3565b6001600160a01b03167f99b2cab0fe1db813d380331f51c117d5622d07c79686cc4ecd043e8d56ace09484844285606001516040516134d7949392919093845260208401929092526040830152606082015260800190565b60405180910390a2505050565b336000908152606b602052604090205460ff166135135760405162461bcd60e51b81526004016107919061597b565b60005b8381101561363157606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561356c57600080fd5b505afa158015613580573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135a49190615122565b6001600160a01b031663dd2f3c05348787858181106135c5576135c5615e4c565b9050602002013586866040518563ffffffff1660e01b81526004016135ec93929190615b42565b6000604051808303818588803b15801561360557600080fd5b505af1158015613619573d6000803e3d6000fd5b5050505050808061362990615e05565b915050613516565b5050505050565b336000908152606b602052604090205460ff166136675760405162461bcd60e51b81526004016107919061597b565b606754604051630d32c90760e01b8152600481018390526001600160a01b0390911690630d32c90790602401600060405180830381600087803b1580156136ad57600080fd5b505af1158015613631573d6000803e3d6000fd5b6136c961445f565b6067546000906001600160a01b031663b8878a2c6136e56142e3565b89896040518463ffffffff1660e01b81526004016137059392919061589b565b6101806040518083038186803b15801561371e57600080fd5b505afa158015613732573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375691906153fa565b90506069548161014001514361376c9190615dbe565b101561378a5760405162461bcd60e51b815260040161079190615953565b8215806137a7575080608001516137a3578285116137a7565b8285105b6137de5760405162461bcd60e51b8152602060048201526008602482015267057524f4e475f54560c41b6044820152606401610791565b8115806137fb575080608001516137f7578185106137fb565b8185115b6138325760405162461bcd60e51b815260206004820152600860248201526715d493d391d7d4d360c21b6044820152606401610791565b64ba43b7400084106138795760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f534c49505041474560801b6044820152606401610791565b6101008101859052610120810184905260c0810183905260e0810182905260675460405163574564a760e11b81526001600160a01b039091169063ae8ac94e906138c7908490600401615a0f565b600060405180830381600087803b1580156138e157600080fd5b505af11580156138f5573d6000803e3d6000fd5b505050506139016142e3565b604080518981526020810189905290810187905260608101859052608081018490524260a08201526001600160a01b0391909116907f710a8db87f04e82a9de40076812593a965f4aa48693196d2144c07ff9710e8909060c00160405180910390a250505050505050565b600061397661445f565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b1580156139bb57600080fd5b505afa1580156139cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f39190615122565b6067549091506000906001600160a01b031663a3a80ffe613a126142e3565b8b8b6040518463ffffffff1660e01b8152600401613a329392919061589b565b6101606040518083038186803b158015613a4b57600080fd5b505afa158015613a5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a839190615564565b6067549091506000906001600160a01b0316638c8ff1d5613aa26142e3565b8c8c6040518463ffffffff1660e01b8152600401613ac29392919061589b565b60a06040518083038186803b158015613ada57600080fd5b505afa158015613aee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b1291906154a2565b9050806060015115613b5d5760405162461bcd60e51b81526020600482015260146024820152731053149150511657d091525391d7d0d313d4d15160621b6044820152606401610791565b60008260e0015111613b815760405162461bcd60e51b815260040161079190615905565b6068548251602084015160408086015160c0870151606088015160e08901519351630284c13960e11b81526001600160a01b0396871660048201526024810195909552604485019290925215156064840152608483015260a4820152600092919091169063050982729060c40160206040518083038186803b158015613c0657600080fd5b505afa158015613c1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c3e919061561a565b60405163302809fd60e21b81529091506001600160a01b0385169063c0a027f490613c6f908e906004908101615be9565b602060405180830381600087803b158015613c8957600080fd5b505af1158015613c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cc1919061561a565b9450836001600160a01b031663cbe91bd986604051806101000160405280613ce76142e3565b6001600160a01b031681526020018f81526020018e81526020018d6001811115613d1357613d13615e36565b81526020018c8152602001866080015181526020018581526020018760e001518152506040518363ffffffff1660e01b8152600401613d53929190615c0d565b600060405180830381600087803b158015613d6d57600080fd5b505af1158015613d81573d6000803e3d6000fd5b50505050613d9a826000015184606001518b8b85614f5d565b606085015260e084015260675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b158015613de957600080fd5b505afa158015613dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e219190615122565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015613e5957600080fd5b505afa158015613e6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e919190615122565b6001600160a01b031663c5f5951a613ea76142e3565b8e8e6040518463ffffffff1660e01b8152600401613ec79392919061589b565b60206040518083038186803b158015613edf57600080fd5b505afa158015613ef3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f1791906152b4565b9050808015613f37575060018a6001811115613f3557613f35615e36565b145b15613f725760405162461bcd60e51b815260206004820152600b60248201526a1393d517d0531313d5d15160aa1b6044820152606401610791565b60008460e001511180156140825750846001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015613fba57600080fd5b505afa158015613fce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ff29190615122565b6020850151604051634cadbb2b60e11b8152600481019190915282151560248201526001600160a01b03919091169063995b76569060440160206040518083038186803b15801561404257600080fd5b505afa158015614056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061407a919061561a565b8460e0015110155b801561418a5750846001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156140c257600080fd5b505afa1580156140d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140fa9190615122565b6020850151604051639b2f6cab60e01b8152600481019190915282151560248201526001600160a01b039190911690639b2f6cab9060440160206040518083038186803b15801561414a57600080fd5b505afa15801561415e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614182919061561a565b8460e0015111155b6141a65760405162461bcd60e51b815260040161079190615927565b6141ae6142e3565b6001600160a01b03167f48452067591e9581b9c1f3135e16ae22829a7c8afc6b3d6a1afa2cd295cc11338d8d8d88878960800151426040516141f69796959493929190615ccd565b60405180910390a260675460405163f0cb9b1160e01b81526001600160a01b039091169063f0cb9b119061422e908790600401615b0d565b600060405180830381600087803b15801561424857600080fd5b505af115801561425c573d6000803e3d6000fd5b505060405163dd2f3c0560e01b81526001600160a01b038816925063dd2f3c0591503490614292908a908d908d90600401615b42565b6000604051808303818588803b1580156142ab57600080fd5b505af11580156142bf573d6000803e3d6000fd5b50505050506142d48c8c8661010001516144a5565b50505050509695505050505050565b6066546000906001600160a01b03166142fb57503390565b506066546001600160a01b031690565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561435957600080fd5b505afa15801561436d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143919190615122565b6001600160a01b0316336001600160a01b0316146143c15760405162461bcd60e51b8152600401610791906159ed565b600081116143fb5760405162461bcd60e51b8152602060048201526007602482015266056414c55455f360cc1b6044820152606401610791565b606981905560408051818152601381830152726c696d69744f726465727354696d656c6f636b60681b60608201526020810183905290517f8cf3e35f6221b16e1670a3413180c9484bf5aa71787905909fa82a6a2662e9ab9181900360800190a150565b60335460ff16156122b75760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610791565b6067546000906001600160a01b031663a3a80ffe6144c16142e3565b86866040518463ffffffff1660e01b81526004016144e19392919061589b565b6101606040518083038186803b1580156144fa57600080fd5b505afa15801561450e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145329190615564565b60e001516067549091506000906001600160a01b0316638c8ff1d56145556142e3565b87876040518463ffffffff1660e01b81526004016145759392919061589b565b60a06040518083038186803b15801561458d57600080fd5b505afa1580156145a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145c591906154a2565b602001519050600082116145eb5760405162461bcd60e51b815260040161079190615905565b6069546145f88243615dbe565b10156146165760405162461bcd60e51b815260040161079190615953565b6001600160ff1b03831061465b5760405162461bcd60e51b815260206004820152600c60248201526b0494e434f52524543545f54560a41b6044820152606401610791565b6067546000906001600160a01b0316637fdb96f36146776142e3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018990526044810188905260648101879052608401602060405180830381600087803b1580156146cd57600080fd5b505af11580156146e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614705919061561a565b905061470f6142e3565b60408051888152602081018890529081018390524260608201526001600160a01b0391909116907f01c13b316ce9327f58f220b36e368c197eda79df0102d7f4363f1e7fe29323e89060800160405180910390a2505050505050565b6067546000906001600160a01b031663a3a80ffe6147876142e3565b88886040518463ffffffff1660e01b81526004016147a79392919061589b565b6101606040518083038186803b1580156147c057600080fd5b505afa1580156147d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147f89190615564565b6067549091506000906001600160a01b0316638c8ff1d56148176142e3565b89896040518463ffffffff1660e01b81526004016148379392919061589b565b60a06040518083038186803b15801561484f57600080fd5b505afa158015614863573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061488791906154a2565b60400151905060008260e00151116148b15760405162461bcd60e51b815260040161079190615905565b6001600160ff1b0385106148f65760405162461bcd60e51b815260206004820152600c60248201526b125390d3d4949150d517d4d360a21b6044820152606401610791565b60006149238360e00151606460508660a001516149139190615d9f565b61491d9190615d7d565b90615009565b905085158061496257508260c0015161494e57808360a001516149469190615d65565b861115614962565b808360a0015161495e9190615dbe565b8610155b61499b5760405162461bcd60e51b815260206004820152600a602482015269534c5f544f4f5f42494760b01b6044820152606401610791565b6069546149a88343615dbe565b10156149c65760405162461bcd60e51b815260040161079190615953565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b158015614a0b57600080fd5b505afa158015614a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a439190615122565b9050861580614b3d5750806001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015614a8657600080fd5b505afa158015614a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614abe9190615122565b6001600160a01b03166324abd3fb8a6040518263ffffffff1660e01b8152600401614aeb91815260200190565b60206040518083038186803b158015614b0357600080fd5b505afa158015614b17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b3b91906152b4565b155b15614c2a576067546001600160a01b031663a3544181614b5b6142e3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018c9052604481018b9052606481018a9052608401600060405180830381600087803b158015614bb157600080fd5b505af1158015614bc5573d6000803e3d6000fd5b50505050614bd16142e3565b604080518b8152602081018b90529081018990524260608201526001600160a01b0391909116907f6a750d0aaea2df37b3b72b79412df54b9e55109ccfaedf5dcecc2af9993a61de9060800160405180910390a2614e6f565b60405163302809fd60e21b81526000906001600160a01b0383169063c0a027f490614c5c908d90600590600401615be9565b602060405180830381600087803b158015614c7657600080fd5b505af1158015614c8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614cae919061561a565b9050816001600160a01b031663b8213bfa826040518060c00160405280614cd36142e3565b6001600160a01b031681526020018e81526020018d81526020018960a0015181526020018960c00151151581526020018c8152506040518363ffffffff1660e01b8152600401614d74929190600060e08201905083825260018060a01b0383511660208301526020830151604083015260408301516060830152606083015160808301526080830151151560a083015260a083015160c08301529392505050565b600060405180830381600087803b158015614d8e57600080fd5b505af1158015614da2573d6000803e3d6000fd5b50505050614dae6142e3565b604080518c8152602081018c90529081018a9052606081018390524260808201526001600160a01b0391909116907fb24bbc82fd04bd3dab7c96c1cabc7a0f7a1a87dfa2b47239926fbde0a0bfa8be9060a00160405180910390a260405163dd2f3c0560e01b81526001600160a01b0383169063dd2f3c05903490614e3b9085908c908c90600401615b42565b6000604051808303818588803b158015614e5457600080fd5b505af1158015614e68573d6000803e3d6000fd5b5050505050505b505050505050505050565b60006402540be400614e8c8385615d9f565b614e969190615d7d565b90505b92915050565b614ea761501b565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600054610100900460ff16614f185760405162461bcd60e51b8152600401610791906159a2565b6122b7615064565b614f2861445f565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258614ed43390565b60008080856001811115614f7357614f73615e36565b1415614fb15782614f848588615d65565b614f8e9190615dbe565b905080614fa06402540be40089615d9f565b614faa9190615d7d565b9150614fff565b6001856001811115614fc557614fc5615e36565b1415614fff5782614fd68588615dbe565b614fe09190615dbe565b905080614ff26402540be40089615d9f565b614ffc9190615d7d565b91505b9550959350505050565b600081614e8c6402540be40085615d9f565b60335460ff166122b75760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610791565b600054610100900460ff1661508b5760405162461bcd60e51b8152600401610791906159a2565b6033805460ff19169055565b80516150a281615e8b565b919050565b60008083601f8401126150b957600080fd5b50813567ffffffffffffffff8111156150d157600080fd5b6020830191508360208260051b85010111156150ec57600080fd5b9250929050565b80516150a281615ea0565b60006020828403121561511057600080fd5b813561511b81615e8b565b9392505050565b60006020828403121561513457600080fd5b815161511b81615e8b565b6000806040838503121561515257600080fd5b823561515d81615e8b565b9150602083013561516d81615e8b565b809150509250929050565b6000806040838503121561518b57600080fd5b823561519681615e8b565b9150602083013561516d81615ea0565b6000806000604084860312156151bb57600080fd5b83356151c681615e8b565b9250602084013567ffffffffffffffff808211156151e357600080fd5b818601915086601f8301126151f757600080fd5b81358181111561520657600080fd5b87602082850101111561521857600080fd5b6020830194508093505050509250925092565b6000806000806040858703121561524157600080fd5b843567ffffffffffffffff8082111561525957600080fd5b615265888389016150a7565b9096509450602087013591508082111561527e57600080fd5b5061528b878288016150a7565b95989497509550505050565b6000602082840312156152a957600080fd5b813561511b81615ea0565b6000602082840312156152c657600080fd5b815161511b81615ea0565b60008060008060008060a087890312156152ea57600080fd5b86356152f581615eae565b9550602087013561530581615e8b565b94506040870135935060608701359250608087013567ffffffffffffffff81111561532f57600080fd5b61533b89828a016150a7565b979a9699509497509295939492505050565b60006020828403121561535f57600080fd5b815167ffffffffffffffff8082111561537757600080fd5b818401915084601f83011261538b57600080fd5b81518181111561539d5761539d615e62565b604051601f8201601f19908116603f011681019083821181831017156153c5576153c5615e62565b816040528281528760208487010111156153de57600080fd5b6153ef836020830160208801615dd5565b979650505050505050565b6000610180828403121561540d57600080fd5b615415615d17565b61541e83615097565b815260208301516020820152604083015160408201526060830151606082015261544a608084016150f3565b608082015260a0838101519082015260c0808401519082015260e08084015190820152610100808401519082015261012080840151908201526101408084015190820152610160928301519281019290925250919050565b600060a082840312156154b457600080fd5b60405160a0810181811067ffffffffffffffff821117156154d7576154d7615e62565b8060405250825181526020830151602082015260408301516040820152606083015161550281615ea0565b60608201526080928301519281019290925250919050565b60008060008385036101a081121561553157600080fd5b6101608082121561554157600080fd5b859450840135905061555281615eae565b92959294505050610180919091013590565b6000610160828403121561557757600080fd5b61557f615d41565b61558883615097565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201526155c860c084016150f3565b60c082015260e0838101519082015261010080840151908201526101208084015190820152610140928301519281019290925250919050565b60006020828403121561561357600080fd5b5035919050565b60006020828403121561562c57600080fd5b5051919050565b6000806040838503121561564657600080fd5b50508035926020909101359150565b60008060008060008060a0878903121561566e57600080fd5b863595506020870135945060408701356002811061568b57600080fd5b935060608701359250608087013567ffffffffffffffff81111561532f57600080fd5b6000806000606084860312156156c357600080fd5b505081359360208301359350604090920135919050565b60008060008060008060a087890312156156f357600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff81111561532f57600080fd5b60008060008060008060c0878903121561573f57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600081518084526157aa816020860160208601615dd5565b601f01601f19169290920160200192915050565b600281106157ce576157ce615e36565b9052565b80516001600160a01b031682526020808201519083015260408082015190830152606081015161580181615e78565b806060840152505050565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015161585e60c084018215159052565b5060e081810151908301526101008082015190830152610120808201519083015261014090810151910152565b8183823760009101908152919050565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b03851681526020810184905260408101839052608081016158e383615e78565b82606083015295945050505050565b602081526000614e966020830184615792565b6020808252600890820152674e4f5f545241444560c01b604082015260600190565b60208082526012908201527113115591549051d157d25390d3d4949150d560721b604082015260600190565b6020808252600e908201526d4c494d49545f54494d454c4f434b60901b604082015260600190565b6020808252600d908201526c27a7262cafa7a822a920aa27a960991b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b602080825260089082015267474f565f4f4e4c5960c01b604082015260600190565b81516001600160a01b0316815261018081016020830151602083015260408301516040830152606083015160608301526080830151615a52608084018215159052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151818401525061016080840151818401525092915050565b60a08101615ab582856157d2565b8260808301529392505050565b600061020082019050615ad682865161580c565b602085015161016083015260408501516101808301526060909401516101a08201526101c081019290925215156101e09091015290565b6101608101614e99828461580c565b60a08101615b2a82856157d2565b6001600160a01b039290921660809190910152919050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b87811015615bdb57868503605f190183528135368a9003601e19018112615b9257600080fd5b8901803567ffffffffffffffff811115615bab57600080fd5b8036038b1315615bba57600080fd5b615bc78782888501615769565b965050509183019190830190600101615b6c565b509298975050505050505050565b8281526040810160098310615c0057615c00615e36565b8260208301529392505050565b60006101208201905083825260018060a01b03835116602083015260208301516040830152604083015160608301526060830151615c4e60808401826157be565b50608083015160a083015260a083015160c083015260c083015160e083015260e08301516101008301529392505050565b6000610100820190508982528860208301528715156040830152866060830152856080830152615cae85615e78565b8460a08301528360c08301528260e08301529998505050505050505050565b878152602081018790526102208101615ce960408301886157be565b615cf6606083018761580c565b846101c0830152836101e08301528261020083015298975050505050505050565b604051610180810167ffffffffffffffff81118282101715615d3b57615d3b615e62565b60405290565b604051610160810167ffffffffffffffff81118282101715615d3b57615d3b615e62565b60008219821115615d7857615d78615e20565b500190565b600082615d9a57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615615db957615db9615e20565b500290565b600082821015615dd057615dd0615e20565b500390565b60005b83811015615df0578181015183820152602001615dd8565b83811115615dff576000848401525b50505050565b6000600019821415615e1957615e19615e20565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60048110615e8857615e88615e36565b50565b6001600160a01b0381168114615e8857600080fd5b8015158114615e8857600080fd5b60048110615e8857600080fdfea2646970667358221220d6a87a5581708c02ee570024d3069ebe48e5f1e856800b39a156db0836401a9464736f6c63430008070033","sourceMap":"376:23237:73:-:0;;;2914:53;;;;;;;;;-1:-1:-1;2938:22:73;:20;:22::i;:::-;376:23237;;5939:280:18;6007:13;;;;;;;6006:14;5998:66;;;;;-1:-1:-1;;;5998:66:18;;216:2:93;5998:66:18;;;198:21:93;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:93;;;338:37;5998:66:18;;;;;;392:19:93;5998:66:18;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:18;-1:-1:-1;6125:30:18;;;;;;6174:28;;;564:36:93;;;6174:28:18;;;;;;552:2:93;6174:28:18;;;6074:139;5939:280::o;422:184:93:-;376:23237:73;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061019c5760003560e01c80636d70f7ae116100ec578063c48a02a21161008a578063ca5eb5e111610064578063ca5eb5e11461047f578063cd90b8a4146104c9578063d1a91ff2146104dc578063d4a1caa7146104f157600080fd5b8063c48a02a214610426578063c5ed6a081461043f578063c641558e1461045f57600080fd5b80639e2033f5116100c65780639e2033f51461039d578063b9b6573a146103bd578063bffe3486146103dd578063c0b4d24d1461041357600080fd5b80636d70f7ae146103385780638456cb59146103685780639a10cc321461037d57600080fd5b806336fb8b1511610159578063485cc95511610133578063485cc955146102b4578063570ca735146102d45780635c975abb146102f45780636d44a3b21461031857600080fd5b806336fb8b151461025d5780633f4ba83a1461028c57806346f6c8f5146102a157600080fd5b80630890d22a146101a15780631346b0ff146101ca57806315b760b11461020257806316fff0741461021757806319cde9a1146102375780632c3cbce41461024a575b600080fd5b3480156101ad57600080fd5b506101b760695481565b6040519081526020015b60405180910390f35b3480156101d657600080fd5b506068546101ea906001600160a01b031681565b6040516001600160a01b0390911681526020016101c1565b6102156102103660046156da565b610511565b005b34801561022357600080fd5b506067546101ea906001600160a01b031681565b6101b761024536600461551a565b61053f565b6101b76102583660046156ae565b61176c565b34801561026957600080fd5b5061021533600090815260656020526040902080546001600160a01b0319169055565b34801561029857600080fd5b506102156121f9565b6102156102af3660046152d1565b6122b9565b3480156102c057600080fd5b506102156102cf36600461513f565b612d34565b3480156102e057600080fd5b50606a546101ea906001600160a01b031681565b34801561030057600080fd5b5060335460ff165b60405190151581526020016101c1565b34801561032457600080fd5b50610215610333366004615178565b612e7c565b34801561034457600080fd5b506103086103533660046150fe565b606b6020526000908152604090205460ff1681565b34801561037457600080fd5b50610215612f95565b61039061038b3660046151a6565b613053565b6040516101c191906158f2565b3480156103a957600080fd5b506102156103b83660046150fe565b61318e565b3480156103c957600080fd5b506102156103d8366004615633565b6132ab565b3480156103e957600080fd5b506101ea6103f83660046150fe565b6065602052600090815260409020546001600160a01b031681565b61021561042136600461522b565b6134e4565b34801561043257600080fd5b506101b764ba43b7400081565b34801561044b57600080fd5b5061021561045a366004615601565b613638565b34801561046b57600080fd5b5061021561047a366004615726565b6136c1565b34801561048b57600080fd5b5061021561049a3660046150fe565b33600090815260656020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6101b76104d7366004615655565b61396c565b3480156104e857600080fd5b506101ea6142e3565b3480156104fd57600080fd5b5061021561050c366004615601565b61430b565b61051961445f565b6105248686856144a5565b801561053757610537868686858561476b565b505050505050565b600061054961445f565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b15801561058e57600080fd5b505afa1580156105a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c69190615122565b90506000816001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561060357600080fd5b505afa158015610617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063b9190615122565b9050606760009054906101000a90046001600160a01b03166001600160a01b0316638049fde76040518163ffffffff1660e01b815260040160206040518083038186803b15801561068b57600080fd5b505afa15801561069f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c3919061561a565b6067546001600160a01b031663f7b3c6fd6106dc6142e3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b15801561071b57600080fd5b505afa15801561072f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610753919061561a565b1061079a5760405162461bcd60e51b81526020600482015260126024820152714d41585f50454e44494e475f4f524445525360701b60448201526064015b60405180910390fd5b606760009054906101000a90046001600160a01b03166001600160a01b031663f65d9dbe6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107e857600080fd5b505afa1580156107fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610820919061561a565b6067546001600160a01b03166397e7995a6108396142e3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208a0135602482015260440160206040518083038186803b15801561088257600080fd5b505afa158015610896573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ba919061561a565b6067546001600160a01b0316639c8912f16108d36142e3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208b0135602482015260440160206040518083038186803b15801561091c57600080fd5b505afa158015610930573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610954919061561a565b6067546001600160a01b0316631c8636b461096d6142e3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208c0135602482015260440160206040518083038186803b1580156109b657600080fd5b505afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee919061561a565b6109f89190615d65565b610a029190615d65565b10610a455760405162461bcd60e51b815260206004820152601360248201527226a0ac2faa2920a222a9afa822a92fa820a4a960691b6044820152606401610791565b60405163238cd23f60e01b8152602087013560048201526001600160a01b0382169063238cd23f9060240160206040518083038186803b158015610a8857600080fd5b505afa158015610a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac0919061561a565b610ad2608088013560e0890135614e7a565b1015610b105760405162461bcd60e51b815260206004820152600d60248201526c42454c4f575f4d494e5f504f5360981b6044820152606401610791565b6101008601351580610b4f5750610b2d60e0870160c08801615297565b610b42578560a0013586610100013510610b4f565b8560a00135866101000135115b610b865760405162461bcd60e51b8152602060048201526008602482015267057524f4e475f54560c41b6044820152606401610791565b6101208601351580610bc55750610ba360e0870160c08801615297565b610bb8578560a0013586610120013511610bc5565b8560a00135866101200135105b610bfc5760405162461bcd60e51b815260206004820152600860248201526715d493d391d7d4d360c21b6044820152606401610791565b64ba43b740008410610c435760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f534c49505041474560801b6044820152606401610791565b6000856003811115610c5757610c57615e36565b14158015610c7757506003856003811115610c7457610c74615e36565b14155b156111305760008660e00135118015610d155750604051634cadbb2b60e11b815260208701356004820152600060248201526001600160a01b0382169063995b76569060440160206040518083038186803b158015610cd557600080fd5b505afa158015610ce9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0d919061561a565b8660e0013510155b8015610da65750604051639b2f6cab60e01b815260208701356004820152600060248201526001600160a01b03821690639b2f6cab9060440160206040518083038186803b158015610d6657600080fd5b505afa158015610d7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9e919061561a565b8660e0013511155b610dc25760405162461bcd60e51b815260040161079190615927565b6067546001600160a01b0316638b83351a610ddb6142e3565b60675460405160e084901b6001600160e01b03191681526001600160a01b0392831660048201529116602482015260808901356044820152606401600060405180830381600087803b158015610e3057600080fd5b505af1158015610e44573d6000803e3d6000fd5b5050606754600092506001600160a01b031690506344d44f5a610e656142e3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260208a0135602482015260440160206040518083038186803b158015610eae57600080fd5b505afa158015610ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee6919061561a565b6067546040805161018081019091529192506001600160a01b03169063fdb153e29080610f116142e3565b6001600160a01b0316815260208b81013590820152604081018590526080808c0135606083015201610f4960e08c0160c08d01615297565b151581526020018a60e0013581526020018a610100013581526020018a610120013581526020018a60a00135815260200188815260200143815260200160008152506040518263ffffffff1660e01b8152600401610fa79190615a0f565b600060405180830381600087803b158015610fc157600080fd5b505af1158015610fd5573d6000803e3d6000fd5b50505050826001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b15801561101257600080fd5b505afa158015611026573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104a9190615122565b6001600160a01b031663ec5706106110606142e3565b8960200135848a6040518563ffffffff1660e01b815260040161108694939291906158bc565b600060405180830381600087803b1580156110a057600080fd5b505af11580156110b4573d6000803e3d6000fd5b505050506110c06142e3565b6001600160a01b03167f174df203b38fe4bbf31688bea280abf3c60a2d5a4214fdf30984abdcf6f15fca60208901358361110060e08c0160c08d01615297565b8b60a0013560008c8c8f60800135604051611122989796959493929190615c7f565b60405180910390a2506116c6565b60008660e001351180156111e457506001600160a01b03811663995b76566020880135600388600381111561116757611167615e36565b6040516001600160e01b031960e086901b168152600481019390935214602482015260440160206040518083038186803b1580156111a457600080fd5b505afa1580156111b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc919061561a565b8660e0013510155b801561129057506001600160a01b038116639b2f6cab6020880135600388600381111561121357611213615e36565b6040516001600160e01b031960e086901b168152600481019390935214602482015260440160206040518083038186803b15801561125057600080fd5b505afa158015611264573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611288919061561a565b8660e0013511155b6112ac5760405162461bcd60e51b815260040161079190615927565b60038560038111156112c0576112c0615e36565b141561138557604051631fca5ed960e01b8152602087013560048201526001600160a01b03821690631fca5ed99060240160206040518083038186803b15801561130957600080fd5b505afa15801561131d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134191906152b4565b6113855760405162461bcd60e51b815260206004820152601560248201527414139317d3d491115497d393d517d0531313d5d151605a1b6044820152606401610791565b6067546001600160a01b0316638b83351a61139e6142e3565b60675460405160e084901b6001600160e01b03191681526001600160a01b0392831660048201529116602482015260808901356044820152606401600060405180830381600087803b1580156113f357600080fd5b505af1158015611407573d6000803e3d6000fd5b5060009250611414915050565b85600381111561142657611426615e36565b146114b55760405163302809fd60e21b81526001600160a01b0383169063c0a027f49061145e9060208a013590600690600401615be9565b602060405180830381600087803b15801561147857600080fd5b505af115801561148c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b0919061561a565b61153a565b60405163302809fd60e21b81526001600160a01b0383169063c0a027f4906114e89060208a013590600090600401615be9565b602060405180830381600087803b15801561150257600080fd5b505af1158015611516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153a919061561a565b606754604080516101e081019091529194506001600160a01b03169063d8137fe89080608081018061156a6142e3565b6001600160a01b031681526020018b60200135815260200160008152602001600081526020018b608001358152602001600081526020018b60c00160208101906115b49190615297565b151581526020018b60e0013581526020018b610100013581526020018b6101200135815260200160008152508152602001600081526020018960a001358152602001878152508560016040518463ffffffff1660e01b815260040161161b93929190615ac2565b600060405180830381600087803b15801561163557600080fd5b505af1158015611649573d6000803e3d6000fd5b505050506116556142e3565b6001600160a01b03167fe9092f5bd9dedfcde131b74a84f9c41981d96f1114420e39a57d92d9324ee07660208801356001864261169860e08d0160c08e01615297565b6040805195865293151560208601529284019190915260608301521515608082015260a00160405180910390a25b606a546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611713576040519150601f19603f3d011682016040523d82523d6000602084013e611718565b606091505b50509050806117625760405162461bcd60e51b815260206004820152601660248201527511561150d5551253d397d1915157d393d517d4d1539560521b6044820152606401610791565b5050509392505050565b600061177661445f565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b1580156117bb57600080fd5b505afa1580156117cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f39190615122565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561182b57600080fd5b505afa15801561183f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118639190615122565b606a546040519192506000916001600160a01b039091169034908381818185875af1925050503d80600081146118b5576040519150601f19603f3d011682016040523d82523d6000602084013e6118ba565b606091505b50509050806119045760405162461bcd60e51b815260206004820152601660248201527511561150d5551253d397d1915157d393d517d4d1539560521b6044820152606401610791565b6067546000906001600160a01b031663a3a80ffe6119206142e3565b89896040518463ffffffff1660e01b81526004016119409392919061589b565b6101606040518083038186803b15801561195957600080fd5b505afa15801561196d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119919190615564565b6067549091506000906001600160a01b0316638c8ff1d56119b06142e3565b8a8a6040518463ffffffff1660e01b81526004016119d09392919061589b565b60a06040518083038186803b1580156119e857600080fd5b505afa1580156119fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2091906154a2565b6060015190508160600151861115611a675760405162461bcd60e51b815260206004820152600a60248201526912539597d05353d5539560b21b6044820152606401610791565b606760009054906101000a90046001600160a01b03166001600160a01b0316638049fde76040518163ffffffff1660e01b815260040160206040518083038186803b158015611ab557600080fd5b505afa158015611ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aed919061561a565b6067546001600160a01b031663f7b3c6fd611b066142e3565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b158015611b4557600080fd5b505afa158015611b59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7d919061561a565b10611bbf5760405162461bcd60e51b81526020600482015260126024820152714d41585f50454e44494e475f4f524445525360701b6044820152606401610791565b8015611c045760405162461bcd60e51b81526020600482015260146024820152731053149150511657d091525391d7d0d313d4d15160621b6044820152606401610791565b60008260e0015111611c285760405162461bcd60e51b815260040161079190615905565b836001600160a01b031663737113b589611c4f8560e001518a614e7a90919063ffffffff16565b6040516001600160e01b031960e085901b1681526004810192909252602482015260440160206040518083038186803b158015611c8b57600080fd5b505afa158015611c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc3919061561a565b610140830151611cd39042615dbe565b1015611d0f5760405162461bcd60e51b815260206004820152600b60248201526a4541524c595f434c4f534560a81b6044820152606401610791565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b158015611d5457600080fd5b505afa158015611d68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8c9190615122565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015611dc457600080fd5b505afa158015611dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfc9190615122565b6001600160a01b031663c5f5951a611e126142e3565b8b8b6040518463ffffffff1660e01b8152600401611e329392919061589b565b60206040518083038186803b158015611e4a57600080fd5b505afa158015611e5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8291906152b4565b905080611f9457606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015611ed757600080fd5b505afa158015611eeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0f9190615122565b6001600160a01b031663c0a027f48a60016040518363ffffffff1660e01b8152600401611f3d929190615be9565b602060405180830381600087803b158015611f5757600080fd5b505af1158015611f6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8f919061561a565b61209a565b606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015611fe257600080fd5b505afa158015611ff6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201a9190615122565b6001600160a01b031663c0a027f48a60076040518363ffffffff1660e01b8152600401612048929190615be9565b602060405180830381600087803b15801561206257600080fd5b505af1158015612076573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209a919061561a565b606754604080516101e081019091529197506001600160a01b03169063d8137fe8908060808101806120ca6142e3565b6001600160a01b031681526020018e81526020018d81526020018c8152602001600081526020016000815260200160001515815260200160008152602001600081526020016000815260200160008152508152602001600081526020016000815260200160008152508860006040518463ffffffff1660e01b815260040161215493929190615ac2565b600060405180830381600087803b15801561216e57600080fd5b505af1158015612182573d6000803e3d6000fd5b5050505061218e6142e3565b60c0840151604080518c8152600060208201528082018a90524260608201529115156080830152516001600160a01b0392909216917fe9092f5bd9dedfcde131b74a84f9c41981d96f1114420e39a57d92d9324ee0769181900360a00190a250505050509392505050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561224757600080fd5b505afa15801561225b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227f9190615122565b6001600160a01b0316336001600160a01b0316146122af5760405162461bcd60e51b8152600401610791906159ed565b6122b7614e9f565b565b6122c161445f565b336000908152606b602052604090205460ff166122f05760405162461bcd60e51b81526004016107919061597b565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b15801561233557600080fd5b505afa158015612349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236d9190615122565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156123a557600080fd5b505afa1580156123b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123dd9190615122565b905060038760038111156123f3576123f3615e36565b14156124b957606754604051636e6f99cd60e11b81526001600160a01b039091169063dcdf339a9061242d9089908990899060040161589b565b60206040518083038186803b15801561244557600080fd5b505afa158015612459573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247d91906152b4565b6124b45760405162461bcd60e51b81526020600482015260086024820152671393d7d31253525560c21b6044820152606401610791565b612819565b6067546040516351d407ff60e11b81526000916001600160a01b03169063a3a80ffe906124ee908a908a908a9060040161589b565b6101606040518083038186803b15801561250757600080fd5b505afa15801561251b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253f9190615564565b905060008160e00151116125655760405162461bcd60e51b815260040161079190615905565b600188600381111561257957612579615e36565b14158061258b57506000816101200151115b6125bf5760405162461bcd60e51b81526020600482015260056024820152641393d7d4d360da1b6044820152606401610791565b60028860038111156125d3576125d3615e36565b141561270e576068548151602083015160408085015160a086015160c0870151606088015160e08901519451636bc84d5960e01b81526001600160a01b0397881660048201526024810196909652604486019390935260648501919091521515608484015260a483015260c48201526000929190911690636bc84d599060e40160206040518083038186803b15801561266b57600080fd5b505afa15801561267f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126a3919061561a565b9050816101200151600014806126d357508160c001516126ca5781610120015181106126d3565b81610120015181115b6127085760405162461bcd60e51b8152602060048201526006602482015265121054d7d4d360d21b6044820152606401610791565b50612817565b600088600381111561272257612722615e36565b141561281757816001600160a01b031663737113b582602001516127578460e001518560600151614e7a90919063ffffffff16565b6040516001600160e01b031960e085901b1681526004810192909252602482015260440160206040518083038186803b15801561279357600080fd5b505afa1580156127a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127cb919061561a565b6101408201516127db9042615dbe565b10156128175760405162461bcd60e51b815260206004820152600b60248201526a4541524c595f434c4f534560a81b6044820152606401610791565b505b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b15801561285e57600080fd5b505afa158015612872573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128969190615122565b90506000816001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b1580156128d357600080fd5b505afa1580156128e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061290b9190615122565b9050600060405180608001604052808a6001600160a01b031681526020018981526020018881526020018b600381111561294757612947615e36565b81525090506000606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561299c57600080fd5b505afa1580156129b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d49190615122565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015612a0c57600080fd5b505afa158015612a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a449190615122565b6001600160a01b031663c5f5951a8b8b8b6040518463ffffffff1660e01b8152600401612a739392919061589b565b60206040518083038186803b158015612a8b57600080fd5b505afa158015612a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac391906152b4565b905060006001600160a01b03851663c0a027f48b60038f6003811115612aeb57612aeb615e36565b14612b035784612afc576003612b06565b6008612b06565b60025b6040518363ffffffff1660e01b8152600401612b23929190615be9565b602060405180830381600087803b158015612b3d57600080fd5b505af1158015612b51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b75919061561a565b606754604080516080810182526001600160a01b038f81168252602082018f90529181018d9052929350169063d775d54890606081018f6003811115612bbd57612bbd615e36565b815250836040518363ffffffff1660e01b8152600401612bde929190615aa7565b600060405180830381600087803b158015612bf857600080fd5b505af1158015612c0c573d6000803e3d6000fd5b50505050836001600160a01b031663c23c886c84612c286142e3565b6040518363ffffffff1660e01b8152600401612c45929190615b1c565b600060405180830381600087803b158015612c5f57600080fd5b505af1158015612c73573d6000803e3d6000fd5b5050604080518d815260208101859052428183015290516001600160a01b038f1693507fd0ac65cbccd4e7062356a9be37735153d991bdc4de08f024a8fffc0600f7048892509081900360600190a260405163dd2f3c0560e01b81526001600160a01b0386169063dd2f3c05903490612cf49085908d908d90600401615b42565b6000604051808303818588803b158015612d0d57600080fd5b505af1158015612d21573d6000803e3d6000fd5b5050505050505050505050505050505050565b600054610100900460ff1615808015612d545750600054600160ff909116105b80612d6e5750303b158015612d6e575060005460ff166001145b612dd15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610791565b6000805460ff191660011790558015612df4576000805461ff0019166101001790555b606780546001600160a01b038086166001600160a01b03199283161790925560688054928516929091169190911790556002606955612e31614ef1565b8015612e77576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015612eca57600080fd5b505afa158015612ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f029190615122565b6001600160a01b0316336001600160a01b031614612f325760405162461bcd60e51b8152600401610791906159ed565b6001600160a01b0382166000818152606b6020908152604091829020805460ff19168515159081179091558251938452908301527f966c160e1c4dbc7df8d69af4ace01e9297c3cf016397b7914971f2fbfa32672d910160405180910390a15050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015612fe357600080fd5b505afa158015612ff7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061301b9190615122565b6001600160a01b0316336001600160a01b03161461304b5760405162461bcd60e51b8152600401610791906159ed565b6122b7614f20565b6001600160a01b038381166000908152606560205260409020546060911633146130b75760405162461bcd60e51b81526020600482015260156024820152741111531151d0551157d393d517d054141493d59151605a1b6044820152606401610791565b606680546001600160a01b0319166001600160a01b038616179055604051600090819030906130e9908790879061588b565b600060405180830381855af49150503d8060008114613124576040519150601f19603f3d011682016040523d82523d6000602084013e613129565b606091505b5091509150816131755760448151101561314257600080fd5b6004810190508080602001905181019061315c919061534d565b60405162461bcd60e51b815260040161079191906158f2565b606680546001600160a01b031916905595945050505050565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156131dc57600080fd5b505afa1580156131f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132149190615122565b6001600160a01b0316336001600160a01b0316146132445760405162461bcd60e51b8152600401610791906159ed565b6001600160a01b0381166132895760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610791565b606a80546001600160a01b0319166001600160a01b0392909216919091179055565b6132b361445f565b6067546000906001600160a01b031663b8878a2c6132cf6142e3565b85856040518463ffffffff1660e01b81526004016132ef9392919061589b565b6101806040518083038186803b15801561330857600080fd5b505afa15801561331c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334091906153fa565b9050606954816101400151436133569190615dbe565b10156133745760405162461bcd60e51b815260040161079190615953565b6067546001600160a01b0316638b83351a8161338e6142e3565b84610160015185606001516133a39190615d65565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b1580156133f257600080fd5b505af1158015613406573d6000803e3d6000fd5b50506067546001600160a01b0316915063b4b0f56790506134256142e3565b85856040518463ffffffff1660e01b81526004016134459392919061589b565b600060405180830381600087803b15801561345f57600080fd5b505af1158015613473573d6000803e3d6000fd5b5050505061347f6142e3565b6001600160a01b03167f99b2cab0fe1db813d380331f51c117d5622d07c79686cc4ecd043e8d56ace09484844285606001516040516134d7949392919093845260208401929092526040830152606082015260800190565b60405180910390a2505050565b336000908152606b602052604090205460ff166135135760405162461bcd60e51b81526004016107919061597b565b60005b8381101561363157606760009054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561356c57600080fd5b505afa158015613580573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135a49190615122565b6001600160a01b031663dd2f3c05348787858181106135c5576135c5615e4c565b9050602002013586866040518563ffffffff1660e01b81526004016135ec93929190615b42565b6000604051808303818588803b15801561360557600080fd5b505af1158015613619573d6000803e3d6000fd5b5050505050808061362990615e05565b915050613516565b5050505050565b336000908152606b602052604090205460ff166136675760405162461bcd60e51b81526004016107919061597b565b606754604051630d32c90760e01b8152600481018390526001600160a01b0390911690630d32c90790602401600060405180830381600087803b1580156136ad57600080fd5b505af1158015613631573d6000803e3d6000fd5b6136c961445f565b6067546000906001600160a01b031663b8878a2c6136e56142e3565b89896040518463ffffffff1660e01b81526004016137059392919061589b565b6101806040518083038186803b15801561371e57600080fd5b505afa158015613732573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375691906153fa565b90506069548161014001514361376c9190615dbe565b101561378a5760405162461bcd60e51b815260040161079190615953565b8215806137a7575080608001516137a3578285116137a7565b8285105b6137de5760405162461bcd60e51b8152602060048201526008602482015267057524f4e475f54560c41b6044820152606401610791565b8115806137fb575080608001516137f7578185106137fb565b8185115b6138325760405162461bcd60e51b815260206004820152600860248201526715d493d391d7d4d360c21b6044820152606401610791565b64ba43b7400084106138795760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f534c49505041474560801b6044820152606401610791565b6101008101859052610120810184905260c0810183905260e0810182905260675460405163574564a760e11b81526001600160a01b039091169063ae8ac94e906138c7908490600401615a0f565b600060405180830381600087803b1580156138e157600080fd5b505af11580156138f5573d6000803e3d6000fd5b505050506139016142e3565b604080518981526020810189905290810187905260608101859052608081018490524260a08201526001600160a01b0391909116907f710a8db87f04e82a9de40076812593a965f4aa48693196d2144c07ff9710e8909060c00160405180910390a250505050505050565b600061397661445f565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b1580156139bb57600080fd5b505afa1580156139cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f39190615122565b6067549091506000906001600160a01b031663a3a80ffe613a126142e3565b8b8b6040518463ffffffff1660e01b8152600401613a329392919061589b565b6101606040518083038186803b158015613a4b57600080fd5b505afa158015613a5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a839190615564565b6067549091506000906001600160a01b0316638c8ff1d5613aa26142e3565b8c8c6040518463ffffffff1660e01b8152600401613ac29392919061589b565b60a06040518083038186803b158015613ada57600080fd5b505afa158015613aee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b1291906154a2565b9050806060015115613b5d5760405162461bcd60e51b81526020600482015260146024820152731053149150511657d091525391d7d0d313d4d15160621b6044820152606401610791565b60008260e0015111613b815760405162461bcd60e51b815260040161079190615905565b6068548251602084015160408086015160c0870151606088015160e08901519351630284c13960e11b81526001600160a01b0396871660048201526024810195909552604485019290925215156064840152608483015260a4820152600092919091169063050982729060c40160206040518083038186803b158015613c0657600080fd5b505afa158015613c1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c3e919061561a565b60405163302809fd60e21b81529091506001600160a01b0385169063c0a027f490613c6f908e906004908101615be9565b602060405180830381600087803b158015613c8957600080fd5b505af1158015613c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cc1919061561a565b9450836001600160a01b031663cbe91bd986604051806101000160405280613ce76142e3565b6001600160a01b031681526020018f81526020018e81526020018d6001811115613d1357613d13615e36565b81526020018c8152602001866080015181526020018581526020018760e001518152506040518363ffffffff1660e01b8152600401613d53929190615c0d565b600060405180830381600087803b158015613d6d57600080fd5b505af1158015613d81573d6000803e3d6000fd5b50505050613d9a826000015184606001518b8b85614f5d565b606085015260e084015260675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b158015613de957600080fd5b505afa158015613dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e219190615122565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015613e5957600080fd5b505afa158015613e6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e919190615122565b6001600160a01b031663c5f5951a613ea76142e3565b8e8e6040518463ffffffff1660e01b8152600401613ec79392919061589b565b60206040518083038186803b158015613edf57600080fd5b505afa158015613ef3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f1791906152b4565b9050808015613f37575060018a6001811115613f3557613f35615e36565b145b15613f725760405162461bcd60e51b815260206004820152600b60248201526a1393d517d0531313d5d15160aa1b6044820152606401610791565b60008460e001511180156140825750846001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015613fba57600080fd5b505afa158015613fce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ff29190615122565b6020850151604051634cadbb2b60e11b8152600481019190915282151560248201526001600160a01b03919091169063995b76569060440160206040518083038186803b15801561404257600080fd5b505afa158015614056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061407a919061561a565b8460e0015110155b801561418a5750846001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156140c257600080fd5b505afa1580156140d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140fa9190615122565b6020850151604051639b2f6cab60e01b8152600481019190915282151560248201526001600160a01b039190911690639b2f6cab9060440160206040518083038186803b15801561414a57600080fd5b505afa15801561415e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614182919061561a565b8460e0015111155b6141a65760405162461bcd60e51b815260040161079190615927565b6141ae6142e3565b6001600160a01b03167f48452067591e9581b9c1f3135e16ae22829a7c8afc6b3d6a1afa2cd295cc11338d8d8d88878960800151426040516141f69796959493929190615ccd565b60405180910390a260675460405163f0cb9b1160e01b81526001600160a01b039091169063f0cb9b119061422e908790600401615b0d565b600060405180830381600087803b15801561424857600080fd5b505af115801561425c573d6000803e3d6000fd5b505060405163dd2f3c0560e01b81526001600160a01b038816925063dd2f3c0591503490614292908a908d908d90600401615b42565b6000604051808303818588803b1580156142ab57600080fd5b505af11580156142bf573d6000803e3d6000fd5b50505050506142d48c8c8661010001516144a5565b50505050509695505050505050565b6066546000906001600160a01b03166142fb57503390565b506066546001600160a01b031690565b606760009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561435957600080fd5b505afa15801561436d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143919190615122565b6001600160a01b0316336001600160a01b0316146143c15760405162461bcd60e51b8152600401610791906159ed565b600081116143fb5760405162461bcd60e51b8152602060048201526007602482015266056414c55455f360cc1b6044820152606401610791565b606981905560408051818152601381830152726c696d69744f726465727354696d656c6f636b60681b60608201526020810183905290517f8cf3e35f6221b16e1670a3413180c9484bf5aa71787905909fa82a6a2662e9ab9181900360800190a150565b60335460ff16156122b75760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610791565b6067546000906001600160a01b031663a3a80ffe6144c16142e3565b86866040518463ffffffff1660e01b81526004016144e19392919061589b565b6101606040518083038186803b1580156144fa57600080fd5b505afa15801561450e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145329190615564565b60e001516067549091506000906001600160a01b0316638c8ff1d56145556142e3565b87876040518463ffffffff1660e01b81526004016145759392919061589b565b60a06040518083038186803b15801561458d57600080fd5b505afa1580156145a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145c591906154a2565b602001519050600082116145eb5760405162461bcd60e51b815260040161079190615905565b6069546145f88243615dbe565b10156146165760405162461bcd60e51b815260040161079190615953565b6001600160ff1b03831061465b5760405162461bcd60e51b815260206004820152600c60248201526b0494e434f52524543545f54560a41b6044820152606401610791565b6067546000906001600160a01b0316637fdb96f36146776142e3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018990526044810188905260648101879052608401602060405180830381600087803b1580156146cd57600080fd5b505af11580156146e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614705919061561a565b905061470f6142e3565b60408051888152602081018890529081018390524260608201526001600160a01b0391909116907f01c13b316ce9327f58f220b36e368c197eda79df0102d7f4363f1e7fe29323e89060800160405180910390a2505050505050565b6067546000906001600160a01b031663a3a80ffe6147876142e3565b88886040518463ffffffff1660e01b81526004016147a79392919061589b565b6101606040518083038186803b1580156147c057600080fd5b505afa1580156147d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147f89190615564565b6067549091506000906001600160a01b0316638c8ff1d56148176142e3565b89896040518463ffffffff1660e01b81526004016148379392919061589b565b60a06040518083038186803b15801561484f57600080fd5b505afa158015614863573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061488791906154a2565b60400151905060008260e00151116148b15760405162461bcd60e51b815260040161079190615905565b6001600160ff1b0385106148f65760405162461bcd60e51b815260206004820152600c60248201526b125390d3d4949150d517d4d360a21b6044820152606401610791565b60006149238360e00151606460508660a001516149139190615d9f565b61491d9190615d7d565b90615009565b905085158061496257508260c0015161494e57808360a001516149469190615d65565b861115614962565b808360a0015161495e9190615dbe565b8610155b61499b5760405162461bcd60e51b815260206004820152600a602482015269534c5f544f4f5f42494760b01b6044820152606401610791565b6069546149a88343615dbe565b10156149c65760405162461bcd60e51b815260040161079190615953565b60675460408051633078fff560e01b815290516000926001600160a01b031691633078fff5916004808301926020929190829003018186803b158015614a0b57600080fd5b505afa158015614a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a439190615122565b9050861580614b3d5750806001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015614a8657600080fd5b505afa158015614a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614abe9190615122565b6001600160a01b03166324abd3fb8a6040518263ffffffff1660e01b8152600401614aeb91815260200190565b60206040518083038186803b158015614b0357600080fd5b505afa158015614b17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b3b91906152b4565b155b15614c2a576067546001600160a01b031663a3544181614b5b6142e3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018c9052604481018b9052606481018a9052608401600060405180830381600087803b158015614bb157600080fd5b505af1158015614bc5573d6000803e3d6000fd5b50505050614bd16142e3565b604080518b8152602081018b90529081018990524260608201526001600160a01b0391909116907f6a750d0aaea2df37b3b72b79412df54b9e55109ccfaedf5dcecc2af9993a61de9060800160405180910390a2614e6f565b60405163302809fd60e21b81526000906001600160a01b0383169063c0a027f490614c5c908d90600590600401615be9565b602060405180830381600087803b158015614c7657600080fd5b505af1158015614c8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614cae919061561a565b9050816001600160a01b031663b8213bfa826040518060c00160405280614cd36142e3565b6001600160a01b031681526020018e81526020018d81526020018960a0015181526020018960c00151151581526020018c8152506040518363ffffffff1660e01b8152600401614d74929190600060e08201905083825260018060a01b0383511660208301526020830151604083015260408301516060830152606083015160808301526080830151151560a083015260a083015160c08301529392505050565b600060405180830381600087803b158015614d8e57600080fd5b505af1158015614da2573d6000803e3d6000fd5b50505050614dae6142e3565b604080518c8152602081018c90529081018a9052606081018390524260808201526001600160a01b0391909116907fb24bbc82fd04bd3dab7c96c1cabc7a0f7a1a87dfa2b47239926fbde0a0bfa8be9060a00160405180910390a260405163dd2f3c0560e01b81526001600160a01b0383169063dd2f3c05903490614e3b9085908c908c90600401615b42565b6000604051808303818588803b158015614e5457600080fd5b505af1158015614e68573d6000803e3d6000fd5b5050505050505b505050505050505050565b60006402540be400614e8c8385615d9f565b614e969190615d7d565b90505b92915050565b614ea761501b565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600054610100900460ff16614f185760405162461bcd60e51b8152600401610791906159a2565b6122b7615064565b614f2861445f565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258614ed43390565b60008080856001811115614f7357614f73615e36565b1415614fb15782614f848588615d65565b614f8e9190615dbe565b905080614fa06402540be40089615d9f565b614faa9190615d7d565b9150614fff565b6001856001811115614fc557614fc5615e36565b1415614fff5782614fd68588615dbe565b614fe09190615dbe565b905080614ff26402540be40089615d9f565b614ffc9190615d7d565b91505b9550959350505050565b600081614e8c6402540be40085615d9f565b60335460ff166122b75760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610791565b600054610100900460ff1661508b5760405162461bcd60e51b8152600401610791906159a2565b6033805460ff19169055565b80516150a281615e8b565b919050565b60008083601f8401126150b957600080fd5b50813567ffffffffffffffff8111156150d157600080fd5b6020830191508360208260051b85010111156150ec57600080fd5b9250929050565b80516150a281615ea0565b60006020828403121561511057600080fd5b813561511b81615e8b565b9392505050565b60006020828403121561513457600080fd5b815161511b81615e8b565b6000806040838503121561515257600080fd5b823561515d81615e8b565b9150602083013561516d81615e8b565b809150509250929050565b6000806040838503121561518b57600080fd5b823561519681615e8b565b9150602083013561516d81615ea0565b6000806000604084860312156151bb57600080fd5b83356151c681615e8b565b9250602084013567ffffffffffffffff808211156151e357600080fd5b818601915086601f8301126151f757600080fd5b81358181111561520657600080fd5b87602082850101111561521857600080fd5b6020830194508093505050509250925092565b6000806000806040858703121561524157600080fd5b843567ffffffffffffffff8082111561525957600080fd5b615265888389016150a7565b9096509450602087013591508082111561527e57600080fd5b5061528b878288016150a7565b95989497509550505050565b6000602082840312156152a957600080fd5b813561511b81615ea0565b6000602082840312156152c657600080fd5b815161511b81615ea0565b60008060008060008060a087890312156152ea57600080fd5b86356152f581615eae565b9550602087013561530581615e8b565b94506040870135935060608701359250608087013567ffffffffffffffff81111561532f57600080fd5b61533b89828a016150a7565b979a9699509497509295939492505050565b60006020828403121561535f57600080fd5b815167ffffffffffffffff8082111561537757600080fd5b818401915084601f83011261538b57600080fd5b81518181111561539d5761539d615e62565b604051601f8201601f19908116603f011681019083821181831017156153c5576153c5615e62565b816040528281528760208487010111156153de57600080fd5b6153ef836020830160208801615dd5565b979650505050505050565b6000610180828403121561540d57600080fd5b615415615d17565b61541e83615097565b815260208301516020820152604083015160408201526060830151606082015261544a608084016150f3565b608082015260a0838101519082015260c0808401519082015260e08084015190820152610100808401519082015261012080840151908201526101408084015190820152610160928301519281019290925250919050565b600060a082840312156154b457600080fd5b60405160a0810181811067ffffffffffffffff821117156154d7576154d7615e62565b8060405250825181526020830151602082015260408301516040820152606083015161550281615ea0565b60608201526080928301519281019290925250919050565b60008060008385036101a081121561553157600080fd5b6101608082121561554157600080fd5b859450840135905061555281615eae565b92959294505050610180919091013590565b6000610160828403121561557757600080fd5b61557f615d41565b61558883615097565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201526155c860c084016150f3565b60c082015260e0838101519082015261010080840151908201526101208084015190820152610140928301519281019290925250919050565b60006020828403121561561357600080fd5b5035919050565b60006020828403121561562c57600080fd5b5051919050565b6000806040838503121561564657600080fd5b50508035926020909101359150565b60008060008060008060a0878903121561566e57600080fd5b863595506020870135945060408701356002811061568b57600080fd5b935060608701359250608087013567ffffffffffffffff81111561532f57600080fd5b6000806000606084860312156156c357600080fd5b505081359360208301359350604090920135919050565b60008060008060008060a087890312156156f357600080fd5b86359550602087013594506040870135935060608701359250608087013567ffffffffffffffff81111561532f57600080fd5b60008060008060008060c0878903121561573f57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600081518084526157aa816020860160208601615dd5565b601f01601f19169290920160200192915050565b600281106157ce576157ce615e36565b9052565b80516001600160a01b031682526020808201519083015260408082015190830152606081015161580181615e78565b806060840152505050565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015161585e60c084018215159052565b5060e081810151908301526101008082015190830152610120808201519083015261014090810151910152565b8183823760009101908152919050565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b03851681526020810184905260408101839052608081016158e383615e78565b82606083015295945050505050565b602081526000614e966020830184615792565b6020808252600890820152674e4f5f545241444560c01b604082015260600190565b60208082526012908201527113115591549051d157d25390d3d4949150d560721b604082015260600190565b6020808252600e908201526d4c494d49545f54494d454c4f434b60901b604082015260600190565b6020808252600d908201526c27a7262cafa7a822a920aa27a960991b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b602080825260089082015267474f565f4f4e4c5960c01b604082015260600190565b81516001600160a01b0316815261018081016020830151602083015260408301516040830152606083015160608301526080830151615a52608084018215159052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151818401525061016080840151818401525092915050565b60a08101615ab582856157d2565b8260808301529392505050565b600061020082019050615ad682865161580c565b602085015161016083015260408501516101808301526060909401516101a08201526101c081019290925215156101e09091015290565b6101608101614e99828461580c565b60a08101615b2a82856157d2565b6001600160a01b039290921660809190910152919050565b60006040820185835260206040818501528185835260608501905060608660051b86010192508660005b87811015615bdb57868503605f190183528135368a9003601e19018112615b9257600080fd5b8901803567ffffffffffffffff811115615bab57600080fd5b8036038b1315615bba57600080fd5b615bc78782888501615769565b965050509183019190830190600101615b6c565b509298975050505050505050565b8281526040810160098310615c0057615c00615e36565b8260208301529392505050565b60006101208201905083825260018060a01b03835116602083015260208301516040830152604083015160608301526060830151615c4e60808401826157be565b50608083015160a083015260a083015160c083015260c083015160e083015260e08301516101008301529392505050565b6000610100820190508982528860208301528715156040830152866060830152856080830152615cae85615e78565b8460a08301528360c08301528260e08301529998505050505050505050565b878152602081018790526102208101615ce960408301886157be565b615cf6606083018761580c565b846101c0830152836101e08301528261020083015298975050505050505050565b604051610180810167ffffffffffffffff81118282101715615d3b57615d3b615e62565b60405290565b604051610160810167ffffffffffffffff81118282101715615d3b57615d3b615e62565b60008219821115615d7857615d78615e20565b500190565b600082615d9a57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615615db957615db9615e20565b500290565b600082821015615dd057615dd0615e20565b500390565b60005b83811015615df0578181015183820152602001615dd8565b83811115615dff576000848401525b50505050565b6000600019821415615e1957615e19615e20565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60048110615e8857615e88615e36565b50565b6001600160a01b0381168114615e8857600080fd5b8015158114615e8857600080fd5b60048110615e8857600080fdfea2646970667358221220d6a87a5581708c02ee570024d3069ebe48e5f1e856800b39a156db0836401a9464736f6c63430008070033","sourceMap":"376:23237:73:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;695:31;;;;;;;;;;;;;;;;;;;34140:25:93;;;34128:2;34113:18;695:31:73;;;;;;;;661:27;;;;;;;;;;-1:-1:-1;661:27:73;;;;-1:-1:-1;;;;;661:27:73;;;;;;-1:-1:-1;;;;;15686:32:93;;;;15668:51;;15656:2;15641:18;661:27:73;15522:203:93;16149:340:73;;;;;;:::i;:::-;;:::i;:::-;;624:31;;;;;;;;;;-1:-1:-1;624:31:73;;;;-1:-1:-1;;;;;624:31:73;;;7129:4255;;;;;;:::i;:::-;;:::i;11618:1825::-;;;;;;:::i;:::-;;:::i;513:88:67:-;;;;;;;;;;-1:-1:-1;570:10:67;592:1;558:23;;;:11;:23;;;;;:36;;-1:-1:-1;;;;;;558:36:67;;;16149:340:73;3917:63;;;;;;;;;;;;;:::i;16871:2738::-;;;;;;:::i;:::-;;:::i;3155:238::-;;;;;;;;;;-1:-1:-1;3155:238:73;;;;;:::i;:::-;;:::i;732:23::-;;;;;;;;;;-1:-1:-1;732:23:73;;;;-1:-1:-1;;;;;732:23:73;;;1858:84:19;;;;;;;;;;-1:-1:-1;1928:7:19;;;;1858:84;;;19332:14:93;;19325:22;19307:41;;19295:2;19280:18;1858:84:19;19167:187:93;3986:183:73;;;;;;;;;;-1:-1:-1;3986:183:73;;;;;:::i;:::-;;:::i;762:42::-;;;;;;;;;;-1:-1:-1;762:42:73;;;;;:::i;:::-;;;;;;;;;;;;;;;;3799:59;;;;;;;;;;;;;:::i;607:695:67:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4175:164:73:-;;;;;;;;;;-1:-1:-1;4175:164:73;;;;;:::i;:::-;;:::i;15250:563::-;;;;;;;;;;-1:-1:-1;15250:563:73;;;;;:::i;:::-;;:::i;174:46:67:-;;;;;;;;;;-1:-1:-1;174:46:67;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;174:46:67;;;13638:287:73;;;;;;:::i;:::-;;:::i;568:49::-;;;;;;;;;;;;605:12;568:49;;19705:132;;;;;;;;;;-1:-1:-1;19705:132:73;;;;;:::i;:::-;;:::i;14224:862::-;;;;;;;;;;-1:-1:-1;14224:862:73;;;;;:::i;:::-;;:::i;263:244:67:-;;;;;;;;;;-1:-1:-1;263:244:67;;;;;:::i;:::-;478:10;466:23;;;;:11;:23;;;;;:34;;-1:-1:-1;;;;;;466:34:67;-1:-1:-1;;;;;466:34:67;;;;;;;;;;263:244;4685:2228:73;;;;;;:::i;:::-;;:::i;1308:197:67:-;;;;;;;;;;;;;:::i;3532:210:73:-;;;;;;;;;;-1:-1:-1;3532:210:73;;;;;:::i;:::-;;:::i;16149:340::-;1482:19:19;:17;:19::i;:::-;16349:37:73::1;16359:10;16371:6;16379;16349:9;:37::i;:::-;16399:27:::0;;16396:86:::1;;16428:54;16438:10;16450:6;16458;16466:15;;16428:9;:54::i;:::-;16149:340:::0;;;;;;:::o;7129:4255::-;7303:12;1482:19:19;:17;:19::i;:::-;7358:8:73::1;::::0;:26:::1;::::0;;-1:-1:-1;;;7358:26:73;;;;7328:27:::1;::::0;-1:-1:-1;;;;;7358:8:73::1;::::0;-1:-1:-1;;7358:26:73::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7328:56;;7394:24;7421:10;-1:-1:-1::0;;;;;7421:23:73::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7512:8;::::0;:33:::1;::::0;;-1:-1:-1;;;7512:33:73;;;;7394:52;;-1:-1:-1;;;;;;7512:8:73;;::::1;::::0;:31:::1;::::0;:33:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:33;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7465:8;::::0;-1:-1:-1;;;;;7465:8:73::1;:29;7495:13;:11;:13::i;:::-;7465:44;::::0;;-1:-1:-1;7465:44:73;;;-1:-1:-1;;;;;;7465:44:73;;;-1:-1:-1;;;;;15686:32:93;;;;7465:44:73::1;::::0;::::1;15668:51:93::0;7465:44:73;15641:18:93;;;;;7465:44:73::1;::::0;;;;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:80;7457:111;;;::::0;-1:-1:-1;;;7457:111:73;;27330:2:93;7457:111:73::1;::::0;::::1;27312:21:93::0;27369:2;27349:18;;;27342:30;-1:-1:-1;;;27388:18:93;;;27381:48;27446:18;;7457:111:73::1;;;;;;;;;7833:8;::::0;:27:::1;::::0;;-1:-1:-1;;;7833:27:73;;;;-1:-1:-1;;;;;7833:8:73;;::::1;::::0;:25:::1;::::0;:27:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7757:8;::::0;-1:-1:-1;;;;;7757:8:73::1;:29;7787:13;:11;:13::i;:::-;7757:57;::::0;;-1:-1:-1;7757:57:73;;;-1:-1:-1;;;;;;7757:57:73;;;-1:-1:-1;;;;;16591:32:93;;;;7757:57:73::1;::::0;::::1;16573:51:93::0;7802:11:73::1;::::0;;::::1;;16640:18:93::0;;;16633:34;7757:57:73;;16546:18:93;;;;;7757:57:73;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7679:8;::::0;-1:-1:-1;;;;;7679:8:73::1;:31;7711:13;:11;:13::i;:::-;7679:59;::::0;;-1:-1:-1;7679:59:73;;;-1:-1:-1;;;;;;7679:59:73;;;-1:-1:-1;;;;;16591:32:93;;;;7679:59:73::1;::::0;::::1;16573:51:93::0;7726:11:73::1;::::0;;::::1;;16640:18:93::0;;;16633:34;7679:59:73;;16546:18:93;;;;;7679:59:73;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7608:8;::::0;-1:-1:-1;;;;;7608:8:73::1;:24;7633:13;:11;:13::i;:::-;7608:52;::::0;;-1:-1:-1;7608:52:73;;;-1:-1:-1;;;;;;7608:52:73;;;-1:-1:-1;;;;;16591:32:93;;;;7608:52:73::1;::::0;::::1;16573:51:93::0;7648:11:73::1;::::0;;::::1;;16640:18:93::0;;;16633:34;7608:52:73;;16546:18:93;;;;;7608:52:73;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:130;;;;:::i;:::-;:206;;;;:::i;:::-;:252;7587:318;;;::::0;-1:-1:-1;;;7587:318:73;;25876:2:93;7587:318:73::1;::::0;::::1;25858:21:93::0;25915:2;25895:18;;;25888:30;-1:-1:-1;;;25934:18:93;;;25927:49;25993:18;;7587:318:73::1;25674:343:93::0;7587:318:73::1;7962:42;::::0;-1:-1:-1;;;7962:42:73;;7992:11:::1;::::0;::::1;;7962:42;::::0;::::1;34140:25:93::0;-1:-1:-1;;;;;7962:29:73;::::1;::::0;::::1;::::0;34113:18:93;;7962:42:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7924:34;:18;::::0;::::1;;7947:10;::::0;::::1;;7924:22;:34::i;:::-;:80;;7916:106;;;::::0;-1:-1:-1;;;7916:106:73;;22047:2:93;7916:106:73::1;::::0;::::1;22029:21:93::0;22086:2;22066:18;;;22059:30;-1:-1:-1;;;22105:18:93;;;22098:43;22158:18;;7916:106:73::1;21845:337:93::0;7916:106:73::1;8042:4;::::0;::::1;;:9:::0;;:62:::1;;-1:-1:-1::0;8056:5:73::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;:47;;8092:1;:11;;;8085:1;:4;;;:18;8056:47;;;8071:1;:11;;;8064:1;:4;;;:18;8056:47;8034:83;;;::::0;-1:-1:-1;;;8034:83:73;;24870:2:93;8034:83:73::1;::::0;::::1;24852:21:93::0;24909:1;24889:18;;;24882:29;-1:-1:-1;;;24927:18:93;;;24920:38;24975:18;;8034:83:73::1;24668:331:93::0;8034:83:73::1;8135:4;::::0;::::1;;:9:::0;;:62:::1;;-1:-1:-1::0;8149:5:73::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;:47;;8185:1;:11;;;8178:1;:4;;;:18;8149:47;;;8164:1;:11;;;8157:1;:4;;;:18;8149:47;8127:83;;;::::0;-1:-1:-1;;;8127:83:73;;25540:2:93;8127:83:73::1;::::0;::::1;25522:21:93::0;25579:1;25559:18;;;25552:29;-1:-1:-1;;;25597:18:93;;;25590:38;25645:18;;8127:83:73::1;25338:331:93::0;8127:83:73::1;605:12;8228:10;:26;8220:55;;;::::0;-1:-1:-1;;;8220:55:73;;21016:2:93;8220:55:73::1;::::0;::::1;20998:21:93::0;21055:2;21035:18;;;21028:30;-1:-1:-1;;;21074:18:93;;;21067:46;21130:18;;8220:55:73::1;20814:340:93::0;8220:55:73::1;8299:34;8290:5;:43;;;;;;;;:::i;:::-;;;:94;;;;-1:-1:-1::0;8346:38:73::1;8337:5;:47;;;;;;;;:::i;:::-;;;8290:94;8286:2972;;;8440:1;8427;:10;;;:14;:99;;;;-1:-1:-1::0;8479:47:73::1;::::0;-1:-1:-1;;;8479:47:73;;8507:11:::1;::::0;::::1;;8479:47;::::0;::::1;35610:25:93::0;8520:5:73::1;35651:18:93::0;;;35644:50;-1:-1:-1;;;;;8479:27:73;::::1;::::0;::::1;::::0;35583:18:93;;8479:47:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8465:1;:10;;;:61;;8427:99;:184;;;;-1:-1:-1::0;8564:47:73::1;::::0;-1:-1:-1;;;8564:47:73;;8592:11:::1;::::0;::::1;;8564:47;::::0;::::1;35610:25:93::0;8605:5:73::1;35651:18:93::0;;;35644:50;-1:-1:-1;;;;;8564:27:73;::::1;::::0;::::1;::::0;35583:18:93;;8564:47:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8550:1;:10;;;:61;;8427:184;8402:261;;;::::0;-1:-1:-1;;;8402:261:73;;22389:2:93;8402:261:73::1;::::0;::::1;22371:21:93::0;22428:2;22408:18;;;22401:30;-1:-1:-1;;;22447:18:93;;;22440:48;22505:18;;8402:261:73::1;22187:342:93::0;8402:261:73::1;8678:8;::::0;-1:-1:-1;;;;;8678:8:73::1;:21;8700:13;:11;:13::i;:::-;8723:8;::::0;8678:75:::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;;8678:75:73;;;-1:-1:-1;;;;;15988:15:93;;;8678:75:73::1;::::0;::::1;15970:34:93::0;8723:8:73;::::1;16020:18:93::0;;;16013:43;8734:18:73::1;::::0;::::1;;16072::93::0;;;16065:34;15905:18;;8678:75:73::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;8780:8:73::1;::::0;8767:10:::1;::::0;-1:-1:-1;;;;;;8780:8:73::1;::::0;-1:-1:-1;8780:33:73::1;8814:13;:11;:13::i;:::-;8780:61;::::0;;-1:-1:-1;8780:61:73;;;-1:-1:-1;;;;;;8780:61:73;;;-1:-1:-1;;;;;16591:32:93;;;;8780:61:73::1;::::0;::::1;16573:51:93::0;8829:11:73::1;::::0;;::::1;;16640:18:93::0;;;16633:34;8780:61:73;;16546:18:93;;;;;8780:61:73;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8856:8;::::0;8902:416:::1;::::0;;::::1;::::0;::::1;::::0;;;8767:74;;-1:-1:-1;;;;;;8856:8:73::1;::::0;:28:::1;::::0;8902:416;8954:13:::1;:11;:13::i;:::-;-1:-1:-1::0;;;;;8902:416:73::1;::::0;;::::1;8989:11:::0;;::::1;;8902:416:::0;;::::1;::::0;;;;;;;9049:18:::1;::::0;;::::1;;8902:416:::0;;;;;9089:5:::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;8902:416;;;;;;9116:1;:10;;;8902:416;;;;9148:1;:4;;;8902:416;;;;9174:1;:4;;;8902:416;;;;9200:1;:11;;;8902:416;;;;9233:10;8902:416;;;;9265:12;8902:416;;;;9299:1;8902:416;;::::0;8856:476:::1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9347:10;-1:-1:-1::0;;;;;9347:21:73::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9347:45:73::1;;9393:13;:11;:13::i;:::-;9408:1;:11;;;9421:5;9428;9347:87;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9470:13;:11;:13::i;:::-;-1:-1:-1::0;;;;;9454:112:73::1;;9485:11;::::0;::::1;;9498:5:::0;9505::::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;9512:1;:11;;;9525:1;9528:5;9535:10;9547:1;:18;;;9454:112;;;;;;;;;;;;;:::i;:::-;;;;;;;;8387:1190;8286:2972;;;9636:1;9623;:10;;;:14;:142;;;;-1:-1:-1::0;;;;;;9675:27:73;::::1;;9703:11;::::0;::::1;;9726:38;9717:5:::0;:47;;::::1;;;;;;:::i;:::-;9675:90;::::0;-1:-1:-1;;;;;;9675:90:73::1;::::0;;;;;;::::1;::::0;::::1;35610:25:93::0;;;;9717:47:73::1;35651:18:93::0;;;35644:50;35583:18;;9675:90:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9661:1;:10;;;:104;;9623:142;:270;;;;-1:-1:-1::0;;;;;;9803:27:73;::::1;;9831:11;::::0;::::1;;9854:38;9845:5:::0;:47;;::::1;;;;;;:::i;:::-;9803:90;::::0;-1:-1:-1;;;;;;9803:90:73::1;::::0;;;;;;::::1;::::0;::::1;35610:25:93::0;;;;9845:47:73::1;35651:18:93::0;;;35644:50;35583:18;;9803:90:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9789:1;:10;;;:104;;9623:270;9598:347;;;::::0;-1:-1:-1;;;9598:347:73;;22389:2:93;9598:347:73::1;::::0;::::1;22371:21:93::0;22428:2;22408:18;;;22401:30;-1:-1:-1;;;22447:18:93;;;22440:48;22505:18;;9598:347:73::1;22187:342:93::0;9598:347:73::1;9972:38;9963:5;:47;;;;;;;;:::i;:::-;;9960:132;;;10020:46;::::0;-1:-1:-1;;;10020:46:73;;10054:11:::1;::::0;::::1;;10020:46;::::0;::::1;34140:25:93::0;-1:-1:-1;;;;;10020:33:73;::::1;::::0;::::1;::::0;34113:18:93;;10020:46:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10012:80;;;::::0;-1:-1:-1;;;10012:80:73;;22736:2:93;10012:80:73::1;::::0;::::1;22718:21:93::0;22775:2;22755:18;;;22748:30;-1:-1:-1;;;22794:18:93;;;22787:51;22855:18;;10012:80:73::1;22534:345:93::0;10012:80:73::1;10107:8;::::0;-1:-1:-1;;;;;10107:8:73::1;:21;10129:13;:11;:13::i;:::-;10152:8;::::0;10107:75:::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;;10107:75:73;;;-1:-1:-1;;;;;15988:15:93;;;10107:75:73::1;::::0;::::1;15970:34:93::0;10152:8:73;::::1;16020:18:93::0;;;16013:43;10163:18:73::1;::::0;::::1;;16072::93::0;;;16065:34;15905:18;;10107:75:73::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;10216:34:73::1;::::0;-1:-1:-1;10207:43:73::1;::::0;-1:-1:-1;;10207:43:73;::::1;:5;:43;;;;;;;;:::i;:::-;;:246;;10377:76;::::0;-1:-1:-1;;;10377:76:73;;-1:-1:-1;;;;;10377:19:73;::::1;::::0;::::1;::::0;:76:::1;::::0;10397:11:::1;::::0;::::1;;::::0;10410:42:::1;::::0;10377:76:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10207:246;;;10278:72;::::0;-1:-1:-1;;;10278:72:73;;-1:-1:-1;;;;;10278:19:73;::::1;::::0;::::1;::::0;:72:::1;::::0;10298:11:::1;::::0;::::1;;::::0;10311:38:::1;::::0;10278:72:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10469:8;::::0;10519:560:::1;::::0;;10575:398;;;;;;10197:256;;-1:-1:-1;;;;;;10469:8:73::1;::::0;:32:::1;::::0;10519:560;::::1;::::0;::::1;::::0;10622:13:::1;:11;:13::i;:::-;-1:-1:-1::0;;;;;10575:398:73::1;;;;;10661:1;:11;;;10575:398;;;;10698:1;10575:398;;;;10725:1;10575:398;;;;10752:1;:18;;;10575:398;;;;10796:1;10575:398;;;;10823:1;:5;;;;;;;;;;:::i;:::-;10575:398;;;;;;10854:1;:10;;;10575:398;;;;10890:1;:4;;;10575:398;;;;10920:1;:4;;;10575:398;;;;10950:1;10575:398;;::::0;10519:560:::1;;;;10995:1;10519:560;;;;11018:1;:11;;;10519:560;;;;11051:10;10519:560;;::::0;11097:7:::1;11122:4;10469:671;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11181:13;:11;:13::i;:::-;-1:-1:-1::0;;;;;11160:87:73::1;;11196:11;::::0;::::1;;-1:-1:-1::0;11215:7:73;11224:15:::1;11241:5;::::0;;;::::1;::::0;::::1;;:::i;:::-;11160:87;::::0;;35952:25:93;;;36020:14;;36013:22;36008:2;35993:18;;35986:50;36052:18;;;36045:34;;;;36110:2;36095:18;;36088:34;36166:14;36159:22;36153:3;36138:19;;36131:51;35939:3;35924:19;11160:87:73::1;;;;;;;8286:2972;11292:8;::::0;11284:44:::1;::::0;11269:9:::1;::::0;-1:-1:-1;;;;;11292:8:73::1;::::0;11314:9:::1;::::0;11269;11284:44;11269:9;11284:44;11314:9;11292:8;11284:44:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11268:60;;;11346:4;11338:39;;;::::0;-1:-1:-1;;;11338:39:73;;26224:2:93;11338:39:73::1;::::0;::::1;26206:21:93::0;26263:2;26243:18;;;26236:30;-1:-1:-1;;;26282:18:93;;;26275:52;26344:18;;11338:39:73::1;26022:346:93::0;11338:39:73::1;7317:4067;;;7129:4255:::0;;;;;:::o;11618:1825::-;11784:12;1482:19:19;:17;:19::i;:::-;11852:8:73::1;::::0;:26:::1;::::0;;-1:-1:-1;;;11852:26:73;;;;11808:24:::1;::::0;-1:-1:-1;;;;;11852:8:73::1;::::0;-1:-1:-1;;11852:26:73::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11835:57:73::1;;:59;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11928:8;::::0;11920:44:::1;::::0;11808:86;;-1:-1:-1;11905:9:73::1;::::0;-1:-1:-1;;;;;11928:8:73;;::::1;::::0;11950:9:::1;::::0;11905;11920:44;11905:9;11920:44;11950:9;11928:8;11920:44:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11904:60;;;11982:4;11974:39;;;::::0;-1:-1:-1;;;11974:39:73;;26224:2:93;11974:39:73::1;::::0;::::1;26206:21:93::0;26263:2;26243:18;;;26236:30;-1:-1:-1;;;26282:18:93;;;26275:52;26344:18;;11974:39:73::1;26022:346:93::0;11974:39:73::1;12057:8;::::0;12024:30:::1;::::0;-1:-1:-1;;;;;12057:8:73::1;:19;12077:13;:11;:13::i;:::-;12057:54;::::0;-1:-1:-1;;;;;;12057:54:73::1;::::0;;;;;;-1:-1:-1;;;;;16898:32:93;;;12057:54:73::1;::::0;::::1;16880:51:93::0;16947:18;;;16940:34;;;16990:18;;;16983:34;;;16853:18;;12057:54:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12146:8;::::0;12024:87;;-1:-1:-1;12121:22:73::1;::::0;-1:-1:-1;;;;;12146:8:73::1;:23;12170:13;:11;:13::i;:::-;12146:58;::::0;-1:-1:-1;;;;;;12146:58:73::1;::::0;;;;;;-1:-1:-1;;;;;16898:32:93;;;12146:58:73::1;::::0;::::1;16880:51:93::0;16947:18;;;16940:34;;;16990:18;;;16983:34;;;16853:18;;12146:58:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:76;;;12121:101;;12252:1;:17;;;12241:7;:28;;12233:51;;;::::0;-1:-1:-1;;;12233:51:73;;30132:2:93;12233:51:73::1;::::0;::::1;30114:21:93::0;30171:2;30151:18;;;30144:30;-1:-1:-1;;;30190:18:93;;;30183:40;30240:18;;12233:51:73::1;29930:334:93::0;12233:51:73::1;12349:8;::::0;:33:::1;::::0;;-1:-1:-1;;;12349:33:73;;;;-1:-1:-1;;;;;12349:8:73;;::::1;::::0;:31:::1;::::0;:33:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:33;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12302:8;::::0;-1:-1:-1;;;;;12302:8:73::1;:29;12332:13;:11;:13::i;:::-;12302:44;::::0;;-1:-1:-1;12302:44:73;;;-1:-1:-1;;;;;;12302:44:73;;;-1:-1:-1;;;;;15686:32:93;;;;12302:44:73::1;::::0;::::1;15668:51:93::0;12302:44:73;15641:18:93;;;;;12302:44:73::1;::::0;;;;;;;;;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:80;12294:111;;;::::0;-1:-1:-1;;;12294:111:73;;27330:2:93;12294:111:73::1;::::0;::::1;27312:21:93::0;27369:2;27349:18;;;27342:30;-1:-1:-1;;;27388:18:93;;;27381:48;27446:18;;12294:111:73::1;27128:342:93::0;12294:111:73::1;12424:17;12423:18;12415:51;;;::::0;-1:-1:-1;;;12415:51:73;;29106:2:93;12415:51:73::1;::::0;::::1;29088:21:93::0;29145:2;29125:18;;;29118:30;-1:-1:-1;;;29164:18:93;;;29157:50;29224:18;;12415:51:73::1;28904:344:93::0;12415:51:73::1;12497:1;12484;:10;;;:14;12476:35;;;::::0;-1:-1:-1;;;12476:35:73;;21361:2:93;12476:35:73::1;::::0;::::1;21343:21:93::0;21400:1;21380:18;;;21373:29;-1:-1:-1;;;21418:18:93;;;21411:38;21466:18;;12476:35:73::1;21159:331:93::0;12476:35:73::1;12617:10;::::0;::::1;::::0;-1:-1:-1;;;;;12562:30:73;::::1;::::0;::::1;::::0;12593:10;;12605:23:::1;::::0;:7;;:11:::1;:23::i;:::-;12562:67;::::0;-1:-1:-1;;;;;;12562:67:73::1;::::0;;;;;;::::1;::::0;::::1;38194:25:93::0;;;;38235:18;;;38228:34;38167:18;;12562:67:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12547:11;::::0;::::1;::::0;12529:29:::1;::::0;:15:::1;:29;:::i;:::-;:100;;12521:124;;;::::0;-1:-1:-1;;;12521:124:73;;30471:2:93;12521:124:73::1;::::0;::::1;30453:21:93::0;30510:2;30490:18;;;30483:30;-1:-1:-1;;;30529:18:93;;;30522:41;30580:18;;12521:124:73::1;30269:335:93::0;12521:124:73::1;12669:8;::::0;:26:::1;::::0;;-1:-1:-1;;;12669:26:73;;;;12656:10:::1;::::0;-1:-1:-1;;;;;12669:8:73::1;::::0;-1:-1:-1;;12669:26:73::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12669:39:73::1;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12669:52:73::1;;12722:13;:11;:13::i;:::-;12669:87;::::0;-1:-1:-1;;;;;;12669:87:73::1;::::0;;;;;;-1:-1:-1;;;;;16898:32:93;;;12669:87:73::1;::::0;::::1;16880:51:93::0;16947:18;;;16940:34;;;16990:18;;;16983:34;;;16853:18;;12669:87:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12656:100;;12777:5;:228;;12917:8;::::0;:26:::1;::::0;;-1:-1:-1;;;12917:26:73;;;;-1:-1:-1;;;;;12917:8:73;;::::1;::::0;:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:88;::::0;-1:-1:-1;;;12917:88:73;;-1:-1:-1;;;;;12917:35:73;;;::::1;::::0;::::1;::::0;:88:::1;::::0;12953:10;;-1:-1:-1;;12917:88:73::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12777:228;;;12804:8;::::0;:26:::1;::::0;;-1:-1:-1;;;12804:26:73;;;;-1:-1:-1;;;;;12804:8:73;;::::1;::::0;:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:92;::::0;-1:-1:-1;;;12804:92:73;;-1:-1:-1;;;;;12804:35:73;;;::::1;::::0;::::1;::::0;:92:::1;::::0;12840:10;;12852:43:::1;::::0;12804:92:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13016:8;::::0;13062:213:::1;::::0;;13114:90;;;;;;12767:238;;-1:-1:-1;;;;;;13016:8:73::1;::::0;:32:::1;::::0;13062:213;::::1;::::0;::::1;::::0;13136:13:::1;:11;:13::i;:::-;-1:-1:-1::0;;;;;13114:90:73::1;;;;;13151:10;13114:90;;;;13163:6;13114:90;;;;13171:7;13114:90;;;;13180:1;13114:90;;;;13183:1;13114:90;;;;13186:5;13114:90;;;;;;13193:1;13114:90;;;;13196:1;13114:90;;;;13199:1;13114:90;;;;13202:1;13114:90;;::::0;13062:213:::1;;;;13222:1;13062:213;;;;13241:1;13062:213;;;;13260:1;13062:213;;::::0;13289:7:::1;13310:5;13016:309;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13370:13;:11;:13::i;:::-;13430:5;::::0;::::1;::::0;13349:87:::1;::::0;;35952:25:93;;;13397:5:73::1;36008:2:93::0;35993:18;;35986:50;36052:18;;;36045:34;;;13413:15:73::1;36110:2:93::0;36095:18;;36088:34;36166:14;;36159:22;36153:3;36138:19;;36131:51;13349:87:73;-1:-1:-1;;;;;13349:87:73;;;::::1;::::0;::::1;::::0;;;;-1:-1:-1;13349:87:73;;::::1;11797:1646;;;;;11618:1825:::0;;;;;:::o;3917:63::-;2757:8;;:14;;;-1:-1:-1;;;2757:14:73;;;;-1:-1:-1;;;;;2757:8:73;;;;:12;;:14;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2743:28:73;:10;:28;2735:49;;;;-1:-1:-1;;;2735:49:73;;29455:2:93;2735:49:73;;;29437:21:93;29494:1;29474:18;;;29467:29;-1:-1:-1;;;29512:18:93;;;29505:38;29560:18;;2735:49:73;29253:331:93;2735:49:73;3963:10:::1;:8;:10::i;:::-;3917:63::o:0;16871:2738::-;1482:19:19;:17;:19::i;:::-;2861:10:73::1;2850:22;::::0;;;:10:::1;:22;::::0;;;;;::::1;;2842:48;;;::::0;-1:-1:-1;;;2842:48:73;;28013:2:93;2842:48:73::1;::::0;::::1;27995:21:93::0;28052:2;28032:18;;;28025:30;-1:-1:-1;;;28071:18:93;;;28064:43;28124:18;;2842:48:73::1;27811:337:93::0;2842:48:73::1;17163:8:::2;::::0;:26:::2;::::0;;-1:-1:-1;;;17163:26:73;;;;17119:24:::2;::::0;-1:-1:-1;;;;;17163:8:73::2;::::0;-1:-1:-1;;17163:26:73::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;:8;:26;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17146:57:73::2;;:59;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17119:86:::0;-1:-1:-1;17233:31:73::2;17219:10;:45;;;;;;;;:::i;:::-;;17215:1242;;;17297:8;::::0;:55:::2;::::0;-1:-1:-1;;;17297:55:73;;-1:-1:-1;;;;;16898:32:93;;;17297:55:73::2;::::0;::::2;16880:51:93::0;16947:18;;;16940:34;;;16990:18;;;16983:34;;;17297:8:73;;::::2;::::0;:26:::2;::::0;16853:18:93;;17297:55:73::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17289:76;;;::::0;-1:-1:-1;;;17289:76:73;;27677:2:93;17289:76:73::2;::::0;::::2;27659:21:93::0;27716:1;27696:18;;;27689:29;-1:-1:-1;;;27734:18:93;;;27727:38;27782:18;;17289:76:73::2;27475:331:93::0;17289:76:73::2;17215:1242;;;17430:8;::::0;:48:::2;::::0;-1:-1:-1;;;17430:48:73;;-1:-1:-1;;;;;16898:32:93;;;17430:48:73::2;::::0;::::2;16880:51:93::0;16947:18;;;16940:34;;;16990:18;;;16983:34;;;17397:30:73::2;::::0;17430:8:::2;::::0;:19:::2;::::0;16853:18:93;;17430:48:73::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17397:81;;17514:1;17501;:10;;;:14;17493:35;;;::::0;-1:-1:-1;;;17493:35:73;;21361:2:93;17493:35:73::2;::::0;::::2;21343:21:93::0;21400:1;21380:18;;;21373:29;-1:-1:-1;;;21418:18:93;;;21411:38;21466:18;;17493:35:73::2;21159:331:93::0;17493:35:73::2;17564:29;17550:10;:43;;;;;;;;:::i;:::-;;;:55;;;;17604:1;17597;:4;;;:8;17550:55;17542:73;;;::::0;-1:-1:-1;;;17542:73:73;;26997:2:93;17542:73:73::2;::::0;::::2;26979:21:93::0;27036:1;27016:18;;;27009:29;-1:-1:-1;;;27054:18:93;;;27047:35;27099:18;;17542:73:73::2;26795:328:93::0;17542:73:73::2;17648:30;17634:10;:44;;;;;;;;:::i;:::-;;17630:817;;;17715:9;::::0;17787:8;;17833:11:::2;::::0;::::2;::::0;17882:7:::2;::::0;;::::2;::::0;17927:11:::2;::::0;::::2;::::0;17976:5:::2;::::0;::::2;::::0;18019:17:::2;::::0;::::2;::::0;18074:10:::2;::::0;::::2;::::0;17715:403;;-1:-1:-1;;;17715:403:73;;-1:-1:-1;;;;;18846:32:93;;;17715:403:73::2;::::0;::::2;18828:51:93::0;18895:18;;;18888:34;;;;18938:18;;;18931:34;;;;18981:18;;;18974:34;;;;19052:14;19045:22;19024:19;;;19017:51;19084:19;;;19077:35;19128:19;;;19121:35;17698:13:73::2;::::0;17715:9;;;::::2;::::0;:34:::2;::::0;18800:19:93;;17715:403:73::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17698:420;;18144:1;:4;;;18152:1;18144:9;:56;;;;18158:1;:5;;;:41;;18195:1;:4;;;18184:8;:15;18158:41;;;18177:1;:4;;;18166:8;:15;18158:41;18136:75;;;::::0;-1:-1:-1;;;18136:75:73;;25206:2:93;18136:75:73::2;::::0;::::2;25188:21:93::0;25245:1;25225:18;;;25218:29;-1:-1:-1;;;25263:18:93;;;25256:36;25309:18;;18136:75:73::2;25004:329:93::0;18136:75:73::2;17680:546;17630:817;;;18249:29;18235:10;:43;;;;;;;;:::i;:::-;;18231:216;;;18369:11;::::0;::::2;::::0;18404:10:::2;::::0;::::2;::::0;18382:17:::2;::::0;::::2;::::0;-1:-1:-1;;;;;18338:30:73;::::2;::::0;::::2;::::0;18369:11;;18382:33:::2;::::0;:21:::2;:33::i;:::-;18338:78;::::0;-1:-1:-1;;;;;;18338:78:73::2;::::0;;;;;;::::2;::::0;::::2;38194:25:93::0;;;;38235:18;;;38228:34;38167:18;;18338:78:73::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18323:11;::::0;::::2;::::0;18305:29:::2;::::0;:15:::2;:29;:::i;:::-;:111;;18297:135;;;::::0;-1:-1:-1;;;18297:135:73;;30471:2:93;18297:135:73::2;::::0;::::2;30453:21:93::0;30510:2;30490:18;;;30483:30;-1:-1:-1;;;30529:18:93;;;30522:41;30580:18;;18297:135:73::2;30269:335:93::0;18297:135:73::2;17383:1074;17215:1242;18497:8;::::0;:26:::2;::::0;;-1:-1:-1;;;18497:26:73;;;;18467:27:::2;::::0;-1:-1:-1;;;;;18497:8:73::2;::::0;-1:-1:-1;;18497:26:73::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;:8;:26;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18467:56;;18533:17;18553:10;-1:-1:-1::0;;;;;18553:21:73::2;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18533:43;;18587:49;18639:124;;;;;;;;18678:7;-1:-1:-1::0;;;;;18639:124:73::2;;;;;18699:10;18639:124;;;;18723:6;18639:124;;;;18743:10;18639:124;;;;;;;;:::i;:::-;::::0;;18787:8:::2;::::0;:26:::2;::::0;;-1:-1:-1;;;18787:26:73;;;;18587:176;;-1:-1:-1;18774:10:73::2;::::0;-1:-1:-1;;;;;18787:8:73;;::::2;::::0;:24:::2;::::0;:26:::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;;:8;:26;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18787:39:73::2;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:81;::::0;-1:-1:-1;;;18787:81:73;;-1:-1:-1;;;;;16898:32:93;;;18787:81:73::2;::::0;::::2;16880:51:93::0;16947:18;;;16940:34;;;16990:18;;;16983:34;;;18787:52:73;;;::::2;::::0;::::2;::::0;16853:18:93;;18787:81:73::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18774:94:::0;-1:-1:-1;18879:12:73::2;-1:-1:-1::0;;;;;18894:19:73;::::2;;18927:10:::0;18965:31:::2;18951:10:::0;:45;;::::2;;;;;;:::i;:::-;;:254;;19071:5;:134;;19167:38;18951:254;;19071:134;19100:42;18951:254;;;19015:37;18951:254;18894:321;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19226:8;::::0;19271:74:::2;::::0;;::::2;::::0;::::2;::::0;;-1:-1:-1;;;;;19271:74:73;;::::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;;18879:336;;-1:-1:-1;19226:8:73::2;::::0;:31:::2;::::0;19271:74;;;19334:10;19271:74:::2;::::0;::::2;;;;;;:::i;:::-;;;::::0;19359:7:::2;19226:150;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;;;;;;;19387:28:73;::::2;::::0;-1:-1:-1;19387:28:73::2;19416:16:::0;19434:13:::2;:11;:13::i;:::-;19387:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;19463:66:73::2;::::0;;39959:25:93;;;40015:2;40000:18;;39993:34;;;19513:15:73::2;40043:18:93::0;;;40036:34;19463:66:73;;-1:-1:-1;;;;;19463:66:73;::::2;::::0;-1:-1:-1;19463:66:73::2;::::0;-1:-1:-1;19463:66:73;;;;39947:2:93;19463:66:73;;::::2;19540:62;::::0;-1:-1:-1;;;19540:62:73;;-1:-1:-1;;;;;19540:18:73;::::2;::::0;-1:-1:-1;;19566:9:73::2;::::0;19540:62:::2;::::0;19577:7;;19586:15;;;;19540:62:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;17108:2501;;;;;;16871:2738:::0;;;;;;:::o;3155:238::-;3279:19:18;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:18;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:18;1713:19:31;:23;;;3387:66:18;;-1:-1:-1;3436:12:18;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:18;;24455:2:93;3325:201:18;;;24437:21:93;24494:2;24474:18;;;24467:30;24533:34;24513:18;;;24506:62;-1:-1:-1;;;24584:18:93;;;24577:44;24638:19;;3325:201:18;24253:410:93;3325:201:18;3536:12;:16;;-1:-1:-1;;3536:16:18;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:18;;;;;3562:65;3245:8:73::1;:37:::0;;-1:-1:-1;;;;;3245:37:73;;::::1;-1:-1:-1::0;;;;;;3245:37:73;;::::1;;::::0;;;3292:9:::1;:34:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;3358:1:::1;3336:19;:23:::0;3369:17:::1;:15;:17::i;:::-;3651:14:18::0;3647:99;;;3697:5;3681:21;;-1:-1:-1;;3681:21:18;;;3721:14;;-1:-1:-1;20194:36:93;;3721:14:18;;20182:2:93;20167:18;3721:14:18;;;;;;;3647:99;3269:483;3155:238:73;;:::o;3986:183::-;2757:8;;:14;;;-1:-1:-1;;;2757:14:73;;;;-1:-1:-1;;;;;2757:8:73;;;;:12;;:14;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2743:28:73;:10;:28;2735:49;;;;-1:-1:-1;;;2735:49:73;;29455:2:93;2735:49:73;;;29437:21:93;29494:1;29474:18;;;29467:29;-1:-1:-1;;;29512:18:93;;;29505:38;29560:18;;2735:49:73;29253:331:93;2735:49:73;-1:-1:-1;;;;;4073:21:73;::::1;;::::0;;;:10:::1;:21;::::0;;;;;;;;:35;;-1:-1:-1;;4073:35:73::1;::::0;::::1;;::::0;;::::1;::::0;;;4123:39;;16278:51:93;;;16345:18;;;16338:50;4123:39:73;;::::1;::::0;;;;;;;;::::1;3986:183:::0;;:::o;3799:59::-;2757:8;;:14;;;-1:-1:-1;;;2757:14:73;;;;-1:-1:-1;;;;;2757:8:73;;;;:12;;:14;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2743:28:73;:10;:28;2735:49;;;;-1:-1:-1;;;2735:49:73;;29455:2:93;2735:49:73;;;29437:21:93;29494:1;29474:18;;;29467:29;-1:-1:-1;;;29512:18:93;;;29505:38;29560:18;;2735:49:73;29253:331:93;2735:49:73;3843:8:::1;:6;:8::i;607:695:67:-:0;-1:-1:-1;;;;;732:19:67;;;;;;;:11;:19;;;;;;700:12;;732:19;755:10;732:33;724:67;;;;-1:-1:-1;;;724:67:67;;21697:2:93;724:67:67;;;21679:21:93;21736:2;21716:18;;;21709:30;-1:-1:-1;;;21755:18:93;;;21748:51;21816:18;;724:67:67;21495:345:93;724:67:67;802:14;:23;;-1:-1:-1;;;;;;802:23:67;-1:-1:-1;;;;;802:23:67;;;;;873:37;;-1:-1:-1;;;;881:4:67;;873:37;;900:9;;;;873:37;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;835:75;;;;925:7;920:314;;1080:2;1064:6;:13;:18;1060:32;;;1084:8;;;1060:32;1155:4;1147:6;1143:17;1133:27;;1205:6;1194:28;;;;;;;;;;;;:::i;:::-;1187:36;;-1:-1:-1;;;1187:36:67;;;;;;;;:::i;920:314::-;1244:14;:27;;-1:-1:-1;;;;;;1244:27:67;;;1289:6;;-1:-1:-1;;;;;607:695:67:o;4175:164:73:-;2757:8;;:14;;;-1:-1:-1;;;2757:14:73;;;;-1:-1:-1;;;;;2757:8:73;;;;:12;;:14;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2743:28:73;:10;:28;2735:49;;;;-1:-1:-1;;;2735:49:73;;29455:2:93;2735:49:73;;;29437:21:93;29494:1;29474:18;;;29467:29;-1:-1:-1;;;29512:18:93;;;29505:38;29560:18;;2735:49:73;29253:331:93;2735:49:73;-1:-1:-1;;;;;4262:23:73;::::1;4254:48;;;::::0;-1:-1:-1;;;4254:48:73;;24114:2:93;4254:48:73::1;::::0;::::1;24096:21:93::0;24153:2;24133:18;;;24126:30;-1:-1:-1;;;24172:18:93;;;24165:42;24224:18;;4254:48:73::1;23912:336:93::0;4254:48:73::1;4312:8;:20:::0;;-1:-1:-1;;;;;;4312:20:73::1;-1:-1:-1::0;;;;;4312:20:73;;;::::1;::::0;;;::::1;::::0;;4175:164::o;15250:563::-;1482:19:19;:17;:19::i;:::-;15385:8:73::1;::::0;15343:39:::1;::::0;-1:-1:-1;;;;;15385:8:73::1;:26;15412:13;:11;:13::i;:::-;15385:61;::::0;-1:-1:-1;;;;;;15385:61:73::1;::::0;;;;;;-1:-1:-1;;;;;16898:32:93;;;15385:61:73::1;::::0;::::1;16880:51:93::0;16947:18;;;16940:34;;;16990:18;;;16983:34;;;16853:18;;15385:61:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15343:103;;15490:19;;15479:1;:7;;;15464:12;:22;;;;:::i;:::-;:45;;15456:72;;;::::0;-1:-1:-1;;;15456:72:73;;23086:2:93;15456:72:73::1;::::0;::::1;23068:21:93::0;23125:2;23105:18;;;23098:30;-1:-1:-1;;;23144:18:93;;;23137:44;23198:18;;15456:72:73::1;22884:338:93::0;15456:72:73::1;15539:8;::::0;-1:-1:-1;;;;;15539:8:73::1;:21;:8:::0;15580:13:::1;:11;:13::i;:::-;15612:1;:14;;;15595:1;:14;;;:31;;;;:::i;:::-;15539:88;::::0;;-1:-1:-1;15539:88:73;;;-1:-1:-1;;;;;;15539:88:73;;;-1:-1:-1;;;;;15988:15:93;;;15539:88:73::1;::::0;::::1;15970:34:93::0;16040:15;;;;16020:18;;;16013:43;16072:18;;;16065:34;15539:88:73;;15905:18:93;;;;;-1:-1:-1;;15539:88:73;;;;;;;-1:-1:-1;15539:88:73;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;15637:8:73::1;::::0;-1:-1:-1;;;;;15637:8:73::1;::::0;-1:-1:-1;15637:33:73::1;::::0;-1:-1:-1;15671:13:73::1;:11;:13::i;:::-;15637:68;::::0;-1:-1:-1;;;;;;15637:68:73::1;::::0;;;;;;-1:-1:-1;;;;;16898:32:93;;;15637:68:73::1;::::0;::::1;16880:51:93::0;16947:18;;;16940:34;;;16990:18;;;16983:34;;;16853:18;;15637:68:73::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15739:13;:11;:13::i;:::-;15791:14;::::0;;::::1;::::0;15721:85:::1;::::0;;40312:25:93;;;40368:2;40353:18;;40346:34;;;15774:15:73::1;40396:18:93::0;;;40389:34;40439:18;;;40432:34;;;;15721:85:73;-1:-1:-1;;;;;15721:85:73;;;::::1;::::0;::::1;::::0;;;;40299:3:93;15721:85:73;;::::1;15333:480;15250:563:::0;;:::o;13638:287::-;2861:10;2850:22;;;;:10;:22;;;;;;;;2842:48;;;;-1:-1:-1;;;2842:48:73;;28013:2:93;2842:48:73;;;27995:21:93;28052:2;28032:18;;;28025:30;-1:-1:-1;;;28071:18:93;;;28064:43;28124:18;;2842:48:73;27811:337:93;2842:48:73;13778:6:::1;13774:145;13790:17:::0;;::::1;13774:145;;;13827:8;::::0;:26:::1;::::0;;-1:-1:-1;;;13827:26:73;;;;-1:-1:-1;;;;;13827:8:73;;::::1;::::0;:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13827:34:73::1;;13869:9;13880:7:::0;;13888:1;13880:10;;::::1;;;;;:::i;:::-;;;;;;;13892:15;;13827:81;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;13809:3;;;;;:::i;:::-;;;;13774:145;;;;13638:287:::0;;;;:::o;19705:132::-;2861:10;2850:22;;;;:10;:22;;;;;;;;2842:48;;;;-1:-1:-1;;;2842:48:73;;28013:2:93;2842:48:73;;;27995:21:93;28052:2;28032:18;;;28025:30;-1:-1:-1;;;28071:18:93;;;28064:43;28124:18;;2842:48:73;27811:337:93;2842:48:73;19783:8:::1;::::0;:47:::1;::::0;-1:-1:-1;;;19783:47:73;;::::1;::::0;::::1;34140:25:93::0;;;-1:-1:-1;;;;;19783:8:73;;::::1;::::0;:42:::1;::::0;34113:18:93;;19783:47:73::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;14224:862:::0;1482:19:19;:17;:19::i;:::-;14464:8:73::1;::::0;14422:39:::1;::::0;-1:-1:-1;;;;;14464:8:73::1;:26;14491:13;:11;:13::i;:::-;14464:61;::::0;-1:-1:-1;;;;;;14464:61:73::1;::::0;;;;;;-1:-1:-1;;;;;16898:32:93;;;14464:61:73::1;::::0;::::1;16880:51:93::0;16947:18;;;16940:34;;;16990:18;;;16983:34;;;16853:18;;14464:61:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14422:103;;14569:19;;14558:1;:7;;;14543:12;:22;;;;:::i;:::-;:45;;14535:72;;;::::0;-1:-1:-1;;;14535:72:73;;23086:2:93;14535:72:73::1;::::0;::::1;23068:21:93::0;23125:2;23105:18;;;23098:30;-1:-1:-1;;;23144:18:93;;;23137:44;23198:18;;14535:72:73::1;22884:338:93::0;14535:72:73::1;14626:8:::0;;;:49:::1;;;14639:1;:5;;;:35;;14671:3;14662:6;:12;14639:35;;;14656:3;14647:6;:12;14639:35;14618:70;;;::::0;-1:-1:-1;;;14618:70:73;;24870:2:93;14618:70:73::1;::::0;::::1;24852:21:93::0;24909:1;24889:18;;;24882:29;-1:-1:-1;;;24927:18:93;;;24920:38;24975:18;;14618:70:73::1;24668:331:93::0;14618:70:73::1;14706:8:::0;;;:49:::1;;;14719:1;:5;;;:35;;14751:3;14742:6;:12;14719:35;;;14736:3;14727:6;:12;14719:35;14698:70;;;::::0;-1:-1:-1;;;14698:70:73;;25540:2:93;14698:70:73::1;::::0;::::1;25522:21:93::0;25579:1;25559:18;;;25552:29;-1:-1:-1;;;25597:18:93;;;25590:38;25645:18;;14698:70:73::1;25338:331:93::0;14698:70:73::1;605:12;14786:10;:26;14778:55;;;::::0;-1:-1:-1;;;14778:55:73;;21016:2:93;14778:55:73::1;::::0;::::1;20998:21:93::0;21055:2;21035:18;;;21028:30;-1:-1:-1;;;21074:18:93;;;21067:46;21130:18;;14778:55:73::1;20814:340:93::0;14778:55:73::1;14844:7;::::0;::::1;:16:::0;;;14870:11:::1;::::0;::::1;:24:::0;;;14904:4:::1;::::0;::::1;:10:::0;;;14924:4:::1;::::0;::::1;:10:::0;;;14945:8:::1;::::0;-1:-1:-1;14945:32:73;-1:-1:-1;;;14945:32:73;;-1:-1:-1;;;;;14945:8:73;;::::1;::::0;:29:::1;::::0;:32:::1;::::0;14844:7;;14945:32:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15010:13;:11;:13::i;:::-;14993:86;::::0;;41232:25:93;;;41288:2;41273:18;;41266:34;;;41316:18;;;41309:34;;;41374:2;41359:18;;41352:34;;;41417:3;41402:19;;41395:35;;;15063:15:73::1;41461:3:93::0;41446:19;;41439:35;14993:86:73;;-1:-1:-1;;;;;14993:86:73;;;::::1;::::0;::::1;::::0;;;;41219:3:93;14993:86:73;;::::1;14412:674;14224:862:::0;;;;;;:::o;4685:2228::-;4904:12;1482:19:19;:17;:19::i;:::-;4957:8:73::1;::::0;:26:::1;::::0;;-1:-1:-1;;;4957:26:73;;;;4927:27:::1;::::0;-1:-1:-1;;;;;4957:8:73::1;::::0;-1:-1:-1;;4957:26:73::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5027:8;::::0;4927:56;;-1:-1:-1;4994:30:73::1;::::0;-1:-1:-1;;;;;5027:8:73::1;:19;5047:13;:11;:13::i;:::-;5027:54;::::0;-1:-1:-1;;;;;;5027:54:73::1;::::0;;;;;;-1:-1:-1;;;;;16898:32:93;;;5027:54:73::1;::::0;::::1;16880:51:93::0;16947:18;;;16940:34;;;16990:18;;;16983:34;;;16853:18;;5027:54:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5128:8;::::0;4994:87;;-1:-1:-1;5091:34:73::1;::::0;-1:-1:-1;;;;;5128:8:73::1;:23;5152:13;:11;:13::i;:::-;5128:58;::::0;-1:-1:-1;;;;;;5128:58:73::1;::::0;;;;;;-1:-1:-1;;;;;16898:32:93;;;5128:58:73::1;::::0;::::1;16880:51:93::0;16947:18;;;16940:34;;;16990:18;;;16983:34;;;16853:18;;5128:58:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5091:95;;5206:1;:19;;;5205:20;5197:53;;;::::0;-1:-1:-1;;;5197:53:73;;29106:2:93;5197:53:73::1;::::0;::::1;29088:21:93::0;29145:2;29125:18;;;29118:30;-1:-1:-1;;;29164:18:93;;;29157:50;29224:18;;5197:53:73::1;28904:344:93::0;5197:53:73::1;5281:1;5268;:10;;;:14;5260:35;;;::::0;-1:-1:-1;;;5260:35:73;;21361:2:93;5260:35:73::1;::::0;::::1;21343:21:93::0;21400:1;21380:18;;;21373:29;-1:-1:-1;;;21418:18:93;;;21411:38;21466:18;;5260:35:73::1;21159:331:93::0;5260:35:73::1;5324:9;::::0;5367:8;;5389:11:::1;::::0;::::1;::::0;5414:7:::1;::::0;;::::1;::::0;5435:5:::1;::::0;::::1;::::0;5454:17:::1;::::0;::::1;::::0;5485:10:::1;::::0;::::1;::::0;5324:181;;-1:-1:-1;;;5324:181:73;;-1:-1:-1;;;;;17327:32:93;;;5324:181:73::1;::::0;::::1;17309:51:93::0;17376:18;;;17369:34;;;;17419:18;;;17412:34;;;;17489:14;17482:22;17462:18;;;17455:50;17521:19;;;17514:35;17565:19;;;17558:35;5306:15:73::1;::::0;5324:9;;;::::1;::::0;:29:::1;::::0;17281:19:93;;5324:181:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5526:73;::::0;-1:-1:-1;;;5526:73:73;;5306:199;;-1:-1:-1;;;;;;5526:19:73;::::1;::::0;::::1;::::0;:73:::1;::::0;5546:10;;5558:40:::1;::::0;5526:73;::::1;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5516:83;;5609:10;-1:-1:-1::0;;;;;5609:40:73::1;;5663:7;5684:129;;;;;;;;5721:13;:11;:13::i;:::-;-1:-1:-1::0;;;;;5684:129:73::1;;;;;5736:10;5684:129;;;;5748:6;5684:129;;;;5756:5;5684:129;;;;;;;;:::i;:::-;;;;;5763:7;5684:129;;;;5772:1;:16;;;5684:129;;;;5790:10;5684:129;;;;5802:1;:10;;;5684:129;;::::0;5609:214:::1;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5868:158;5903:1;:18;;;5935:1;:17;;;5966:5;5985:7;6006:10;5868:21;:158::i;:::-;5847:17;::::0;::::1;5834:192:::0;5835:10:::1;::::0;::::1;5834:192:::0;6050:8:::1;::::0;:26:::1;::::0;;-1:-1:-1;;;6050:26:73;;;;-1:-1:-1;;;;;;;6050:8:73::1;::::0;-1:-1:-1;;6050:26:73::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6050:39:73::1;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6050:52:73::1;;6103:13;:11;:13::i;:::-;6050:87;::::0;-1:-1:-1;;;;;;6050:87:73::1;::::0;;;;;;-1:-1:-1;;;;;16898:32:93;;;6050:87:73::1;::::0;::::1;16880:51:93::0;16947:18;;;16940:34;;;16990:18;;;16983:34;;;16853:18;;6050:87:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6037:100;;6151:5;:55;;;;-1:-1:-1::0;6170:35:73::1;6161:5;:44;;;;;;;;:::i;:::-;;6151:55;6148:81;;;6208:21;::::0;-1:-1:-1;;;6208:21:73;;23774:2:93;6208:21:73::1;::::0;::::1;23756::93::0;23813:2;23793:18;;;23786:30;-1:-1:-1;;;23832:18:93;;;23825:41;23883:18;;6208:21:73::1;23572:335:93::0;6148:81:73::1;6273:1;6260;:10;;;:14;:109;;;;;6308:10;-1:-1:-1::0;;;;;6308:23:73::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6350:11;::::0;::::1;::::0;6308:61:::1;::::0;-1:-1:-1;;;6308:61:73;;::::1;::::0;::::1;35610:25:93::0;;;;35678:14;;35671:22;35651:18;;;35644:50;-1:-1:-1;;;;;6308:41:73;;;::::1;::::0;::::1;::::0;35583:18:93;;6308:61:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6294:1;:10;;;:75;;6260:109;:204;;;;;6403:10;-1:-1:-1::0;;;;;6403:23:73::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6445:11;::::0;::::1;::::0;6403:61:::1;::::0;-1:-1:-1;;;6403:61:73;;::::1;::::0;::::1;35610:25:93::0;;;;35678:14;;35671:22;35651:18;;;35644:50;-1:-1:-1;;;;;6403:41:73;;;::::1;::::0;::::1;::::0;35583:18:93;;6403:61:73::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6389:1;:10;;;:75;;6260:204;6239:269;;;::::0;-1:-1:-1;;;6239:269:73;;22389:2:93;6239:269:73::1;::::0;::::1;22371:21:93::0;22428:2;22408:18;;;22401:30;-1:-1:-1;;;22447:18:93;;;22440:48;22505:18;;6239:269:73::1;22187:342:93::0;6239:269:73::1;6551:13;:11;:13::i;:::-;-1:-1:-1::0;;;;;6524:218:73::1;;6579:10;6604:6;6625:5;6645:1;6661:10;6686:1;:16;;;6717:15;6524:218;;;;;;;;;;;;:::i;:::-;;;;;;;;6765:8;::::0;:23:::1;::::0;-1:-1:-1;;;6765:23:73;;-1:-1:-1;;;;;6765:8:73;;::::1;::::0;-1:-1:-1;;6765:23:73::1;::::0;6786:1;;6765:23:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6798:62:73::1;::::0;-1:-1:-1;;;6798:62:73;;-1:-1:-1;;;;;6798:18:73;::::1;::::0;-1:-1:-1;;;;6824:9:73::1;::::0;6798:62:::1;::::0;6835:7;;6844:15;;;;6798:62:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;6871:35;6881:10;6893:6;6901:1;:4;;;6871:9;:35::i;:::-;4917:1996;;;;;4685:2228:::0;;;;;;;;:::o;1308:197:67:-;1375:14;;1352:7;;-1:-1:-1;;;;;1375:14:67;1371:128;;-1:-1:-1;1426:10:67;;1308:197::o;1371:128::-;-1:-1:-1;1474:14:67;;-1:-1:-1;;;;;1474:14:67;;1308:197::o;3532:210:73:-;2757:8;;:14;;;-1:-1:-1;;;2757:14:73;;;;-1:-1:-1;;;;;2757:8:73;;;;:12;;:14;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2743:28:73;:10;:28;2735:49;;;;-1:-1:-1;;;2735:49:73;;29455:2:93;2735:49:73;;;29437:21:93;29494:1;29474:18;;;29467:29;-1:-1:-1;;;29512:18:93;;;29505:38;29560:18;;2735:49:73;29253:331:93;2735:49:73;3623:1:::1;3613:7;:11;3605:31;;;::::0;-1:-1:-1;;;3605:31:73;;31152:2:93;3605:31:73::1;::::0;::::1;31134:21:93::0;31191:1;31171:18;;;31164:29;-1:-1:-1;;;31209:18:93;;;31202:37;31256:18;;3605:31:73::1;30950:330:93::0;3605:31:73::1;3646:19;:29:::0;;;3690:45:::1;::::0;;26585:21:93;;;26642:2;26622:18;;;26615:30;-1:-1:-1;;;26676:2:93;26661:18;;26654:49;26770:4;26755:20;;26748:36;;;3690:45:73;;::::1;::::0;;;;26735:3:93;3690:45:73;;::::1;3532:210:::0;:::o;2010:106:19:-;1928:7;;;;2079:9;2071:38;;;;-1:-1:-1;;;2071:38:19;;23429:2:93;2071:38:19;;;23411:21:93;23468:2;23448:18;;;23441:30;-1:-1:-1;;;23487:18:93;;;23480:46;23543:18;;2071:38:19;23227:340:93;20071:648:73;20168:8;;20152:13;;-1:-1:-1;;;;;20168:8:73;:19;20188:13;:11;:13::i;:::-;20168:54;;-1:-1:-1;;;;;;20168:54:73;;;;;;;-1:-1:-1;;;;;16898:32:93;;;20168:54:73;;;16880:51:93;16947:18;;;16940:34;;;16990:18;;;16983:34;;;16853:18;;20168:54:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:63;;;20262:8;;20168:63;;-1:-1:-1;20241:18:73;;-1:-1:-1;;;;;20262:8:73;:23;20286:13;:11;:13::i;:::-;20262:58;;-1:-1:-1;;;;;;20262:58:73;;;;;;;-1:-1:-1;;;;;16898:32:93;;;20262:58:73;;;16880:51:93;16947:18;;;16940:34;;;16990:18;;;16983:34;;;16853:18;;20262:58:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:72;;;20241:93;;20364:1;20353:8;:12;20345:33;;;;-1:-1:-1;;;20345:33:73;;21361:2:93;20345:33:73;;;21343:21:93;21400:1;21380:18;;;21373:29;-1:-1:-1;;;21418:18:93;;;21411:38;21466:18;;20345:33:73;21159:331:93;20345:33:73;20428:19;;20396:28;20411:13;20396:12;:28;:::i;:::-;:51;;20388:78;;;;-1:-1:-1;;;20388:78:73;;23086:2:93;20388:78:73;;;23068:21:93;23125:2;23105:18;;;23098:30;-1:-1:-1;;;23144:18:93;;;23137:44;23198:18;;20388:78:73;22884:338:93;20388:78:73;-1:-1:-1;;;;;20484:31:73;;20476:56;;;;-1:-1:-1;;;20476:56:73;;30811:2:93;20476:56:73;;;30793:21:93;30850:2;30830:18;;;30823:30;-1:-1:-1;;;30869:18:93;;;30862:42;30921:18;;20476:56:73;30609:336:93;20476:56:73;20562:8;;20543:16;;-1:-1:-1;;;;;20562:8:73;:17;20580:13;:11;:13::i;:::-;20562:60;;;-1:-1:-1;20562:60:73;;;-1:-1:-1;;;;;;20562:60:73;;;-1:-1:-1;;;;;18346:32:93;;;;20562:60:73;;;18328:51:93;18395:18;;;18388:34;;;18438:18;;;18431:34;;;18481:18;;;18474:34;;;20562:60:73;18300:19:93;;;;;20562:60:73;;;;;;;;;-1:-1:-1;20562:60:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20543:79;;20648:13;:11;:13::i;:::-;20638:74;;;40312:25:93;;;40368:2;40353:18;;40346:34;;;40396:18;;;40389:34;;;20696:15:73;40454:2:93;40439:18;;40432:34;20638:74:73;;-1:-1:-1;;;;;20638:74:73;;;;;;;;;;40299:3:93;20638:74:73;;;20142:577;;;20071:648;;;:::o;20992:1581::-;21140:8;;21107:30;;-1:-1:-1;;;;;21140:8:73;:19;21160:13;:11;:13::i;:::-;21140:54;;-1:-1:-1;;;;;;21140:54:73;;;;;;;-1:-1:-1;;;;;16898:32:93;;;21140:54:73;;;16880:51:93;16947:18;;;16940:34;;;16990:18;;;16983:34;;;16853:18;;21140:54:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21225:8;;21107:87;;-1:-1:-1;21204:18:73;;-1:-1:-1;;;;;21225:8:73;:23;21249:13;:11;:13::i;:::-;21225:58;;-1:-1:-1;;;;;;21225:58:73;;;;;;;-1:-1:-1;;;;;16898:32:93;;;21225:58:73;;;16880:51:93;16947:18;;;16940:34;;;16990:18;;;16983:34;;;16853:18;;21225:58:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:72;;;21204:93;;21329:1;21316;:10;;;:14;21308:35;;;;-1:-1:-1;;;21308:35:73;;21361:2:93;21308:35:73;;;21343:21:93;21400:1;21380:18;;;21373:29;-1:-1:-1;;;21418:18:93;;;21411:38;21466:18;;21308:35:73;21159:331:93;21308:35:73;-1:-1:-1;;;;;21361:31:73;;21353:56;;;;-1:-1:-1;;;21353:56:73;;29791:2:93;21353:56:73;;;29773:21:93;29830:2;29810:18;;;29803:30;-1:-1:-1;;;29849:18:93;;;29842:42;29901:18;;21353:56:73;29589:336:93;21353:56:73;21420:14;21437:49;21475:1;:10;;;21466:3;548:2;21439:1;:11;;;:23;;;;:::i;:::-;21438:31;;;;:::i;:::-;21437:37;;:49::i;:::-;21420:66;-1:-1:-1;21517:11:73;;;:94;;;21533:1;:5;;;:77;;21601:9;21587:1;:11;;;:23;;;;:::i;:::-;21577:6;:33;;21533:77;;;21565:9;21551:1;:11;;;:23;;;;:::i;:::-;21541:6;:33;;21533:77;21496:151;;;;-1:-1:-1;;;21496:151:73;;28767:2:93;21496:151:73;;;28749:21:93;28806:2;28786:18;;;28779:30;-1:-1:-1;;;28825:18:93;;;28818:40;28875:18;;21496:151:73;28565:334:93;21496:151:73;21698:19;;21666:28;21681:13;21666:12;:28;:::i;:::-;:51;;21658:78;;;;-1:-1:-1;;;21658:78:73;;23086:2:93;21658:78:73;;;23068:21:93;23125:2;23105:18;;;23098:30;-1:-1:-1;;;23144:18:93;;;23137:44;23198:18;;21658:78:73;22884:338:93;21658:78:73;21777:8;;:26;;;-1:-1:-1;;;21777:26:73;;;;21747:27;;-1:-1:-1;;;;;21777:8:73;;-1:-1:-1;;21777:26:73;;;;;;;;;;;;;;:8;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21747:56;-1:-1:-1;21818:11:73;;;:73;;;21834:10;-1:-1:-1;;;;;21834:23:73;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:57;;-1:-1:-1;;;21834:57:73;;;;;34140:25:93;;;-1:-1:-1;;;;;21834:45:73;;;;;;;34113:18:93;;21834:57:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21833:58;21818:73;21814:753;;;21907:8;;-1:-1:-1;;;;;21907:8:73;:17;21925:13;:11;:13::i;:::-;21907:60;;;-1:-1:-1;21907:60:73;;;-1:-1:-1;;;;;;21907:60:73;;;-1:-1:-1;;;;;18346:32:93;;;;21907:60:73;;;18328:51:93;18395:18;;;18388:34;;;18438:18;;;18431:34;;;18481:18;;;18474:34;;;21907:60:73;18300:19:93;;;;;-1:-1:-1;;21907:60:73;;;;;;;-1:-1:-1;21907:60:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21996:13;:11;:13::i;:::-;21986:69;;;40312:25:93;;;40368:2;40353:18;;40346:34;;;40396:18;;;40389:34;;;22039:15:73;40454:2:93;40439:18;;40432:34;21986:69:73;;-1:-1:-1;;;;;21986:69:73;;;;;;;;;;40299:3:93;21986:69:73;;;21814:753;;;22114:69;;-1:-1:-1;;;22114:69:73;;22099:12;;-1:-1:-1;;;;;22114:19:73;;;;;:69;;22134:10;;22146:36;;22114:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22099:84;;22197:10;-1:-1:-1;;;;;22197:30:73;;22245:7;22270:89;;;;;;;;22297:13;:11;:13::i;:::-;-1:-1:-1;;;;;22270:89:73;;;;;22312:10;22270:89;;;;22324:6;22270:89;;;;22332:1;:11;;;22270:89;;;;22345:1;:5;;;22270:89;;;;;;22352:6;22270:89;;;22197:176;;;;;;;;;;;;;;;37537:4:93;37579:3;37568:9;37564:19;37556:27;;37610:6;37599:9;37592:25;37689:1;37685;37680:3;37676:11;37672:19;37663:6;37657:13;37653:39;37648:2;37637:9;37633:18;37626:67;37747:2;37739:6;37735:15;37729:22;37724:2;37713:9;37709:18;37702:50;37806:2;37798:6;37794:15;37788:22;37783:2;37772:9;37768:18;37761:50;37866:2;37858:6;37854:15;37848:22;37842:3;37831:9;37827:19;37820:51;37940:3;37932:6;37928:16;37922:23;37915:31;37908:39;37902:3;37891:9;37887:19;37880:68;38003:3;37995:6;37991:16;37985:23;37979:3;37968:9;37964:19;37957:52;37361:654;;;;;;22197:176:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22411:13;:11;:13::i;:::-;22393:86;;;40736:25:93;;;40792:2;40777:18;;40770:34;;;40820:18;;;40813:34;;;40878:2;40863:18;;40856:34;;;22463:15:73;40921:3:93;40906:19;;40899:35;22393:86:73;;-1:-1:-1;;;;;22393:86:73;;;;;;;;;;-1:-1:-1;22393:86:73;;;22494:62;;-1:-1:-1;;;22494:62:73;;-1:-1:-1;;;;;22494:18:73;;;-1:-1:-1;;22520:9:73;;22494:62;;22531:7;;22540:15;;;;22494:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22072:495;21814:753;21097:1476;;;;20992:1581;;;;;:::o;130:127:90:-;190:4;119;214:13;218:9;214:1;:13;:::i;:::-;213:37;;;;:::i;:::-;206:44;;130:127;;;;;:::o;2676:117:19:-;1729:16;:14;:16::i;:::-;2734:7:::1;:15:::0;;-1:-1:-1;;2734:15:19::1;::::0;;2764:22:::1;929:10:32::0;2773:12:19::1;2764:22;::::0;;-1:-1:-1;;;;;15686:32:93;;;;15668:51;;2764:22:19;;;;;15656:2:93;2764:22:19;;::::1;2676:117::o:0;1063:97::-;5374:13:18;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:18;;;;;;;:::i;:::-;1126:27:19::1;:25;:27::i;2429:115::-:0;1482:19;:17;:19::i;:::-;2488:7:::1;:14:::0;;-1:-1:-1;;2488:14:19::1;2498:4;2488:14;::::0;;2517:20:::1;2524:12;929:10:32::0;;850:96;22943:667:73;23155:16;;;23203:5;:43;;;;;;;;:::i;:::-;;23199:405;;;23308:5;23274:31;23295:10;23274:18;:31;:::i;:::-;:39;;;;:::i;:::-;23262:51;-1:-1:-1;23262:51:73;23342:30;504:4;23342:17;:30;:::i;:::-;23341:46;;;;:::i;:::-;23327:60;;23199:405;;;23417:35;23408:5;:44;;;;;;;;:::i;:::-;;23404:200;;;23514:5;23480:31;23501:10;23480:18;:31;:::i;:::-;:39;;;;:::i;:::-;23468:51;-1:-1:-1;23468:51:73;23548:30;504:4;23548:17;:30;:::i;:::-;23547:46;;;;:::i;:::-;23533:60;;23404:200;22943:667;;;;;;;;:::o;263:127:90:-;323:4;374:9;347:23;119:4;347:1;:23;:::i;2188:106:19:-;1928:7;;;;2246:41;;;;-1:-1:-1;;;2246:41:19;;20667:2:93;2246:41:19;;;20649:21:93;20706:2;20686:18;;;20679:30;-1:-1:-1;;;20725:18:93;;;20718:50;20785:18;;2246:41:19;20465:344:93;1166:95:19;5374:13:18;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:18;;;;;;;:::i;:::-;1239:7:19::1;:15:::0;;-1:-1:-1;;1239:15:19::1;::::0;;1166:95::o;14:138:93:-;93:13;;115:31;93:13;115:31;:::i;:::-;14:138;;;:::o;157:374::-;227:8;237:6;291:3;284:4;276:6;272:17;268:27;258:55;;309:1;306;299:12;258:55;-1:-1:-1;332:20:93;;375:18;364:30;;361:50;;;407:1;404;397:12;361:50;444:4;436:6;432:17;420:29;;504:3;497:4;487:6;484:1;480:14;472:6;468:27;464:38;461:47;458:67;;;521:1;518;511:12;458:67;157:374;;;;;:::o;536:132::-;612:13;;634:28;612:13;634:28;:::i;673:247::-;732:6;785:2;773:9;764:7;760:23;756:32;753:52;;;801:1;798;791:12;753:52;840:9;827:23;859:31;884:5;859:31;:::i;:::-;909:5;673:247;-1:-1:-1;;;673:247:93:o;925:251::-;995:6;1048:2;1036:9;1027:7;1023:23;1019:32;1016:52;;;1064:1;1061;1054:12;1016:52;1096:9;1090:16;1115:31;1140:5;1115:31;:::i;1181:388::-;1249:6;1257;1310:2;1298:9;1289:7;1285:23;1281:32;1278:52;;;1326:1;1323;1316:12;1278:52;1365:9;1352:23;1384:31;1409:5;1384:31;:::i;:::-;1434:5;-1:-1:-1;1491:2:93;1476:18;;1463:32;1504:33;1463:32;1504:33;:::i;:::-;1556:7;1546:17;;;1181:388;;;;;:::o;1574:382::-;1639:6;1647;1700:2;1688:9;1679:7;1675:23;1671:32;1668:52;;;1716:1;1713;1706:12;1668:52;1755:9;1742:23;1774:31;1799:5;1774:31;:::i;:::-;1824:5;-1:-1:-1;1881:2:93;1866:18;;1853:32;1894:30;1853:32;1894:30;:::i;1961:726::-;2040:6;2048;2056;2109:2;2097:9;2088:7;2084:23;2080:32;2077:52;;;2125:1;2122;2115:12;2077:52;2164:9;2151:23;2183:31;2208:5;2183:31;:::i;:::-;2233:5;-1:-1:-1;2289:2:93;2274:18;;2261:32;2312:18;2342:14;;;2339:34;;;2369:1;2366;2359:12;2339:34;2407:6;2396:9;2392:22;2382:32;;2452:7;2445:4;2441:2;2437:13;2433:27;2423:55;;2474:1;2471;2464:12;2423:55;2514:2;2501:16;2540:2;2532:6;2529:14;2526:34;;;2556:1;2553;2546:12;2526:34;2601:7;2596:2;2587:6;2583:2;2579:15;2575:24;2572:37;2569:57;;;2622:1;2619;2612:12;2569:57;2653:2;2649;2645:11;2635:21;;2675:6;2665:16;;;;;1961:726;;;;;:::o;2692:798::-;2825:6;2833;2841;2849;2902:2;2890:9;2881:7;2877:23;2873:32;2870:52;;;2918:1;2915;2908:12;2870:52;2958:9;2945:23;2987:18;3028:2;3020:6;3017:14;3014:34;;;3044:1;3041;3034:12;3014:34;3083:77;3152:7;3143:6;3132:9;3128:22;3083:77;:::i;:::-;3179:8;;-1:-1:-1;3057:103:93;-1:-1:-1;3267:2:93;3252:18;;3239:32;;-1:-1:-1;3283:16:93;;;3280:36;;;3312:1;3309;3302:12;3280:36;;3351:79;3422:7;3411:8;3400:9;3396:24;3351:79;:::i;:::-;2692:798;;;;-1:-1:-1;3449:8:93;-1:-1:-1;;;;2692:798:93:o;3495:241::-;3551:6;3604:2;3592:9;3583:7;3579:23;3575:32;3572:52;;;3620:1;3617;3610:12;3572:52;3659:9;3646:23;3678:28;3700:5;3678:28;:::i;3741:245::-;3808:6;3861:2;3849:9;3840:7;3836:23;3832:32;3829:52;;;3877:1;3874;3867:12;3829:52;3909:9;3903:16;3928:28;3950:5;3928:28;:::i;4825:893::-;4974:6;4982;4990;4998;5006;5014;5067:3;5055:9;5046:7;5042:23;5038:33;5035:53;;;5084:1;5081;5074:12;5035:53;5123:9;5110:23;5142:39;5175:5;5142:39;:::i;:::-;5200:5;-1:-1:-1;5257:2:93;5242:18;;5229:32;5270:33;5229:32;5270:33;:::i;:::-;5322:7;-1:-1:-1;5376:2:93;5361:18;;5348:32;;-1:-1:-1;5427:2:93;5412:18;;5399:32;;-1:-1:-1;5482:3:93;5467:19;;5454:33;5510:18;5499:30;;5496:50;;;5542:1;5539;5532:12;5496:50;5581:77;5650:7;5641:6;5630:9;5626:22;5581:77;:::i;:::-;4825:893;;;;-1:-1:-1;4825:893:93;;-1:-1:-1;4825:893:93;;5677:8;;4825:893;-1:-1:-1;;;4825:893:93:o;5723:884::-;5803:6;5856:2;5844:9;5835:7;5831:23;5827:32;5824:52;;;5872:1;5869;5862:12;5824:52;5905:9;5899:16;5934:18;5975:2;5967:6;5964:14;5961:34;;;5991:1;5988;5981:12;5961:34;6029:6;6018:9;6014:22;6004:32;;6074:7;6067:4;6063:2;6059:13;6055:27;6045:55;;6096:1;6093;6086:12;6045:55;6125:2;6119:9;6147:2;6143;6140:10;6137:36;;;6153:18;;:::i;:::-;6228:2;6222:9;6196:2;6282:13;;-1:-1:-1;;6278:22:93;;;6302:2;6274:31;6270:40;6258:53;;;6326:18;;;6346:22;;;6323:46;6320:72;;;6372:18;;:::i;:::-;6412:10;6408:2;6401:22;6447:2;6439:6;6432:18;6487:7;6482:2;6477;6473;6469:11;6465:20;6462:33;6459:53;;;6508:1;6505;6498:12;6459:53;6521:55;6573:2;6568;6560:6;6556:15;6551:2;6547;6543:11;6521:55;:::i;:::-;6595:6;5723:884;-1:-1:-1;;;;;;;5723:884:93:o;6612:1065::-;6715:6;6768:3;6756:9;6747:7;6743:23;6739:33;6736:53;;;6785:1;6782;6775:12;6736:53;6811:17;;:::i;:::-;6851:40;6881:9;6851:40;:::i;:::-;6844:5;6837:55;6945:2;6934:9;6930:18;6924:25;6919:2;6912:5;6908:14;6901:49;7003:2;6992:9;6988:18;6982:25;6977:2;6970:5;6966:14;6959:49;7061:2;7050:9;7046:18;7040:25;7035:2;7028:5;7024:14;7017:49;7099:47;7141:3;7130:9;7126:19;7099:47;:::i;:::-;7093:3;7082:15;;7075:72;7201:3;7186:19;;;7180:26;7163:15;;;7156:51;7261:3;7246:19;;;7240:26;7223:15;;;7216:51;7321:3;7306:19;;;7300:26;7283:15;;;7276:51;7346:3;7387:18;;;7381:25;7365:14;;;7358:49;7426:3;7467:18;;;7461:25;7445:14;;;7438:49;7506:3;7547:18;;;7541:25;7525:14;;;7518:49;7586:3;7627:18;;;7621:25;7605:14;;;7598:49;;;;-1:-1:-1;7086:5:93;6612:1065;-1:-1:-1;6612:1065:93:o;7682:749::-;7780:6;7833:3;7821:9;7812:7;7808:23;7804:33;7801:53;;;7850:1;7847;7840:12;7801:53;7883:2;7877:9;7925:3;7917:6;7913:16;7995:6;7983:10;7980:22;7959:18;7947:10;7944:34;7941:62;7938:88;;;8006:18;;:::i;:::-;8046:10;8042:2;8035:22;;8087:9;8081:16;8073:6;8066:32;8152:2;8141:9;8137:18;8131:25;8126:2;8118:6;8114:15;8107:50;8211:2;8200:9;8196:18;8190:25;8185:2;8177:6;8173:15;8166:50;8259:2;8248:9;8244:18;8238:25;8272:28;8294:5;8272:28;:::i;:::-;8328:2;8316:15;;8309:30;8394:3;8379:19;;;8373:26;8355:16;;;8348:52;;;;-1:-1:-1;8320:6:93;7682:749;-1:-1:-1;7682:749:93:o;8436:512::-;8563:6;8571;8579;8623:9;8614:7;8610:23;8653:3;8649:2;8645:12;8642:32;;;8670:1;8667;8660:12;8642:32;8693:3;8716:2;8712;8708:11;8705:31;;;8732:1;8729;8722:12;8705:31;8755:9;;-1:-1:-1;8799:18:93;;8786:32;;-1:-1:-1;8827:39:93;8786:32;8827:39;:::i;:::-;8436:512;;8885:5;;-1:-1:-1;;;8937:3:93;8922:19;;;;8909:33;;8436:512::o;8953:981::-;9047:6;9100:3;9088:9;9079:7;9075:23;9071:33;9068:53;;;9117:1;9114;9107:12;9068:53;9143:22;;:::i;:::-;9188:40;9218:9;9188:40;:::i;:::-;9181:5;9174:55;9282:2;9271:9;9267:18;9261:25;9256:2;9249:5;9245:14;9238:49;9340:2;9329:9;9325:18;9319:25;9314:2;9307:5;9303:14;9296:49;9398:2;9387:9;9383:18;9377:25;9372:2;9365:5;9361:14;9354:49;9457:3;9446:9;9442:19;9436:26;9430:3;9423:5;9419:15;9412:51;9517:3;9506:9;9502:19;9496:26;9490:3;9483:5;9479:15;9472:51;9556:47;9598:3;9587:9;9583:19;9556:47;:::i;:::-;9550:3;9539:15;;9532:72;9658:3;9643:19;;;9637:26;9620:15;;;9613:51;9683:3;9724:18;;;9718:25;9702:14;;;9695:49;9763:3;9804:18;;;9798:25;9782:14;;;9775:49;9843:3;9884:18;;;9878:25;9862:14;;;9855:49;;;;-1:-1:-1;9543:5:93;8953:981;-1:-1:-1;8953:981:93:o;9939:180::-;9998:6;10051:2;10039:9;10030:7;10026:23;10022:32;10019:52;;;10067:1;10064;10057:12;10019:52;-1:-1:-1;10090:23:93;;9939:180;-1:-1:-1;9939:180:93:o;10124:184::-;10194:6;10247:2;10235:9;10226:7;10222:23;10218:32;10215:52;;;10263:1;10260;10253:12;10215:52;-1:-1:-1;10286:16:93;;10124:184;-1:-1:-1;10124:184:93:o;10313:248::-;10381:6;10389;10442:2;10430:9;10421:7;10417:23;10413:32;10410:52;;;10458:1;10455;10448:12;10410:52;-1:-1:-1;;10481:23:93;;;10551:2;10536:18;;;10523:32;;-1:-1:-1;10313:248:93:o;10566:821::-;10715:6;10723;10731;10739;10747;10755;10808:3;10796:9;10787:7;10783:23;10779:33;10776:53;;;10825:1;10822;10815:12;10776:53;10861:9;10848:23;10838:33;;10918:2;10907:9;10903:18;10890:32;10880:42;;10972:2;10961:9;10957:18;10944:32;11005:1;10998:5;10995:12;10985:40;;11021:1;11018;11011:12;10985:40;11044:5;-1:-1:-1;11096:2:93;11081:18;;11068:32;;-1:-1:-1;11151:3:93;11136:19;;11123:33;11179:18;11168:30;;11165:50;;;11211:1;11208;11201:12;11392:316;11469:6;11477;11485;11538:2;11526:9;11517:7;11513:23;11509:32;11506:52;;;11554:1;11551;11544:12;11506:52;-1:-1:-1;;11577:23:93;;;11647:2;11632:18;;11619:32;;-1:-1:-1;11698:2:93;11683:18;;;11670:32;;11392:316;-1:-1:-1;11392:316:93:o;11713:729::-;11846:6;11854;11862;11870;11878;11886;11939:3;11927:9;11918:7;11914:23;11910:33;11907:53;;;11956:1;11953;11946:12;11907:53;11992:9;11979:23;11969:33;;12049:2;12038:9;12034:18;12021:32;12011:42;;12100:2;12089:9;12085:18;12072:32;12062:42;;12151:2;12140:9;12136:18;12123:32;12113:42;;12206:3;12195:9;12191:19;12178:33;12234:18;12226:6;12223:30;12220:50;;;12266:1;12263;12256:12;12447:523;12551:6;12559;12567;12575;12583;12591;12644:3;12632:9;12623:7;12619:23;12615:33;12612:53;;;12661:1;12658;12651:12;12612:53;-1:-1:-1;;12684:23:93;;;12754:2;12739:18;;12726:32;;-1:-1:-1;12805:2:93;12790:18;;12777:32;;12856:2;12841:18;;12828:32;;-1:-1:-1;12907:3:93;12892:19;;12879:33;;-1:-1:-1;12959:3:93;12944:19;12931:33;;-1:-1:-1;12447:523:93;-1:-1:-1;12447:523:93:o;13180:266::-;13268:6;13263:3;13256:19;13320:6;13313:5;13306:4;13301:3;13297:14;13284:43;-1:-1:-1;13372:1:93;13347:16;;;13365:4;13343:27;;;13336:38;;;;13428:2;13407:15;;;-1:-1:-1;;13403:29:93;13394:39;;;13390:50;;13180:266::o;13451:257::-;13492:3;13530:5;13524:12;13557:6;13552:3;13545:19;13573:63;13629:6;13622:4;13617:3;13613:14;13606:4;13599:5;13595:16;13573:63;:::i;:::-;13690:2;13669:15;-1:-1:-1;;13665:29:93;13656:39;;;;13697:4;13652:50;;13451:257;-1:-1:-1;;13451:257:93:o;13713:141::-;13795:1;13788:5;13785:12;13775:46;;13801:18;;:::i;:::-;13830;;13713:141::o;13859:392::-;13946:12;;-1:-1:-1;;;;;13942:38:93;13930:51;;14030:4;14019:16;;;14013:23;13997:14;;;13990:47;14086:4;14075:16;;;14069:23;14053:14;;;14046:47;14139:4;14128:16;;14122:23;14154:46;14122:23;14154:46;:::i;:::-;14232:12;14225:4;14220:3;14216:14;14209:36;;13859:392;;:::o;14256:775::-;14334:12;;-1:-1:-1;;;;;13041:31:93;13029:44;;14401:4;14394:5;14390:16;14384:23;14377:4;14372:3;14368:14;14361:47;14457:4;14450:5;14446:16;14440:23;14433:4;14428:3;14424:14;14417:47;14513:4;14506:5;14502:16;14496:23;14489:4;14484:3;14480:14;14473:47;14569:4;14562:5;14558:16;14552:23;14545:4;14540:3;14536:14;14529:47;14625:4;14618:5;14614:16;14608:23;14601:4;14596:3;14592:14;14585:47;14678:4;14671:5;14667:16;14661:23;14693:45;14732:4;14727:3;14723:14;14709:12;13154:13;13147:21;13135:34;;13084:91;14693:45;-1:-1:-1;14787:4:93;14776:16;;;14770:23;14754:14;;;14747:47;14813:6;14855:14;;;14849:21;14835:12;;;14828:43;14890:6;14932:14;;;14926:21;14912:12;;;14905:43;14967:6;15009:14;;;15003:21;14989:12;;14982:43;14256:775::o;15036:271::-;15219:6;15211;15206:3;15193:33;15175:3;15245:16;;15270:13;;;15245:16;15036:271;-1:-1:-1;15036:271:93:o;17604:488::-;-1:-1:-1;;;;;17875:32:93;;17857:51;;17939:2;17924:18;;17917:34;;;17982:2;17967:18;;17960:34;;;17844:3;17829:19;;18003:40;18036:6;18003:40;:::i;:::-;18079:6;18074:2;18063:9;18059:18;18052:34;17604:488;;;;;;;:::o;19359:217::-;19506:2;19495:9;19488:21;19469:4;19526:44;19566:2;19555:9;19551:18;19543:6;19526:44;:::i;28153:407::-;28355:2;28337:21;;;28394:2;28374:18;;;28367:30;28433:34;28428:2;28413:18;;28406:62;-1:-1:-1;;;28499:2:93;28484:18;;28477:41;28550:3;28535:19;;28153:407::o;31285:1090::-;31517:13;;-1:-1:-1;;;;;13041:31:93;13029:44;;31485:3;31470:19;;31598:4;31590:6;31586:17;31580:24;31573:4;31562:9;31558:20;31551:54;31661:4;31653:6;31649:17;31643:24;31636:4;31625:9;31621:20;31614:54;31724:4;31716:6;31712:17;31706:24;31699:4;31688:9;31684:20;31677:54;31778:4;31770:6;31766:17;31760:24;31793:51;31838:4;31827:9;31823:20;31809:12;13154:13;13147:21;13135:34;;13084:91;31793:51;;31900:4;31892:6;31888:17;31882:24;31875:4;31864:9;31860:20;31853:54;31963:4;31955:6;31951:17;31945:24;31938:4;31927:9;31923:20;31916:54;32026:4;32018:6;32014:17;32008:24;32001:4;31990:9;31986:20;31979:54;32052:6;32112:2;32104:6;32100:15;32094:22;32089:2;32078:9;32074:18;32067:50;;32136:6;32196:2;32188:6;32184:15;32178:22;32173:2;32162:9;32158:18;32151:50;;32220:6;32280:2;32272:6;32268:15;32262:22;32257:2;32246:9;32242:18;32235:50;;32304:6;32364:2;32356:6;32352:15;32346:22;32341:2;32330:9;32326:18;32319:50;;31285:1090;;;;:::o;32380:351::-;32614:3;32599:19;;32627:54;32603:9;32663:6;32627:54;:::i;:::-;32718:6;32712:3;32701:9;32697:19;32690:35;32380:351;;;;;:::o;32736:625::-;32952:4;32994:3;32983:9;32979:19;32971:27;;33007:49;33046:9;33037:6;33031:13;33007:49;:::i;:::-;33114:4;33102:17;;33096:24;33087:6;33072:22;;33065:56;33179:4;33167:17;;33161:24;33152:6;33137:22;;33130:56;33244:4;33232:17;;;33226:24;33217:6;33202:22;;33195:56;33282:3;33267:19;;33260:35;;;;33339:14;33332:22;33326:3;33311:19;;;33304:51;32736:625;:::o;33366:243::-;33548:3;33533:19;;33561:42;33537:9;33585:6;33561:42;:::i;33614:375::-;33846:3;33831:19;;33859:54;33835:9;33895:6;33859:54;:::i;:::-;-1:-1:-1;;;;;33950:32:93;;;;33944:3;33929:19;;;;33922:61;33950:32;33614:375;-1:-1:-1;33614:375:93:o;34176:1261::-;34376:4;34424:2;34413:9;34409:18;34454:6;34443:9;34436:25;34480:2;34518;34513;34502:9;34498:18;34491:30;34541:6;34571;34563;34556:22;34609:2;34598:9;34594:18;34587:25;;34671:2;34661:6;34658:1;34654:14;34643:9;34639:30;34635:39;34621:53;;34697:6;34721:1;34731:677;34745:6;34742:1;34739:13;34731:677;;;-1:-1:-1;;34810:22:93;;;34806:36;34794:49;;34882:20;;-1:-1:-1;;34957:14:93;34953:27;;;34949:41;34925:66;;34915:94;;35005:1;35002;34995:12;34915:94;35035:31;;35093:19;;35139:18;35128:30;;35125:50;;;35171:1;35168;35161:12;35125:50;35223:6;35207:14;35203:27;35195:6;35191:40;35188:60;;;35244:1;35241;35234:12;35188:60;35271:57;35321:6;35313;35308:2;35301:5;35297:14;35271:57;:::i;:::-;35261:67;-1:-1:-1;;;35386:12:93;;;;35351:15;;;;34767:1;34760:9;34731:677;;;-1:-1:-1;35425:6:93;;34176:1261;-1:-1:-1;;;;;;;;34176:1261:93:o;36193:317::-;36380:25;;;36368:2;36353:18;;36435:1;36424:13;;36414:47;;36441:18;;:::i;:::-;36497:6;36492:2;36481:9;36477:18;36470:34;36193:317;;;;;:::o;36515:841::-;36711:4;36753:3;36742:9;36738:19;36730:27;;36784:6;36773:9;36766:25;36863:1;36859;36854:3;36850:11;36846:19;36837:6;36831:13;36827:39;36822:2;36811:9;36807:18;36800:67;36921:2;36913:6;36909:15;36903:22;36898:2;36887:9;36883:18;36876:50;36980:2;36972:6;36968:15;36962:22;36957:2;36946:9;36942:18;36935:50;37032:2;37024:6;37020:15;37014:22;37045:61;37101:3;37090:9;37086:19;37072:12;37045:61;:::i;:::-;;37161:3;37153:6;37149:16;37143:23;37137:3;37126:9;37122:19;37115:52;37222:3;37214:6;37210:16;37204:23;37198:3;37187:9;37183:19;37176:52;37283:3;37275:6;37271:16;37265:23;37259:3;37248:9;37244:19;37237:52;37344:3;37336:6;37332:16;37326:23;37320:3;37309:9;37305:19;37298:52;36515:841;;;;;:::o;38273:768::-;38585:4;38627:3;38616:9;38612:19;38604:27;;38658:6;38647:9;38640:25;38701:6;38696:2;38685:9;38681:18;38674:34;38758:6;38751:14;38744:22;38739:2;38728:9;38724:18;38717:50;38803:6;38798:2;38787:9;38783:18;38776:34;38847:6;38841:3;38830:9;38826:19;38819:35;38863:40;38896:6;38863:40;:::i;:::-;38940:6;38934:3;38923:9;38919:19;38912:35;38984:6;38978:3;38967:9;38963:19;38956:35;39028:6;39022:3;39011:9;39007:19;39000:35;38273:768;;;;;;;;;;;:::o;39046:706::-;39423:25;;;39479:2;39464:18;;39457:34;;;39410:3;39395:19;;39500:54;39550:2;39535:18;;39527:6;39500:54;:::i;:::-;39563:51;39610:2;39599:9;39595:18;39587:6;39563:51;:::i;:::-;39651:6;39645:3;39634:9;39630:19;39623:35;39695:6;39689:3;39678:9;39674:19;39667:35;39739:6;39733:3;39722:9;39718:19;39711:35;39046:706;;;;;;;;;;:::o;41485:247::-;41552:2;41546:9;41594:3;41582:16;;41628:18;41613:34;;41649:22;;;41610:62;41607:88;;;41675:18;;:::i;:::-;41711:2;41704:22;41485:247;:::o;41737:252::-;41809:2;41803:9;41851:3;41839:16;;41885:18;41870:34;;41906:22;;;41867:62;41864:88;;;41932:18;;:::i;41994:128::-;42034:3;42065:1;42061:6;42058:1;42055:13;42052:39;;;42071:18;;:::i;:::-;-1:-1:-1;42107:9:93;;41994:128::o;42127:217::-;42167:1;42193;42183:132;;42237:10;42232:3;42228:20;42225:1;42218:31;42272:4;42269:1;42262:15;42300:4;42297:1;42290:15;42183:132;-1:-1:-1;42329:9:93;;42127:217::o;42349:168::-;42389:7;42455:1;42451;42447:6;42443:14;42440:1;42437:21;42432:1;42425:9;42418:17;42414:45;42411:71;;;42462:18;;:::i;:::-;-1:-1:-1;42502:9:93;;42349:168::o;42522:125::-;42562:4;42590:1;42587;42584:8;42581:34;;;42595:18;;:::i;:::-;-1:-1:-1;42632:9:93;;42522:125::o;42652:258::-;42724:1;42734:113;42748:6;42745:1;42742:13;42734:113;;;42824:11;;;42818:18;42805:11;;;42798:39;42770:2;42763:10;42734:113;;;42865:6;42862:1;42859:13;42856:48;;;42900:1;42891:6;42886:3;42882:16;42875:27;42856:48;;42652:258;;;:::o;42915:135::-;42954:3;-1:-1:-1;;42975:17:93;;42972:43;;;42995:18;;:::i;:::-;-1:-1:-1;43042:1:93;43031:13;;42915:135::o;43055:127::-;43116:10;43111:3;43107:20;43104:1;43097:31;43147:4;43144:1;43137:15;43171:4;43168:1;43161:15;43187:127;43248:10;43243:3;43239:20;43236:1;43229:31;43279:4;43276:1;43269:15;43303:4;43300:1;43293:15;43319:127;43380:10;43375:3;43371:20;43368:1;43361:31;43411:4;43408:1;43401:15;43435:4;43432:1;43425:15;43451:127;43512:10;43507:3;43503:20;43500:1;43493:31;43543:4;43540:1;43533:15;43567:4;43564:1;43557:15;43583:115;43666:1;43659:5;43656:12;43646:46;;43672:18;;:::i;:::-;43583:115;:::o;43703:131::-;-1:-1:-1;;;;;43778:31:93;;43768:42;;43758:70;;43824:1;43821;43814:12;43839:118;43925:5;43918:13;43911:21;43904:5;43901:32;43891:60;;43947:1;43944;43937:12;43962:109;44045:1;44038:5;44035:12;44025:40;;44061:1;44058;44051:12","linkReferences":{}},"methodIdentifiers":{"_MAX_SLIPPAGE()":"c48a02a2","__msgSender()":"d1a91ff2","cancelOpenLimitOrder(uint256,uint256)":"b9b6573a","cancelPendingMarketOrder(uint256)":"c5ed6a08","closeTradeMarket(uint256,uint256,uint256)":"2c3cbce4","delegatedAction(address,bytes)":"9a10cc32","delegations(address)":"bffe3486","executeLimitOrder(uint8,address,uint256,uint256,bytes[])":"46f6c8f5","executeMarketOrders(uint256[],bytes[])":"c0b4d24d","initialize(address,address)":"485cc955","isOperator(address)":"6d70f7ae","limitOrdersTimelock()":"0890d22a","openTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint8,uint256)":"19cde9a1","operator()":"570ca735","pairInfos()":"1346b0ff","pause()":"8456cb59","paused()":"5c975abb","removeDelegate()":"36fb8b15","setDelegate(address)":"ca5eb5e1","setLimitOrdersTimelock(uint256)":"d4a1caa7","setMarketExecFeeReciever(address)":"9e2033f5","storageT()":"16fff074","unpause()":"3f4ba83a","updateMargin(uint256,uint256,uint8,uint256,bytes[])":"cd90b8a4","updateOpenLimitOrder(uint256,uint256,uint256,uint256,uint256,uint256)":"c641558e","updateOperator(address,bool)":"6d44a3b2","updateTpAndSl(uint256,uint256,uint256,uint256,bytes[])":"15b760b1"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"LimitOrderInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum ITradingStorage.updateType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialPosToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSizeUSDC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct ITradingStorage.Trade\",\"name\":\"newTrade\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marginFees\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lossProtectionTier\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"MarginUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"open\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"}],\"name\":\"MarketOrderInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"NumberUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"}],\"name\":\"OpenLimitCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isBuy\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"executionFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum IExecute.OpenLimitOrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slippageP\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"}],\"name\":\"OpenLimitPlaced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSl\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"OpenLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isOperator\",\"type\":\"bool\"}],\"name\":\"OperatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSl\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SlUpdateInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSl\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"SlUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"TpUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"_MAX_SLIPPAGE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"__msgSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"cancelOpenLimitOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"}],\"name\":\"cancelPendingMarketOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"closeTradeMarket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"call_data\",\"type\":\"bytes\"}],\"name\":\"delegatedAction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"delegations\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum ITradingStorage.LimitOrder\",\"name\":\"_orderType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"priceUpdateData\",\"type\":\"bytes[]\"}],\"name\":\"executeLimitOrder\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"orderId\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"priceUpdateData\",\"type\":\"bytes[]\"}],\"name\":\"executeMarketOrders\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_storageT\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_pairInfos\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"limitOrdersTimelock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialPosToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSizeUSDC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct ITradingStorage.Trade\",\"name\":\"t\",\"type\":\"tuple\"},{\"internalType\":\"enum IExecute.OpenLimitOrderType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"_slippageP\",\"type\":\"uint256\"}],\"name\":\"openTrade\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pairInfos\",\"outputs\":[{\"internalType\":\"contract IPairInfos\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blocks\",\"type\":\"uint256\"}],\"name\":\"setLimitOrdersTimelock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reciever\",\"type\":\"address\"}],\"name\":\"setMarketExecFeeReciever\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storageT\",\"outputs\":[{\"internalType\":\"contract ITradingStorage\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"enum ITradingStorage.updateType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"priceUpdateData\",\"type\":\"bytes[]\"}],\"name\":\"updateMargin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_slippageP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_sl\",\"type\":\"uint256\"}],\"name\":\"updateOpenLimitOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isOperator\",\"type\":\"bool\"}],\"name\":\"updateOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_newSl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_newTP\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"priceUpdateData\",\"type\":\"bytes[]\"}],\"name\":\"updateTpAndSl\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"cancelOpenLimitOrder(uint256,uint256)\":{\"params\":{\"_index\":\"The index of the order\",\"_pairIndex\":\"The index of the trading pair\"}},\"closeTradeMarket(uint256,uint256,uint256)\":{\"params\":{\"_amount\":\"The amount of collateral being closed\",\"_index\":\"The index of the trade\",\"_pairIndex\":\"The index of the trading pair\"}},\"executeLimitOrder(uint8,address,uint256,uint256,bytes[])\":{\"params\":{\"_index\":\"The index of the order\",\"_orderType\":\"The type of limit order (OPEN, CLOSE, TP, SL, LIQ)\",\"_pairIndex\":\"The index of the trading pair\",\"_trader\":\"The address of the trader\",\"priceUpdateData\":\"Pyth price update data\"}},\"executeMarketOrders(uint256[],bytes[])\":{\"params\":{\"orderId\":\"The array of orderIDs\",\"priceUpdateData\":\"Pyth price update calldata\"}},\"initialize(address,address)\":{\"params\":{\"_pairInfos\":\"The address of the pair information contract\",\"_storageT\":\"The address of the storage contract\"}},\"openTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint8,uint256)\":{\"params\":{\"_slippageP\":\"The slippage percentage\",\"_type\":\"Market or Limit or Stop Limit\",\"t\":\"The details of the trade to open\"}},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"setLimitOrdersTimelock(uint256)\":{\"params\":{\"_blocks\":\"The new time-lock duration in blocks\"}},\"updateMargin(uint256,uint256,uint8,uint256,bytes[])\":{\"params\":{\"_amount\":\"The Collateral by which to update the margin\",\"_index\":\"The index of the trade\",\"_pairIndex\":\"The index of the trading pair\",\"_type\":\"Withdraw or Deposit\",\"priceUpdateData\":\"Pyth price update\"}},\"updateOpenLimitOrder(uint256,uint256,uint256,uint256,uint256,uint256)\":{\"params\":{\"_index\":\"The index of the order\",\"_pairIndex\":\"The index of the trading pair\",\"_price\":\"The price level to set (_PRECISION)\",\"_sl\":\"The stop-loss price\",\"_tp\":\"The take-profit price\"}},\"updateTpAndSl(uint256,uint256,uint256,uint256,bytes[])\":{\"params\":{\"_index\":\"The index of the order\",\"_newSl\":\"The new stop-loss price\",\"_newTP\":\"The new take-profit price\",\"_pairIndex\":\"The index of the trading pair\",\"priceUpdateData\":\"Pyth price update data\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"cancelOpenLimitOrder(uint256,uint256)\":{\"notice\":\"Cancels an open limit order\"},\"cancelPendingMarketOrder(uint256)\":{\"notice\":\"FallBack method in case unregister is not working directly\"},\"closeTradeMarket(uint256,uint256,uint256)\":{\"notice\":\"Closes a trade using market execution\"},\"executeLimitOrder(uint8,address,uint256,uint256,bytes[])\":{\"notice\":\"Executes a limit order (either open or close). Callable by Operators\"},\"executeMarketOrders(uint256[],bytes[])\":{\"notice\":\"Operator intiated method to close pending market orders\"},\"initialize(address,address)\":{\"notice\":\"Initializes the proxy\"},\"openTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint8,uint256)\":{\"notice\":\"Opens a new Market/Limit trade\"},\"pause()\":{\"notice\":\"Pauses the contract\"},\"setLimitOrdersTimelock(uint256)\":{\"notice\":\"Sets the time-lock for limit order updates\"},\"unpause()\":{\"notice\":\"Unpauses the contract\"},\"updateMargin(uint256,uint256,uint8,uint256,bytes[])\":{\"notice\":\"Updates(Deposit/Withdraw) the margin for an open trade\"},\"updateOpenLimitOrder(uint256,uint256,uint256,uint256,uint256,uint256)\":{\"notice\":\"Updates an open limit order\"},\"updateTpAndSl(uint256,uint256,uint256,uint256,bytes[])\":{\"notice\":\"Updates the take-profit and stop-loss for a open Trade\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Trading.sol\":\"Trading\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@chainlink/=lib/chainlink/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":chainlink/=lib/chainlink/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":pyth-sdk-solidity/=lib/pyth-sdk-solidity/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/PausableUpgradeable.sol\":{\"keccak256\":\"0x40c636b4572ff5f1dc50cf22097e93c0723ee14eff87e99ac2b02636eeca1250\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c7d1f5e15633ab912b74c2f57e24559e66b03232300d4b27ff0f25bc452ecad\",\"dweb:/ipfs/QmYTJkc1cntYkKQ1Tu11nBcJLakiy93Tjytc4XHELo4GmR\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"src/Delegatable.sol\":{\"keccak256\":\"0x477287e08d3524d8159b6bacd44885e74c33de41ba15b5ae4a3dd5874617add8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ae9077e3a965df9dbf02a66660a6dc702b834ec0bf116153ee97299f479cf92\",\"dweb:/ipfs/QmciPUcoEDn5ouUV31QH5Geqin3v5vp9pABPK7p5d2QmUu\"]},\"src/Trading.sol\":{\"keccak256\":\"0x055834c4b63922e05a572d875d440e569e24c315c8f9c99853b3bf6c463ed2e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66d74091b96c49192088b7439bcc923f4aed6e8c8dbd96427a2d2d19d87d3349\",\"dweb:/ipfs/QmPY1iQi89HmGbPafomQejuAn1hJowDbEFUfBcZ8Fn6aku\"]},\"src/interfaces/ICallbacks.sol\":{\"keccak256\":\"0xaf271d97c8c47e52d493b1bbb1d0fb51768d6c94ac59aedbc71f5885649fcc3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3d0ae3efa5fd0448cc34d5c6166da6962186f7fa343490997f39ed593d4ab59\",\"dweb:/ipfs/QmRbxqvpg8UToeEX7sGQrToxhZKLeEKvBczrnZ9Qg887Lt\"]},\"src/interfaces/IExecute.sol\":{\"keccak256\":\"0x75f9d949112eb110d5a55ba4e6910ab3e094da8ff4decab3abd87d1e8dfe10c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2a3c7d7162b089643afd6923844284b5afff043009bb32c8bcab74f6990ea33\",\"dweb:/ipfs/QmSjbdEWJgzMcWC7jt2xW7Lg7SQ3cb5kEgR5qPCTKaVBH1\"]},\"src/interfaces/IPairInfos.sol\":{\"keccak256\":\"0x5fd2ccfc4c103543bb7fb9886ca6c1df6918a13e8e33ba2fa53cba6fdba14d98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4bb71437bbc061d0729d7fe4d820fa45eb2d33195ddddffdab0a5041929b203a\",\"dweb:/ipfs/QmTLNWDeYsrpasyJQ6RSDMzcafuAna4G1R8pizFyrfCA3W\"]},\"src/interfaces/IPairStorage.sol\":{\"keccak256\":\"0xb40cfb4b84674006b8d81737b304c84937c7a904b7ce847542258046ac6b35e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://906b01ce05d85dfae5728ced06d722da2f463fb29e63a8dff1ffa5c51deca8d3\",\"dweb:/ipfs/Qme5id3GWqjYEyboRqUTVN9afUjwckcbGcVdjbPZ6Q19BG\"]},\"src/interfaces/IPausable.sol\":{\"keccak256\":\"0x0cf760757842bd332ce27fac78b8dc0f7a36406529a213954bc463c2be174ecd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c69ee15b814b76caed732b47b729d1c2b361ed158b85220da30ea9aac893ad0e\",\"dweb:/ipfs/QmbF9HWVA7DCtNzK2LkRdvhMV1TuqTf9dzUzAKwQadHZnY\"]},\"src/interfaces/IPriceAggregator.sol\":{\"keccak256\":\"0x21992c3c324abffac8ccb282a5b40569787b786dd79fdf0df1fed6a4bf99b375\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fcb2ead0eeaccfd87a1003e01de8fc0ce97b8365bc9021a9f210dcdcee331ffe\",\"dweb:/ipfs/QmYXMuxPYKUbGSefB7c9AyTXxK7mS4hP9G4JL86mwANHnC\"]},\"src/interfaces/ITradingStorage.sol\":{\"keccak256\":\"0xffb3e1f124ac66a6e3155eb5df38e4aa32a7756f13a165a9e13b730e90645b34\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c1a5dff3972fdf6ffdd63bf348ae63e971a86695d46f66c7d4b04ccb42728f23\",\"dweb:/ipfs/QmSEDxJLhoUuoVL2VoCGwb7dz2ue26dEg3iCWXSVN4JDeL\"]},\"src/interfaces/IVaultManager.sol\":{\"keccak256\":\"0x9b426519dd97fbd0861685bd6d668a1efdf30da680dacc3eca6f84960222b1c8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be92c83448c444b53e040d1dc1c17fc6af7567cda448e1e8a32272dec6319dde\",\"dweb:/ipfs/QmcHQbxaw1XVtBwghs1f3qHBKmBDTrhdYWBm7tyNgFWxSz\"]},\"src/library/PositionMath.sol\":{\"keccak256\":\"0x02b855130b30da5e71c143006945ae31208082628e64720633c378029c42333c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a449300eedf6e864ef54e9e7d4c5d2e4c295f62d6a41925a3af33a0fb643b15c\",\"dweb:/ipfs/QmT6regWhrbyUUBui1ZLuW5DGfUFuCHpCVHQUxv9qbMVu1\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.7+commit.e28d00a7"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"LimitOrderInitiated","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"enum ITradingStorage.updateType","name":"_type","type":"uint8","indexed":false},{"internalType":"struct ITradingStorage.Trade","name":"newTrade","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"initialPosToken","type":"uint256"},{"internalType":"uint256","name":"positionSizeUSDC","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"indexed":false},{"internalType":"uint256","name":"marginFees","type":"uint256","indexed":false},{"internalType":"uint256","name":"lossProtectionTier","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"MarginUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"bool","name":"open","type":"bool","indexed":false},{"internalType":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false},{"internalType":"bool","name":"isBuy","type":"bool","indexed":false}],"type":"event","name":"MarketOrderInitiated","anonymous":false},{"inputs":[{"internalType":"string","name":"name","type":"string","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"NumberUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false},{"internalType":"uint256","name":"collateral","type":"uint256","indexed":false}],"type":"event","name":"OpenLimitCanceled","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"bool","name":"isBuy","type":"bool","indexed":false},{"internalType":"uint256","name":"openPrice","type":"uint256","indexed":false},{"internalType":"uint256","name":"executionFee","type":"uint256","indexed":false},{"internalType":"enum IExecute.OpenLimitOrderType","name":"orderType","type":"uint8","indexed":false},{"internalType":"uint256","name":"slippageP","type":"uint256","indexed":false},{"internalType":"uint256","name":"collateral","type":"uint256","indexed":false}],"type":"event","name":"OpenLimitPlaced","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"newPrice","type":"uint256","indexed":false},{"internalType":"uint256","name":"newTp","type":"uint256","indexed":false},{"internalType":"uint256","name":"newSl","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"OpenLimitUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":false},{"internalType":"bool","name":"isOperator","type":"bool","indexed":false}],"type":"event","name":"OperatorUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"newSl","type":"uint256","indexed":false},{"internalType":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"SlUpdateInitiated","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"newSl","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"SlUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"newTp","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"TpUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"_MAX_SLIPPAGE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"__msgSender","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"cancelOpenLimitOrder"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"cancelPendingMarketOrder"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"closeTradeMarket","outputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"bytes","name":"call_data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"delegatedAction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"delegations","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"enum ITradingStorage.LimitOrder","name":"_orderType","type":"uint8"},{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"bytes[]","name":"priceUpdateData","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"executeLimitOrder"},{"inputs":[{"internalType":"uint256[]","name":"orderId","type":"uint256[]"},{"internalType":"bytes[]","name":"priceUpdateData","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"executeMarketOrders"},{"inputs":[{"internalType":"address","name":"_storageT","type":"address"},{"internalType":"address","name":"_pairInfos","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"limitOrdersTimelock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct ITradingStorage.Trade","name":"t","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"initialPosToken","type":"uint256"},{"internalType":"uint256","name":"positionSizeUSDC","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"internalType":"enum IExecute.OpenLimitOrderType","name":"_type","type":"uint8"},{"internalType":"uint256","name":"_slippageP","type":"uint256"}],"stateMutability":"payable","type":"function","name":"openTrade","outputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pairInfos","outputs":[{"internalType":"contract IPairInfos","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"removeDelegate"},{"inputs":[{"internalType":"address","name":"delegate","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDelegate"},{"inputs":[{"internalType":"uint256","name":"_blocks","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setLimitOrdersTimelock"},{"inputs":[{"internalType":"address","name":"_reciever","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMarketExecFeeReciever"},{"inputs":[],"stateMutability":"view","type":"function","name":"storageT","outputs":[{"internalType":"contract ITradingStorage","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"enum ITradingStorage.updateType","name":"_type","type":"uint8"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes[]","name":"priceUpdateData","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"updateMargin","outputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_slippageP","type":"uint256"},{"internalType":"uint256","name":"_tp","type":"uint256"},{"internalType":"uint256","name":"_sl","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"updateOpenLimitOrder"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_isOperator","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"updateOperator"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"uint256","name":"_newSl","type":"uint256"},{"internalType":"uint256","name":"_newTP","type":"uint256"},{"internalType":"bytes[]","name":"priceUpdateData","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"updateTpAndSl"}],"devdoc":{"kind":"dev","methods":{"cancelOpenLimitOrder(uint256,uint256)":{"params":{"_index":"The index of the order","_pairIndex":"The index of the trading pair"}},"closeTradeMarket(uint256,uint256,uint256)":{"params":{"_amount":"The amount of collateral being closed","_index":"The index of the trade","_pairIndex":"The index of the trading pair"}},"executeLimitOrder(uint8,address,uint256,uint256,bytes[])":{"params":{"_index":"The index of the order","_orderType":"The type of limit order (OPEN, CLOSE, TP, SL, LIQ)","_pairIndex":"The index of the trading pair","_trader":"The address of the trader","priceUpdateData":"Pyth price update data"}},"executeMarketOrders(uint256[],bytes[])":{"params":{"orderId":"The array of orderIDs","priceUpdateData":"Pyth price update calldata"}},"initialize(address,address)":{"params":{"_pairInfos":"The address of the pair information contract","_storageT":"The address of the storage contract"}},"openTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint8,uint256)":{"params":{"_slippageP":"The slippage percentage","_type":"Market or Limit or Stop Limit","t":"The details of the trade to open"}},"paused()":{"details":"Returns true if the contract is paused, and false otherwise."},"setLimitOrdersTimelock(uint256)":{"params":{"_blocks":"The new time-lock duration in blocks"}},"updateMargin(uint256,uint256,uint8,uint256,bytes[])":{"params":{"_amount":"The Collateral by which to update the margin","_index":"The index of the trade","_pairIndex":"The index of the trading pair","_type":"Withdraw or Deposit","priceUpdateData":"Pyth price update"}},"updateOpenLimitOrder(uint256,uint256,uint256,uint256,uint256,uint256)":{"params":{"_index":"The index of the order","_pairIndex":"The index of the trading pair","_price":"The price level to set (_PRECISION)","_sl":"The stop-loss price","_tp":"The take-profit price"}},"updateTpAndSl(uint256,uint256,uint256,uint256,bytes[])":{"params":{"_index":"The index of the order","_newSl":"The new stop-loss price","_newTP":"The new take-profit price","_pairIndex":"The index of the trading pair","priceUpdateData":"Pyth price update data"}}},"version":1},"userdoc":{"kind":"user","methods":{"cancelOpenLimitOrder(uint256,uint256)":{"notice":"Cancels an open limit order"},"cancelPendingMarketOrder(uint256)":{"notice":"FallBack method in case unregister is not working directly"},"closeTradeMarket(uint256,uint256,uint256)":{"notice":"Closes a trade using market execution"},"executeLimitOrder(uint8,address,uint256,uint256,bytes[])":{"notice":"Executes a limit order (either open or close). Callable by Operators"},"executeMarketOrders(uint256[],bytes[])":{"notice":"Operator intiated method to close pending market orders"},"initialize(address,address)":{"notice":"Initializes the proxy"},"openTrade((address,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256),uint8,uint256)":{"notice":"Opens a new Market/Limit trade"},"pause()":{"notice":"Pauses the contract"},"setLimitOrdersTimelock(uint256)":{"notice":"Sets the time-lock for limit order updates"},"unpause()":{"notice":"Unpauses the contract"},"updateMargin(uint256,uint256,uint8,uint256,bytes[])":{"notice":"Updates(Deposit/Withdraw) the margin for an open trade"},"updateOpenLimitOrder(uint256,uint256,uint256,uint256,uint256,uint256)":{"notice":"Updates an open limit order"},"updateTpAndSl(uint256,uint256,uint256,uint256,bytes[])":{"notice":"Updates the take-profit and stop-loss for a open Trade"}},"version":1}},"settings":{"remappings":["@chainlink/=lib/chainlink/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","chainlink/=lib/chainlink/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts-upgradeable/contracts/","pyth-sdk-solidity/=lib/pyth-sdk-solidity/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Trading.sol":"Trading"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/security/PausableUpgradeable.sol":{"keccak256":"0x40c636b4572ff5f1dc50cf22097e93c0723ee14eff87e99ac2b02636eeca1250","urls":["bzz-raw://9c7d1f5e15633ab912b74c2f57e24559e66b03232300d4b27ff0f25bc452ecad","dweb:/ipfs/QmYTJkc1cntYkKQ1Tu11nBcJLakiy93Tjytc4XHELo4GmR"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"src/Delegatable.sol":{"keccak256":"0x477287e08d3524d8159b6bacd44885e74c33de41ba15b5ae4a3dd5874617add8","urls":["bzz-raw://6ae9077e3a965df9dbf02a66660a6dc702b834ec0bf116153ee97299f479cf92","dweb:/ipfs/QmciPUcoEDn5ouUV31QH5Geqin3v5vp9pABPK7p5d2QmUu"],"license":"MIT"},"src/Trading.sol":{"keccak256":"0x055834c4b63922e05a572d875d440e569e24c315c8f9c99853b3bf6c463ed2e2","urls":["bzz-raw://66d74091b96c49192088b7439bcc923f4aed6e8c8dbd96427a2d2d19d87d3349","dweb:/ipfs/QmPY1iQi89HmGbPafomQejuAn1hJowDbEFUfBcZ8Fn6aku"],"license":"MIT"},"src/interfaces/ICallbacks.sol":{"keccak256":"0xaf271d97c8c47e52d493b1bbb1d0fb51768d6c94ac59aedbc71f5885649fcc3c","urls":["bzz-raw://f3d0ae3efa5fd0448cc34d5c6166da6962186f7fa343490997f39ed593d4ab59","dweb:/ipfs/QmRbxqvpg8UToeEX7sGQrToxhZKLeEKvBczrnZ9Qg887Lt"],"license":"MIT"},"src/interfaces/IExecute.sol":{"keccak256":"0x75f9d949112eb110d5a55ba4e6910ab3e094da8ff4decab3abd87d1e8dfe10c9","urls":["bzz-raw://a2a3c7d7162b089643afd6923844284b5afff043009bb32c8bcab74f6990ea33","dweb:/ipfs/QmSjbdEWJgzMcWC7jt2xW7Lg7SQ3cb5kEgR5qPCTKaVBH1"],"license":"MIT"},"src/interfaces/IPairInfos.sol":{"keccak256":"0x5fd2ccfc4c103543bb7fb9886ca6c1df6918a13e8e33ba2fa53cba6fdba14d98","urls":["bzz-raw://4bb71437bbc061d0729d7fe4d820fa45eb2d33195ddddffdab0a5041929b203a","dweb:/ipfs/QmTLNWDeYsrpasyJQ6RSDMzcafuAna4G1R8pizFyrfCA3W"],"license":"MIT"},"src/interfaces/IPairStorage.sol":{"keccak256":"0xb40cfb4b84674006b8d81737b304c84937c7a904b7ce847542258046ac6b35e6","urls":["bzz-raw://906b01ce05d85dfae5728ced06d722da2f463fb29e63a8dff1ffa5c51deca8d3","dweb:/ipfs/Qme5id3GWqjYEyboRqUTVN9afUjwckcbGcVdjbPZ6Q19BG"],"license":"MIT"},"src/interfaces/IPausable.sol":{"keccak256":"0x0cf760757842bd332ce27fac78b8dc0f7a36406529a213954bc463c2be174ecd","urls":["bzz-raw://c69ee15b814b76caed732b47b729d1c2b361ed158b85220da30ea9aac893ad0e","dweb:/ipfs/QmbF9HWVA7DCtNzK2LkRdvhMV1TuqTf9dzUzAKwQadHZnY"],"license":"MIT"},"src/interfaces/IPriceAggregator.sol":{"keccak256":"0x21992c3c324abffac8ccb282a5b40569787b786dd79fdf0df1fed6a4bf99b375","urls":["bzz-raw://fcb2ead0eeaccfd87a1003e01de8fc0ce97b8365bc9021a9f210dcdcee331ffe","dweb:/ipfs/QmYXMuxPYKUbGSefB7c9AyTXxK7mS4hP9G4JL86mwANHnC"],"license":"MIT"},"src/interfaces/ITradingStorage.sol":{"keccak256":"0xffb3e1f124ac66a6e3155eb5df38e4aa32a7756f13a165a9e13b730e90645b34","urls":["bzz-raw://c1a5dff3972fdf6ffdd63bf348ae63e971a86695d46f66c7d4b04ccb42728f23","dweb:/ipfs/QmSEDxJLhoUuoVL2VoCGwb7dz2ue26dEg3iCWXSVN4JDeL"],"license":"MIT"},"src/interfaces/IVaultManager.sol":{"keccak256":"0x9b426519dd97fbd0861685bd6d668a1efdf30da680dacc3eca6f84960222b1c8","urls":["bzz-raw://be92c83448c444b53e040d1dc1c17fc6af7567cda448e1e8a32272dec6319dde","dweb:/ipfs/QmcHQbxaw1XVtBwghs1f3qHBKmBDTrhdYWBm7tyNgFWxSz"],"license":"MIT"},"src/library/PositionMath.sol":{"keccak256":"0x02b855130b30da5e71c143006945ae31208082628e64720633c378029c42333c","urls":["bzz-raw://a449300eedf6e864ef54e9e7d4c5d2e4c295f62d6a41925a3af33a0fb643b15c","dweb:/ipfs/QmT6regWhrbyUUBui1ZLuW5DGfUFuCHpCVHQUxv9qbMVu1"],"license":"MIT"}},"version":1},"id":73}
|