aspens 0.8.0

Aspens crosschain trading SDK
Documentation
1
{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"nonpayable"},{"type":"function","name":"MIN_ORDER_SIZE","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"NATIVE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"TERMINATION_DELAY","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"WITHDRAW_EPOCH","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_amount","type":"uint160","internalType":"uint160"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"depositFor","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_token","type":"address","internalType":"address"},{"name":"_amount","type":"uint160","internalType":"uint160"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"depositNative","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositNativeFor","inputs":[{"name":"_account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"factory","inputs":[],"outputs":[{"name":"_factory","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"isTerminated","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maintenanceAccrued","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maintenanceAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"maintenanceBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"pure"},{"type":"function","name":"multicall","inputs":[{"name":"data","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"payable"},{"type":"function","name":"operatorAccrued","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorAdmin","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"_owner","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"setOperatorAdmin","inputs":[{"name":"_newAdmin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorFee","inputs":[{"name":"_recipient","type":"address","internalType":"address"},{"name":"_bps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSettleEpochCap","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_cap","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setWithdrawEpochCap","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_cap","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"settleBatch","inputs":[{"name":"_deltas","type":"tuple[]","internalType":"struct MidribV3.SettleDelta[]","components":[{"name":"user","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"delta","type":"int256","internalType":"int256"}]},{"name":"_volumes","type":"tuple[]","internalType":"struct MidribV3.TokenVolume[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"grossVolume","type":"uint256","internalType":"uint256"}]},{"name":"_nonce","type":"uint256","internalType":"uint256"},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"settleEpochCap","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"cap","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"settleFees","inputs":[{"name":"_token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"settledInEpoch","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"terminate","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"terminatedAt","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"tradeBalance","inputs":[{"name":"holder","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"usedSettleNonces","inputs":[{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"used","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"usedWithdrawNonces","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"used","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"_version","type":"uint8","internalType":"uint8"}],"stateMutability":"pure"},{"type":"function","name":"withdraw","inputs":[{"name":"_v","type":"tuple","internalType":"struct MidribV3.WithdrawalVoucher","components":[{"name":"account","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"expiry","type":"uint256","internalType":"uint256"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawEpochCap","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"cap","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawTerminated","inputs":[{"name":"_token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawnInEpoch","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"FeesSettled","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"maintenanceRecipient","type":"address","indexed":true,"internalType":"address"},{"name":"maintenanceAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"operatorRecipient","type":"address","indexed":true,"internalType":"address"},{"name":"operatorAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"NetSettled","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"tokenContract","type":"address","indexed":true,"internalType":"address"},{"name":"delta","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"OperatorAdminSet","inputs":[{"name":"oldAdmin","type":"address","indexed":true,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorFeeSet","inputs":[{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"bps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"SettleEpochCapSet","inputs":[{"name":"tokenContract","type":"address","indexed":true,"internalType":"address"},{"name":"cap","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Terminated","inputs":[{"name":"caller","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TerminatedWithdrawal","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"tokenContract","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenDeposited","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"tokenContract","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint160","indexed":false,"internalType":"uint160"}],"anonymous":false},{"type":"event","name":"WithdrawEpochCapSet","inputs":[{"name":"tokenContract","type":"address","indexed":true,"internalType":"address"},{"name":"cap","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Withdrawn","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"tokenContract","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"nonce","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"FEE_TOO_HIGH","inputs":[{"name":"totalBps","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"INSUFFICIENT_BALANCE","inputs":[{"name":"available","type":"uint256","internalType":"uint256"},{"name":"required","type":"uint160","internalType":"uint160"}]},{"type":"error","name":"INVALID_SIGNER","inputs":[]},{"type":"error","name":"MINIMUM_ORDER_AMOUNT","inputs":[{"name":"amount","type":"uint160","internalType":"uint160"}]},{"type":"error","name":"NOT_A_CLONE","inputs":[]},{"type":"error","name":"NOT_TERMINATED","inputs":[]},{"type":"error","name":"OPERATOR_ADMIN_IS_SIGNER","inputs":[]},{"type":"error","name":"Reentrancy","inputs":[]},{"type":"error","name":"SETTLE_NONCE_ALREADY_USED","inputs":[]},{"type":"error","name":"SETTLE_NOT_CONSERVED","inputs":[]},{"type":"error","name":"SETTLE_RATE_LIMITED","inputs":[{"name":"cap","type":"uint256","internalType":"uint256"},{"name":"attempted","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TERMINATED","inputs":[]},{"type":"error","name":"TERMINATION_DELAY_PENDING","inputs":[{"name":"readyAt","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UNAUTHORIZED_CALLER","inputs":[]},{"type":"error","name":"WITHDRAW_NONCE_ALREADY_USED","inputs":[]},{"type":"error","name":"WITHDRAW_RATE_LIMITED","inputs":[{"name":"cap","type":"uint256","internalType":"uint256"},{"name":"attempted","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"WITHDRAW_VOUCHER_EXPIRED","inputs":[]},{"type":"error","name":"ZERO_ADDRESS_OPERATOR","inputs":[]},{"type":"error","name":"ZERO_ADDRESS_OPERATOR_ADMIN","inputs":[]},{"type":"error","name":"ZERO_AMOUNT","inputs":[]}],"bytecode":{"object":"0x61014060405234801561001157600080fd5b50306080524660a052606080610025610095565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81529384019290925290820152466060820152306080820181905260a09091206101005261012052506100e39050565b60408051808201909152600681526526b4b23934b160d11b602082015260606100be60036100c4565b90509091565b6060604051604081016040526001815282603001602082015392915050565b60805160a05160c05160e05161010051610120516135036101476000396000818161085f01528181610dfa0152818161176e0152611a4301526000612bd201526000612c8c01526000612c6601526000612c1601526000612bf301526135036000f3fe6080604052600436106102855760003560e01c8063719d5f8311610153578063a0cf0aea116100cb578063c45a01551161007f578063d3f82d8e11610064578063d3f82d8e146107cc578063db6b5246146107e1578063e0a273bc146107e957600080fd5b8063c45a015514610790578063d1cc9976146107b557600080fd5b8063a78842ee116100b0578063a78842ee1461071d578063ac9650d81461073d578063c41092531461075d57600080fd5b8063a0cf0aea146106e0578063a4e0c1811461070857600080fd5b8063892d16be1161012257806391a775b71161010757806391a775b71461067f5780639cd5adbe146106925780639e3bc208146106ca57600080fd5b8063892d16be146106225780638da5cb5b1461065d57600080fd5b8063719d5f8314610570578063742960c1146105955780637e122f53146105cd57806384b0196e146105fa57600080fd5b8063426aabc21161020157806354222c98116101b557806362b629f91161019a57806362b629f91461050d57806362fe8ee11461053a5780636de071571461055057600080fd5b806354222c98146104d157806354fd4d50146104f157600080fd5b80634d51462e116101e65780634d51462e146104645780634e3250cf146104915780634e5c6e4e146104b157600080fd5b8063426aabc2146103f75780634565fe4a1461042457600080fd5b80631aba2337116102585780632d2cfb661161023d5780632d2cfb66146103815780632e673446146103a157806336807d4c146103e057600080fd5b80631aba23371461034157806326ac1b1c1461036157600080fd5b806303fde2551461028a5780630c08bf88146102ac578063127effb2146102c157806319d5f0c3146102fe575b600080fd5b34801561029657600080fd5b506102aa6102a5366004612dc6565b610809565b005b3480156102b857600080fd5b506102aa6108d2565b3480156102cd57600080fd5b506005546102e1906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561030a57600080fd5b50610333610319366004612dc6565b600060208181529281526040808220909352908152205481565b6040519081526020016102f5565b34801561034d57600080fd5b506102aa61035c366004612dff565b610976565b34801561036d57600080fd5b506102aa61037c366004612e1c565b610b4e565b34801561038d57600080fd5b506102aa61039c366004612e51565b610cf9565b3480156103ad57600080fd5b506103cd60003660011981013560f090811c909103603c0135901c905090565b60405161ffff90911681526020016102f5565b3480156103ec57600080fd5b506103336201518081565b34801561040357600080fd5b50610333610412366004612dff565b60036020526000908152604090205481565b34801561043057600080fd5b5061045461043f366004612e7d565b60016020526000908152604090205460ff1681565b60405190151581526020016102f5565b34801561047057600080fd5b5061033361047f366004612dff565b600a6020526000908152604090205481565b34801561049d57600080fd5b506102aa6104ac366004612e96565b610da4565b3480156104bd57600080fd5b506102aa6104cc366004612f2a565b6110b9565b3480156104dd57600080fd5b506102aa6104ec366004612e51565b6114ee565b3480156104fd57600080fd5b50604051600381526020016102f5565b34801561051957600080fd5b50610333610528366004612dff565b60076020526000908152604090205481565b34801561054657600080fd5b50610333610e1081565b34801561055c57600080fd5b506102aa61056b366004612dff565b61158d565b34801561057c57600080fd5b503660011981013560f01c90036028013560601c6102e1565b3480156105a157600080fd5b506103336105b0366004612e51565b600460209081526000928352604080842090915290825290205481565b3480156105d957600080fd5b506103336105e8366004612dff565b60086020526000908152604090205481565b34801561060657600080fd5b5061060f6116d5565b6040516102f59796959493929190612fe9565b34801561062e57600080fd5b5061045461063d366004612e51565b600260209081526000928352604080842090915290825290205460ff1681565b34801561066957600080fd5b503660011981013560f01c90033560601c6102e1565b6102aa61068d366004612dff565b611718565b34801561069e57600080fd5b506103336106ad366004612e51565b600b60209081526000928352604080842090915290825290205481565b3480156106d657600080fd5b5061033360095481565b3480156106ec57600080fd5b506102e173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b34801561071457600080fd5b506102e16117de565b34801561072957600080fd5b506102aa610738366004612dff565b611812565b61075061074b36600461309d565b6119c8565b6040516102f59190613114565b34801561076957600080fd5b506005546103cd9074010000000000000000000000000000000000000000900461ffff1681565b34801561079c57600080fd5b503660011981013560f01c90036014013560601c6102e1565b3480156107c157600080fd5b506009541515610454565b3480156107d857600080fd5b506103cd600a81565b6102aa6119ed565b3480156107f557600080fd5b506102aa6108043660046131dc565b611ab2565b3068929eee149b4bd2126854036108285763ab143c066000526004601cfd5b3068929eee149b4bd2126855600954156108555760405163dc04be8560e01b815260040160405180910390fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036108b7576040517fdd201b4100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108c2338383611fa8565b3868929eee149b4bd21268555050565b6108da6117de565b6001600160a01b0316336001600160a01b031614610924576040517fe15e56c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600954156109455760405163dc04be8560e01b815260040160405180910390fd5b4260095560405133907f98cd97fc1a1cc958cbd729b1bb531d4f3ea4925470bf23ea9af386640cbd07be90600090a2565b3068929eee149b4bd2126854036109955763ab143c066000526004601cfd5b3068929eee149b4bd212685560095460008190036109df576040517ff66fedd600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109ee62015180836132ed565b905080421015610a32576040517f0baa86e0000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b336000908152602081815260408083206001600160a01b038716845290915281205490819003610a8e576040517ff6fa545000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152602081815260408083206001600160a01b03881680855292528220919091557fffffffffffffffffffffffff111111111111111111111111111111111111111201610ae857610ae333826122e3565b610afc565b610afc6001600160a01b0385163383612303565b6040518181526001600160a01b0385169033907f86d30d8feddd544de8061b7fa9f3487b6a32fb331060c2d5d16855c0778b3b449060200160405180910390a35050503868929eee149b4bd212685550565b610b566117de565b6001600160a01b0316336001600160a01b031614610ba0576040517fe15e56c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008161ffff16118015610bbb57506001600160a01b038216155b15610bf2576040517fe51bf64600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008161ffff16610c1860003660011981013560f090811c909103603c0135901c905090565b61ffff16610c2691906132ed565b9050612710811115610c67576040517f5c9bdcc600000000000000000000000000000000000000000000000000000000815260048101829052602401610a29565b600580546001600160a01b0385167fffffffffffffffffffff0000000000000000000000000000000000000000000090911681177401000000000000000000000000000000000000000061ffff861690810291909117909255604051918252907fd5650eed710468f7e377b318748df27ca6d4546f13b80aa9d6eec8c9abf23faa9060200160405180910390a2505050565b610d016117de565b6001600160a01b0316336001600160a01b031614610d4b576040517fe15e56c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821660008181526003602052604090819020839055517f027fb8edad5b73929d95fbc37ccc198eef670efb352551c3a1c51870107c50ef90610d989084815260200190565b60405180910390a25050565b3068929eee149b4bd212685403610dc35763ab143c066000526004601cfd5b3068929eee149b4bd212685560095415610df05760405163dc04be8560e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610e52576040517fdd201b4100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001600160a01b0316600003610e95576040517ff6fa545000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a6001600160a01b0382161015610ee4576040517f7ccfd2ff0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401610a29565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f689190613300565b9050610f846001600160a01b038481169033903090861661235c565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009082906001600160a01b038616906370a0823190602401602060405180830381865afa158015610fe6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100a9190613300565b6110149190613319565b6001600160a01b0380871660009081526020818152604080832093891683529290529081208054929350839290919061104e9084906132ed565b90915550506001600160a01b038085169086167ff252e7564622d27c64805f4295d4aed7999599ad484da4eaa1377fc14df9f1d561108b846123c3565b6040516001600160a01b03909116815260200160405180910390a350503868929eee149b4bd2126855505050565b3068929eee149b4bd2126854036110d85763ab143c066000526004601cfd5b3068929eee149b4bd2126855600954156111055760405163dc04be8560e01b815260040160405180910390fd5b6111108383836123ed565b826040013560000361114e576040517ff6fa545000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826080013542111561118c576040517fcfb1238700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600061119d6020860186612dff565b6001600160a01b03168152602080820192909252604090810160009081206060870135825290925290205460ff1615611202576040517f2152b76d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600260006112156020870187612dff565b6001600160a01b031681526020808201929092526040908101600090812060608801358252835290812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016931515939093179092558190819061127d90870187612dff565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008560200160208101906112b29190612dff565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050808460400135111561133357806112ef85604001356123c3565b6040517ff075336700000000000000000000000000000000000000000000000000000000815260048101929092526001600160a01b03166024820152604401610a29565b6113506113466040860160208701612dff565b8560400135612535565b61135e604085013582613319565b60008061136e6020880188612dff565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008660200160208101906113a39190612dff565b6001600160a01b03166001600160a01b031681526020019081526020016000208190555073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03168460200160208101906113f89190612dff565b6001600160a01b03160361142f5761142a604085013561141b6020870187612dff565b6001600160a01b0316906122e3565b611463565b61146361143f6020860186612dff565b604086018035906114539060208901612dff565b6001600160a01b03169190612303565b6114736040850160208601612dff565b6001600160a01b03166114896020860186612dff565b6001600160a01b03167f91fb9d98b786c57d74c099ccd2beca1739e9f6a81fb49001ca465c4b7591bbe2866040013587606001356040516114d4929190918252602082015260400190565b60405180910390a3503868929eee149b4bd2126855505050565b6114f66117de565b6001600160a01b0316336001600160a01b031614611540576040517fe15e56c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166000818152600a602052604090819020839055517f538bee6b440206c69b1feb76dd3c68c7f0e4f03dcbdac492ea06cdb38986e39c90610d989084815260200190565b60006115976117de565b9050336001600160a01b038216146115db576040517fe15e56c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661161b576040517fccd2609c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3660011981013560f01c90033560601c6001600160a01b0383160361166c576040517f0187b0a400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384811691821790925560405190918316907f6238bd8cf686042e0573e875b5120babc506c96bf63da70f5b8fdec308feb4c290600090a35050565b7f0f00000000000000000000000000000000000000000000000000000000000000606080600080808361170661260c565b97989097965046955030945091925090565b3068929eee149b4bd2126854036117375763ab143c066000526004601cfd5b3068929eee149b4bd2126855600954156117645760405163dc04be8560e01b815260040160405180910390fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036117c6576040517fdd201b4100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117cf81612652565b3868929eee149b4bd212685550565b6006546000906001600160a01b03168061180a573660011981013560f01c9003603e013560601c61180c565b805b91505090565b3068929eee149b4bd2126854036118315763ab143c066000526004601cfd5b3068929eee149b4bd21268556001600160a01b03811660009081526007602052604090205480156118b4576001600160a01b03821660008181526007602090815260408083208390553660011981013560f01c90036028013560601c835282825280832093835292905290812080548392906118ae9084906132ed565b90915550505b6001600160a01b0380831660009081526008602052604090205460055490911681158015906118eb57506001600160a01b03811615155b1561193f576001600160a01b03808516600081815260086020908152604080832083905593851682528181528382209282529190915290812080548492906119349084906132ed565b909155506119449050565b600091505b6001600160a01b0381163660011981013560f01c90036028013560601c6001600160a01b0316856001600160a01b03167f5c10360cd7c1ee27bdd881695aca458471acf57fec9bdd94efc9e11a3b5a8e2686866040516119ae929190918252602082015260400190565b60405180910390a45050503868929eee149b4bd212685550565b606034156119d557600080fd5b6119e76119e28484612784565b61281b565b92915050565b3068929eee149b4bd212685403611a0c5763ab143c066000526004601cfd5b3068929eee149b4bd212685560095415611a395760405163dc04be8560e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003611a9b576040517fdd201b4100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611aa433612652565b3868929eee149b4bd2126855565b3068929eee149b4bd212685403611ad15763ab143c066000526004601cfd5b3068929eee149b4bd212685560095415611afe5760405163dc04be8560e01b815260040160405180910390fd5b611b0d8787878787878761282c565b60008381526001602052604090205460ff1615611b56576040517f539110c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790558690611bb060003660011981013560f090811c909103603c0135901c905090565b60055490915074010000000000000000000000000000000000000000900461ffff1660005b83811015611db45760008b8b83818110611bf157611bf161332c565b9050606002016020016020810190611c099190612dff565b9050600160005b83811015611c6b57826001600160a01b03168e8e83818110611c3457611c3461332c565b9050606002016020016020810190611c4c9190612dff565b6001600160a01b031603611c635760009150611c6b565b600101611c10565b5080611c78575050611dac565b600080611c868f8f866129a5565b9150915080600014611c9c57611c9c8482612a4c565b6000611ca98e8e87612b23565b90506000612710611cbe61ffff8b168461335b565b611cc89190613372565b90506000612710611cdd61ffff8b168561335b565b611ce79190613372565b9050611cfb611cf682846132ed565b612ba8565b611d04906133ad565b8514611d3c576040517f053b624b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8115611d70576001600160a01b03871660009081526007602052604081208054849290611d6a9084906132ed565b90915550505b8015611da4576001600160a01b03871660009081526008602052604081208054839290611d9e9084906132ed565b90915550505b505050505050505b600101611bd5565b5060005b83811015611f8f57368b8b83818110611dd357611dd361332c565b606002919091019150600090508080611def6020850185612dff565b6001600160a01b03166001600160a01b031681526020019081526020016000206000836020016020810190611e249190612dff565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905060008260400135611e5783612ba8565b611e6191906133e5565b90506000811215611ea8576040517ff07533670000000000000000000000000000000000000000000000000000000081526004810183905260006024820152604401610a29565b80600080611eb96020870187612dff565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856020016020810190611eee9190612dff565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550826020016020810190611f259190612dff565b6001600160a01b0316611f3b6020850185612dff565b6001600160a01b03167fcb92bc64cc5c68703b92c9fcf4b3a37a69be04873e614837f8aeacfa8589e8f58560400135604051611f7991815260200190565b60405180910390a3505050806001019050611db8565b505050503868929eee149b4bd212685550505050505050565b806001600160a01b0316600003611feb576040517ff6fa545000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a6001600160a01b038216101561203a576040517f7ccfd2ff0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401610a29565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152600091908416906370a0823190602401602060405180830381865afa15801561209d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c19190613300565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091506000906001600160a01b038516906370a0823190602401602060405180830381865afa158015612124573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121489190613300565b9050826001600160a01b031682101561219f576040517ff0753367000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0384166024820152604401610a29565b6121b96001600160a01b038581169087903090871661235c565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009082906001600160a01b038716906370a0823190602401602060405180830381865afa15801561221b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223f9190613300565b6122499190613319565b6001600160a01b03808816600090815260208181526040808320938a168352929052908120805492935083929091906122839084906132ed565b90915550506001600160a01b038086169087167ff252e7564622d27c64805f4295d4aed7999599ad484da4eaa1377fc14df9f1d56122c0846123c3565b6040516001600160a01b03909116815260200160405180910390a3505050505050565b60003860003884865af16122ff5763b12d13eb6000526004601cfd5b5050565b81601452806034526fa9059cbb00000000000000000000000060005260206000604460106000875af1806001600051141661235157803d853b151710612351576390b8ec186000526004601cfd5b506000603452505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c52602060006064601c6000895af180600160005114166123b457803d873b1517106123b457637939f4246000526004601cfd5b50600060605260405250505050565b60007401000000000000000000000000000000000000000082106123e9576123e9612bc2565b5090565b60007f232a4ef2241135df893cd0d3f880df0ff65115b1f538078c78353f91a830770261241d6020860186612dff565b61242d6040870160208801612dff565b6040805160208101949094526001600160a01b03928316848201529116606083810191909152908601356080838101919091529086013560a083015285013560c082015260e001604051602081830303815290604052805190602001209050600061249782612bd0565b905060006124ca826020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042090565b905060006124d9828787612ce8565b90503660011981013560f01c90033560601c6001600160a01b0382161461252c576040517f6cbfd82c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b6000612543610e1042613372565b6001600160a01b0384166000908152600460209081526040808320848452909152812054919250906125769084906132ed565b6001600160a01b03851660009081526003602052604090205490915080158015906125a057508082115b156125e1576040517f5e7fe40c0000000000000000000000000000000000000000000000000000000081526004810182905260248101839052604401610a29565b506001600160a01b039093166000908152600460209081526040808320938352929052209190915550565b60408051808201909152600681527f4d696472696200000000000000000000000000000000000000000000000000006020820152606061264c6003612d8f565b90509091565b3460000361268c576040517ff6fa545000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a3410156126d2576040517f7ccfd2ff0000000000000000000000000000000000000000000000000000000081526001600160a01b0334166004820152602401610a29565b6001600160a01b03811660009081526020818152604080832073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8452909152812080543492906127179084906132ed565b9091555073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90506001600160a01b0382167ff252e7564622d27c64805f4295d4aed7999599ad484da4eaa1377fc14df9f1d5612766346123c3565b6040516001600160a01b03909116815260200160405180910390a350565b600060405190506020815281816020015280604001808360051b808684378201808515612803575b835187018035602082018337600038823584305af46127ce573d6000873e3d86fd5b5082810384523d815260209384019381013d6000823e60003d8201523d01601f0167ffffffffffffffe01690508184106127ac575b806040528485820360401b1794505050505092915050565b8060401c8167ffffffffffffffff16f35b60007ff6472b53c7bf87555bdd86e4ea01a600b45c6783d98b337d089a5cb0e2af8e8d888860405160200161286292919061340d565b60405160208183030381529060405280519060200120878760405160200161288b929190613480565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083019490945281019190915260608101919091526080810185905260a001604051602081830303815290604052805190602001209050600061290382612bd0565b90506000612936826020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042090565b90506000612945828787612ce8565b90503660011981013560f01c90033560601c6001600160a01b03821614612998576040517f6cbfd82c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050505050505050565b60008060005b84811015612a4357836001600160a01b03168686838181106129cf576129cf61332c565b90506060020160200160208101906129e79190612dff565b6001600160a01b031603612a3b576000868683818110612a0957612a0961332c565b9050606002016040013590508084612a2191906133e5565b93506000811315612a3957612a3681846132ed565b92505b505b6001016129ab565b50935093915050565b6000612a5a610e1042613372565b6001600160a01b0384166000908152600b6020908152604080832084845290915281205491925090612a8d9084906132ed565b6001600160a01b0385166000908152600a60205260409020549091508015801590612ab757508082115b15612af8576040517fe5235f570000000000000000000000000000000000000000000000000000000081526004810182905260248101839052604401610a29565b506001600160a01b039093166000908152600b60209081526040808320938352929052209190915550565b6000805b83811015612b9b57826001600160a01b0316858583818110612b4b57612b4b61332c565b612b619260206040909202019081019150612dff565b6001600160a01b031603612b9357848482818110612b8157612b8161332c565b90506040020160200135915050612ba1565b600101612b27565b50600090505b9392505050565b6000808212612bb5575090565b612bbd612bc2565b919050565b6335278d126000526004601cfd5b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f0000000000000000000000000000000000000000000000000000000000000000461416612cc35750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b67190100000000000060005280601a5281603a52604260182090506000603a52919050565b60006040518260408114612d045760418114612d445750612d79565b60208581013560ff81901c601b0190915285356040527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052612d56565b604085013560001a6020526040856040375b5084600052602060016080600060015afa5191506000606052806040523d612d87575b638baa579f6000526004601cfd5b509392505050565b6060604051604081016040526001815282603001602082015392915050565b6001600160a01b0381168114612dc357600080fd5b50565b60008060408385031215612dd957600080fd5b8235612de481612dae565b91506020830135612df481612dae565b809150509250929050565b600060208284031215612e1157600080fd5b8135612ba181612dae565b60008060408385031215612e2f57600080fd5b8235612e3a81612dae565b9150602083013561ffff81168114612df457600080fd5b60008060408385031215612e6457600080fd5b8235612e6f81612dae565b946020939093013593505050565b600060208284031215612e8f57600080fd5b5035919050565b600080600060608486031215612eab57600080fd5b8335612eb681612dae565b92506020840135612ec681612dae565b91506040840135612ed681612dae565b809150509250925092565b60008083601f840112612ef357600080fd5b50813567ffffffffffffffff811115612f0b57600080fd5b602083019150836020828501011115612f2357600080fd5b9250929050565b600080600083850360c0811215612f4057600080fd5b60a0811215612f4e57600080fd5b5083925060a084013567ffffffffffffffff811115612f6c57600080fd5b612f7886828701612ee1565b9497909650939450505050565b6000815180845260005b81811015612fab57602081850181015186830182015201612f8f565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e06020820152600061302460e0830189612f85565b82810360408401526130368189612f85565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501528451808252602080870193509091019060005b8181101561308c57835183526020938401939092019160010161306e565b50909b9a5050505050505050505050565b600080602083850312156130b057600080fd5b823567ffffffffffffffff8111156130c757600080fd5b8301601f810185136130d857600080fd5b803567ffffffffffffffff8111156130ef57600080fd5b8560208260051b840101111561310457600080fd5b6020919091019590945092505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561318b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452613176858351612f85565b9450602093840193919091019060010161313c565b50929695505050505050565b60008083601f8401126131a957600080fd5b50813567ffffffffffffffff8111156131c157600080fd5b6020830191508360208260061b8501011115612f2357600080fd5b60008060008060008060006080888a0312156131f757600080fd5b873567ffffffffffffffff81111561320e57600080fd5b8801601f81018a1361321f57600080fd5b803567ffffffffffffffff81111561323657600080fd5b8a602060608302840101111561324b57600080fd5b60209182019850965088013567ffffffffffffffff81111561326c57600080fd5b6132788a828b01613197565b90965094505060408801359250606088013567ffffffffffffffff81111561329f57600080fd5b6132ab8a828b01612ee1565b989b979a50959850939692959293505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156119e7576119e76132be565b60006020828403121561331257600080fd5b5051919050565b818103818111156119e7576119e76132be565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820281158282048414176119e7576119e76132be565b6000826133a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007f800000000000000000000000000000000000000000000000000000000000000082036133de576133de6132be565b5060000390565b8082018281126000831280158216821582161715613405576134056132be565b505092915050565b6020808252810182905260008360408301825b8581101561347657823561343381612dae565b6001600160a01b03168252602083013561344c81612dae565b6001600160a01b031660208301526040838101359083015260609283019290910190600101613420565b5095945050505050565b6020808252810182905260008360408301825b858110156134765782356134a681612dae565b6001600160a01b03168252602083810135908301526040928301929091019060010161349356fea2646970667358221220688b537cb5ccc738a74927cab709798a62733fa591b8fae4e5271e0ca080fd3664736f6c63430008220033","sourceMap":"3585:39021:15:-:0;;;10121:53;;;;;;;;;-1:-1:-1;3066:4:9;3028:45;;3100:13;3083:30;;3124:18;;3240:23;:21;:23::i;:::-;3340:22;;;;;;;3454:25;;;;;;;;;3489:26;;;;3525:32;;;;3737:4;3731:11;;3802:16;3792:27;;3843:12;;;3836:30;;;;3890:12;;;3883:33;3954:9;3947:4;3940:12;;3933:31;4002:9;3995:4;3988:12;;3981:31;;;4055:4;4042:18;;;4093:34;;10145:22:15;;-1:-1:-1;3585:39021:15;;-1:-1:-1;3585:39021:15;42068:318;42283:16;;;;;;;;;;;;-1:-1:-1;;;42283:16:15;;;;42181:19;42361:18;4286:1;42361:16;:18::i;:::-;42350:29;;42068:318;;:::o;214:334:18:-;264:21;378:4;372:11;416:4;413:1;409:12;403:4;396:26;445:1;442;435:12;504:1;500:2;496:10;489:4;486:1;482:12;474:33;531:1;214:334;-1:-1:-1;;214:334:18:o;3585:39021:15:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106102855760003560e01c8063719d5f8311610153578063a0cf0aea116100cb578063c45a01551161007f578063d3f82d8e11610064578063d3f82d8e146107cc578063db6b5246146107e1578063e0a273bc146107e957600080fd5b8063c45a015514610790578063d1cc9976146107b557600080fd5b8063a78842ee116100b0578063a78842ee1461071d578063ac9650d81461073d578063c41092531461075d57600080fd5b8063a0cf0aea146106e0578063a4e0c1811461070857600080fd5b8063892d16be1161012257806391a775b71161010757806391a775b71461067f5780639cd5adbe146106925780639e3bc208146106ca57600080fd5b8063892d16be146106225780638da5cb5b1461065d57600080fd5b8063719d5f8314610570578063742960c1146105955780637e122f53146105cd57806384b0196e146105fa57600080fd5b8063426aabc21161020157806354222c98116101b557806362b629f91161019a57806362b629f91461050d57806362fe8ee11461053a5780636de071571461055057600080fd5b806354222c98146104d157806354fd4d50146104f157600080fd5b80634d51462e116101e65780634d51462e146104645780634e3250cf146104915780634e5c6e4e146104b157600080fd5b8063426aabc2146103f75780634565fe4a1461042457600080fd5b80631aba2337116102585780632d2cfb661161023d5780632d2cfb66146103815780632e673446146103a157806336807d4c146103e057600080fd5b80631aba23371461034157806326ac1b1c1461036157600080fd5b806303fde2551461028a5780630c08bf88146102ac578063127effb2146102c157806319d5f0c3146102fe575b600080fd5b34801561029657600080fd5b506102aa6102a5366004612dc6565b610809565b005b3480156102b857600080fd5b506102aa6108d2565b3480156102cd57600080fd5b506005546102e1906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561030a57600080fd5b50610333610319366004612dc6565b600060208181529281526040808220909352908152205481565b6040519081526020016102f5565b34801561034d57600080fd5b506102aa61035c366004612dff565b610976565b34801561036d57600080fd5b506102aa61037c366004612e1c565b610b4e565b34801561038d57600080fd5b506102aa61039c366004612e51565b610cf9565b3480156103ad57600080fd5b506103cd60003660011981013560f090811c909103603c0135901c905090565b60405161ffff90911681526020016102f5565b3480156103ec57600080fd5b506103336201518081565b34801561040357600080fd5b50610333610412366004612dff565b60036020526000908152604090205481565b34801561043057600080fd5b5061045461043f366004612e7d565b60016020526000908152604090205460ff1681565b60405190151581526020016102f5565b34801561047057600080fd5b5061033361047f366004612dff565b600a6020526000908152604090205481565b34801561049d57600080fd5b506102aa6104ac366004612e96565b610da4565b3480156104bd57600080fd5b506102aa6104cc366004612f2a565b6110b9565b3480156104dd57600080fd5b506102aa6104ec366004612e51565b6114ee565b3480156104fd57600080fd5b50604051600381526020016102f5565b34801561051957600080fd5b50610333610528366004612dff565b60076020526000908152604090205481565b34801561054657600080fd5b50610333610e1081565b34801561055c57600080fd5b506102aa61056b366004612dff565b61158d565b34801561057c57600080fd5b503660011981013560f01c90036028013560601c6102e1565b3480156105a157600080fd5b506103336105b0366004612e51565b600460209081526000928352604080842090915290825290205481565b3480156105d957600080fd5b506103336105e8366004612dff565b60086020526000908152604090205481565b34801561060657600080fd5b5061060f6116d5565b6040516102f59796959493929190612fe9565b34801561062e57600080fd5b5061045461063d366004612e51565b600260209081526000928352604080842090915290825290205460ff1681565b34801561066957600080fd5b503660011981013560f01c90033560601c6102e1565b6102aa61068d366004612dff565b611718565b34801561069e57600080fd5b506103336106ad366004612e51565b600b60209081526000928352604080842090915290825290205481565b3480156106d657600080fd5b5061033360095481565b3480156106ec57600080fd5b506102e173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b34801561071457600080fd5b506102e16117de565b34801561072957600080fd5b506102aa610738366004612dff565b611812565b61075061074b36600461309d565b6119c8565b6040516102f59190613114565b34801561076957600080fd5b506005546103cd9074010000000000000000000000000000000000000000900461ffff1681565b34801561079c57600080fd5b503660011981013560f01c90036014013560601c6102e1565b3480156107c157600080fd5b506009541515610454565b3480156107d857600080fd5b506103cd600a81565b6102aa6119ed565b3480156107f557600080fd5b506102aa6108043660046131dc565b611ab2565b3068929eee149b4bd2126854036108285763ab143c066000526004601cfd5b3068929eee149b4bd2126855600954156108555760405163dc04be8560e01b815260040160405180910390fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036108b7576040517fdd201b4100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108c2338383611fa8565b3868929eee149b4bd21268555050565b6108da6117de565b6001600160a01b0316336001600160a01b031614610924576040517fe15e56c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600954156109455760405163dc04be8560e01b815260040160405180910390fd5b4260095560405133907f98cd97fc1a1cc958cbd729b1bb531d4f3ea4925470bf23ea9af386640cbd07be90600090a2565b3068929eee149b4bd2126854036109955763ab143c066000526004601cfd5b3068929eee149b4bd212685560095460008190036109df576040517ff66fedd600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109ee62015180836132ed565b905080421015610a32576040517f0baa86e0000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b336000908152602081815260408083206001600160a01b038716845290915281205490819003610a8e576040517ff6fa545000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152602081815260408083206001600160a01b03881680855292528220919091557fffffffffffffffffffffffff111111111111111111111111111111111111111201610ae857610ae333826122e3565b610afc565b610afc6001600160a01b0385163383612303565b6040518181526001600160a01b0385169033907f86d30d8feddd544de8061b7fa9f3487b6a32fb331060c2d5d16855c0778b3b449060200160405180910390a35050503868929eee149b4bd212685550565b610b566117de565b6001600160a01b0316336001600160a01b031614610ba0576040517fe15e56c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008161ffff16118015610bbb57506001600160a01b038216155b15610bf2576040517fe51bf64600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008161ffff16610c1860003660011981013560f090811c909103603c0135901c905090565b61ffff16610c2691906132ed565b9050612710811115610c67576040517f5c9bdcc600000000000000000000000000000000000000000000000000000000815260048101829052602401610a29565b600580546001600160a01b0385167fffffffffffffffffffff0000000000000000000000000000000000000000000090911681177401000000000000000000000000000000000000000061ffff861690810291909117909255604051918252907fd5650eed710468f7e377b318748df27ca6d4546f13b80aa9d6eec8c9abf23faa9060200160405180910390a2505050565b610d016117de565b6001600160a01b0316336001600160a01b031614610d4b576040517fe15e56c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821660008181526003602052604090819020839055517f027fb8edad5b73929d95fbc37ccc198eef670efb352551c3a1c51870107c50ef90610d989084815260200190565b60405180910390a25050565b3068929eee149b4bd212685403610dc35763ab143c066000526004601cfd5b3068929eee149b4bd212685560095415610df05760405163dc04be8560e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610e52576040517fdd201b4100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001600160a01b0316600003610e95576040517ff6fa545000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a6001600160a01b0382161015610ee4576040517f7ccfd2ff0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401610a29565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f689190613300565b9050610f846001600160a01b038481169033903090861661235c565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009082906001600160a01b038616906370a0823190602401602060405180830381865afa158015610fe6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100a9190613300565b6110149190613319565b6001600160a01b0380871660009081526020818152604080832093891683529290529081208054929350839290919061104e9084906132ed565b90915550506001600160a01b038085169086167ff252e7564622d27c64805f4295d4aed7999599ad484da4eaa1377fc14df9f1d561108b846123c3565b6040516001600160a01b03909116815260200160405180910390a350503868929eee149b4bd2126855505050565b3068929eee149b4bd2126854036110d85763ab143c066000526004601cfd5b3068929eee149b4bd2126855600954156111055760405163dc04be8560e01b815260040160405180910390fd5b6111108383836123ed565b826040013560000361114e576040517ff6fa545000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826080013542111561118c576040517fcfb1238700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600061119d6020860186612dff565b6001600160a01b03168152602080820192909252604090810160009081206060870135825290925290205460ff1615611202576040517f2152b76d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600260006112156020870187612dff565b6001600160a01b031681526020808201929092526040908101600090812060608801358252835290812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016931515939093179092558190819061127d90870187612dff565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008560200160208101906112b29190612dff565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050808460400135111561133357806112ef85604001356123c3565b6040517ff075336700000000000000000000000000000000000000000000000000000000815260048101929092526001600160a01b03166024820152604401610a29565b6113506113466040860160208701612dff565b8560400135612535565b61135e604085013582613319565b60008061136e6020880188612dff565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008660200160208101906113a39190612dff565b6001600160a01b03166001600160a01b031681526020019081526020016000208190555073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03168460200160208101906113f89190612dff565b6001600160a01b03160361142f5761142a604085013561141b6020870187612dff565b6001600160a01b0316906122e3565b611463565b61146361143f6020860186612dff565b604086018035906114539060208901612dff565b6001600160a01b03169190612303565b6114736040850160208601612dff565b6001600160a01b03166114896020860186612dff565b6001600160a01b03167f91fb9d98b786c57d74c099ccd2beca1739e9f6a81fb49001ca465c4b7591bbe2866040013587606001356040516114d4929190918252602082015260400190565b60405180910390a3503868929eee149b4bd2126855505050565b6114f66117de565b6001600160a01b0316336001600160a01b031614611540576040517fe15e56c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166000818152600a602052604090819020839055517f538bee6b440206c69b1feb76dd3c68c7f0e4f03dcbdac492ea06cdb38986e39c90610d989084815260200190565b60006115976117de565b9050336001600160a01b038216146115db576040517fe15e56c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661161b576040517fccd2609c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3660011981013560f01c90033560601c6001600160a01b0383160361166c576040517f0187b0a400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384811691821790925560405190918316907f6238bd8cf686042e0573e875b5120babc506c96bf63da70f5b8fdec308feb4c290600090a35050565b7f0f00000000000000000000000000000000000000000000000000000000000000606080600080808361170661260c565b97989097965046955030945091925090565b3068929eee149b4bd2126854036117375763ab143c066000526004601cfd5b3068929eee149b4bd2126855600954156117645760405163dc04be8560e01b815260040160405180910390fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036117c6576040517fdd201b4100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117cf81612652565b3868929eee149b4bd212685550565b6006546000906001600160a01b03168061180a573660011981013560f01c9003603e013560601c61180c565b805b91505090565b3068929eee149b4bd2126854036118315763ab143c066000526004601cfd5b3068929eee149b4bd21268556001600160a01b03811660009081526007602052604090205480156118b4576001600160a01b03821660008181526007602090815260408083208390553660011981013560f01c90036028013560601c835282825280832093835292905290812080548392906118ae9084906132ed565b90915550505b6001600160a01b0380831660009081526008602052604090205460055490911681158015906118eb57506001600160a01b03811615155b1561193f576001600160a01b03808516600081815260086020908152604080832083905593851682528181528382209282529190915290812080548492906119349084906132ed565b909155506119449050565b600091505b6001600160a01b0381163660011981013560f01c90036028013560601c6001600160a01b0316856001600160a01b03167f5c10360cd7c1ee27bdd881695aca458471acf57fec9bdd94efc9e11a3b5a8e2686866040516119ae929190918252602082015260400190565b60405180910390a45050503868929eee149b4bd212685550565b606034156119d557600080fd5b6119e76119e28484612784565b61281b565b92915050565b3068929eee149b4bd212685403611a0c5763ab143c066000526004601cfd5b3068929eee149b4bd212685560095415611a395760405163dc04be8560e01b815260040160405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003611a9b576040517fdd201b4100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611aa433612652565b3868929eee149b4bd2126855565b3068929eee149b4bd212685403611ad15763ab143c066000526004601cfd5b3068929eee149b4bd212685560095415611afe5760405163dc04be8560e01b815260040160405180910390fd5b611b0d8787878787878761282c565b60008381526001602052604090205460ff1615611b56576040517f539110c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790558690611bb060003660011981013560f090811c909103603c0135901c905090565b60055490915074010000000000000000000000000000000000000000900461ffff1660005b83811015611db45760008b8b83818110611bf157611bf161332c565b9050606002016020016020810190611c099190612dff565b9050600160005b83811015611c6b57826001600160a01b03168e8e83818110611c3457611c3461332c565b9050606002016020016020810190611c4c9190612dff565b6001600160a01b031603611c635760009150611c6b565b600101611c10565b5080611c78575050611dac565b600080611c868f8f866129a5565b9150915080600014611c9c57611c9c8482612a4c565b6000611ca98e8e87612b23565b90506000612710611cbe61ffff8b168461335b565b611cc89190613372565b90506000612710611cdd61ffff8b168561335b565b611ce79190613372565b9050611cfb611cf682846132ed565b612ba8565b611d04906133ad565b8514611d3c576040517f053b624b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8115611d70576001600160a01b03871660009081526007602052604081208054849290611d6a9084906132ed565b90915550505b8015611da4576001600160a01b03871660009081526008602052604081208054839290611d9e9084906132ed565b90915550505b505050505050505b600101611bd5565b5060005b83811015611f8f57368b8b83818110611dd357611dd361332c565b606002919091019150600090508080611def6020850185612dff565b6001600160a01b03166001600160a01b031681526020019081526020016000206000836020016020810190611e249190612dff565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905060008260400135611e5783612ba8565b611e6191906133e5565b90506000811215611ea8576040517ff07533670000000000000000000000000000000000000000000000000000000081526004810183905260006024820152604401610a29565b80600080611eb96020870187612dff565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856020016020810190611eee9190612dff565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550826020016020810190611f259190612dff565b6001600160a01b0316611f3b6020850185612dff565b6001600160a01b03167fcb92bc64cc5c68703b92c9fcf4b3a37a69be04873e614837f8aeacfa8589e8f58560400135604051611f7991815260200190565b60405180910390a3505050806001019050611db8565b505050503868929eee149b4bd212685550505050505050565b806001600160a01b0316600003611feb576040517ff6fa545000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a6001600160a01b038216101561203a576040517f7ccfd2ff0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401610a29565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152600091908416906370a0823190602401602060405180830381865afa15801561209d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c19190613300565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091506000906001600160a01b038516906370a0823190602401602060405180830381865afa158015612124573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121489190613300565b9050826001600160a01b031682101561219f576040517ff0753367000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0384166024820152604401610a29565b6121b96001600160a01b038581169087903090871661235c565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009082906001600160a01b038716906370a0823190602401602060405180830381865afa15801561221b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223f9190613300565b6122499190613319565b6001600160a01b03808816600090815260208181526040808320938a168352929052908120805492935083929091906122839084906132ed565b90915550506001600160a01b038086169087167ff252e7564622d27c64805f4295d4aed7999599ad484da4eaa1377fc14df9f1d56122c0846123c3565b6040516001600160a01b03909116815260200160405180910390a3505050505050565b60003860003884865af16122ff5763b12d13eb6000526004601cfd5b5050565b81601452806034526fa9059cbb00000000000000000000000060005260206000604460106000875af1806001600051141661235157803d853b151710612351576390b8ec186000526004601cfd5b506000603452505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c52602060006064601c6000895af180600160005114166123b457803d873b1517106123b457637939f4246000526004601cfd5b50600060605260405250505050565b60007401000000000000000000000000000000000000000082106123e9576123e9612bc2565b5090565b60007f232a4ef2241135df893cd0d3f880df0ff65115b1f538078c78353f91a830770261241d6020860186612dff565b61242d6040870160208801612dff565b6040805160208101949094526001600160a01b03928316848201529116606083810191909152908601356080838101919091529086013560a083015285013560c082015260e001604051602081830303815290604052805190602001209050600061249782612bd0565b905060006124ca826020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042090565b905060006124d9828787612ce8565b90503660011981013560f01c90033560601c6001600160a01b0382161461252c576040517f6cbfd82c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b6000612543610e1042613372565b6001600160a01b0384166000908152600460209081526040808320848452909152812054919250906125769084906132ed565b6001600160a01b03851660009081526003602052604090205490915080158015906125a057508082115b156125e1576040517f5e7fe40c0000000000000000000000000000000000000000000000000000000081526004810182905260248101839052604401610a29565b506001600160a01b039093166000908152600460209081526040808320938352929052209190915550565b60408051808201909152600681527f4d696472696200000000000000000000000000000000000000000000000000006020820152606061264c6003612d8f565b90509091565b3460000361268c576040517ff6fa545000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a3410156126d2576040517f7ccfd2ff0000000000000000000000000000000000000000000000000000000081526001600160a01b0334166004820152602401610a29565b6001600160a01b03811660009081526020818152604080832073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8452909152812080543492906127179084906132ed565b9091555073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90506001600160a01b0382167ff252e7564622d27c64805f4295d4aed7999599ad484da4eaa1377fc14df9f1d5612766346123c3565b6040516001600160a01b03909116815260200160405180910390a350565b600060405190506020815281816020015280604001808360051b808684378201808515612803575b835187018035602082018337600038823584305af46127ce573d6000873e3d86fd5b5082810384523d815260209384019381013d6000823e60003d8201523d01601f0167ffffffffffffffe01690508184106127ac575b806040528485820360401b1794505050505092915050565b8060401c8167ffffffffffffffff16f35b60007ff6472b53c7bf87555bdd86e4ea01a600b45c6783d98b337d089a5cb0e2af8e8d888860405160200161286292919061340d565b60405160208183030381529060405280519060200120878760405160200161288b929190613480565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083019490945281019190915260608101919091526080810185905260a001604051602081830303815290604052805190602001209050600061290382612bd0565b90506000612936826020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042090565b90506000612945828787612ce8565b90503660011981013560f01c90033560601c6001600160a01b03821614612998576040517f6cbfd82c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050505050505050565b60008060005b84811015612a4357836001600160a01b03168686838181106129cf576129cf61332c565b90506060020160200160208101906129e79190612dff565b6001600160a01b031603612a3b576000868683818110612a0957612a0961332c565b9050606002016040013590508084612a2191906133e5565b93506000811315612a3957612a3681846132ed565b92505b505b6001016129ab565b50935093915050565b6000612a5a610e1042613372565b6001600160a01b0384166000908152600b6020908152604080832084845290915281205491925090612a8d9084906132ed565b6001600160a01b0385166000908152600a60205260409020549091508015801590612ab757508082115b15612af8576040517fe5235f570000000000000000000000000000000000000000000000000000000081526004810182905260248101839052604401610a29565b506001600160a01b039093166000908152600b60209081526040808320938352929052209190915550565b6000805b83811015612b9b57826001600160a01b0316858583818110612b4b57612b4b61332c565b612b619260206040909202019081019150612dff565b6001600160a01b031603612b9357848482818110612b8157612b8161332c565b90506040020160200135915050612ba1565b600101612b27565b50600090505b9392505050565b6000808212612bb5575090565b612bbd612bc2565b919050565b6335278d126000526004601cfd5b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f0000000000000000000000000000000000000000000000000000000000000000461416612cc35750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b67190100000000000060005280601a5281603a52604260182090506000603a52919050565b60006040518260408114612d045760418114612d445750612d79565b60208581013560ff81901c601b0190915285356040527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052612d56565b604085013560001a6020526040856040375b5084600052602060016080600060015afa5191506000606052806040523d612d87575b638baa579f6000526004601cfd5b509392505050565b6060604051604081016040526001815282603001602082015392915050565b6001600160a01b0381168114612dc357600080fd5b50565b60008060408385031215612dd957600080fd5b8235612de481612dae565b91506020830135612df481612dae565b809150509250929050565b600060208284031215612e1157600080fd5b8135612ba181612dae565b60008060408385031215612e2f57600080fd5b8235612e3a81612dae565b9150602083013561ffff81168114612df457600080fd5b60008060408385031215612e6457600080fd5b8235612e6f81612dae565b946020939093013593505050565b600060208284031215612e8f57600080fd5b5035919050565b600080600060608486031215612eab57600080fd5b8335612eb681612dae565b92506020840135612ec681612dae565b91506040840135612ed681612dae565b809150509250925092565b60008083601f840112612ef357600080fd5b50813567ffffffffffffffff811115612f0b57600080fd5b602083019150836020828501011115612f2357600080fd5b9250929050565b600080600083850360c0811215612f4057600080fd5b60a0811215612f4e57600080fd5b5083925060a084013567ffffffffffffffff811115612f6c57600080fd5b612f7886828701612ee1565b9497909650939450505050565b6000815180845260005b81811015612fab57602081850181015186830182015201612f8f565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e06020820152600061302460e0830189612f85565b82810360408401526130368189612f85565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501528451808252602080870193509091019060005b8181101561308c57835183526020938401939092019160010161306e565b50909b9a5050505050505050505050565b600080602083850312156130b057600080fd5b823567ffffffffffffffff8111156130c757600080fd5b8301601f810185136130d857600080fd5b803567ffffffffffffffff8111156130ef57600080fd5b8560208260051b840101111561310457600080fd5b6020919091019590945092505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561318b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452613176858351612f85565b9450602093840193919091019060010161313c565b50929695505050505050565b60008083601f8401126131a957600080fd5b50813567ffffffffffffffff8111156131c157600080fd5b6020830191508360208260061b8501011115612f2357600080fd5b60008060008060008060006080888a0312156131f757600080fd5b873567ffffffffffffffff81111561320e57600080fd5b8801601f81018a1361321f57600080fd5b803567ffffffffffffffff81111561323657600080fd5b8a602060608302840101111561324b57600080fd5b60209182019850965088013567ffffffffffffffff81111561326c57600080fd5b6132788a828b01613197565b90965094505060408801359250606088013567ffffffffffffffff81111561329f57600080fd5b6132ab8a828b01612ee1565b989b979a50959850939692959293505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156119e7576119e76132be565b60006020828403121561331257600080fd5b5051919050565b818103818111156119e7576119e76132be565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820281158282048414176119e7576119e76132be565b6000826133a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007f800000000000000000000000000000000000000000000000000000000000000082036133de576133de6132be565b5060000390565b8082018281126000831280158216821582161715613405576134056132be565b505092915050565b6020808252810182905260008360408301825b8581101561347657823561343381612dae565b6001600160a01b03168252602083013561344c81612dae565b6001600160a01b031660208301526040838101359083015260609283019290910190600101613420565b5095945050505050565b6020808252810182905260008360408301825b858110156134765782356134a681612dae565b6001600160a01b03168252602083810135908301526040928301929091019060010161349356fea2646970667358221220688b537cb5ccc738a74927cab709798a62733fa591b8fae4e5271e0ca080fd3664736f6c63430008220033","sourceMap":"3585:39021:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42589:8;;;3585:39021;;;;;;;;;;;42589:8;;;3585:39021;;;;;;;;;;;;;;;;;;;;;42589:8;;;3585:39021;;;;;;;;;;;42589:8;;;3585:39021;;;;;;;;;;;;;;;;;;;;;;;;;;42589:8;;;3585:39021;;;;;;;;;;;42589:8;;;3585:39021;;;;;;;;;;;;;;;;;;;;;42589:8;;;3585:39021;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42589:8;;;3585:39021;;;;;;;;;;;42589:8;;;3585:39021;;;;;;;;;;;;;;;;;;;;;42589:8;;;3585:39021;;;;;;;;;;;42589:8;;;3585:39021;;;;;;;;;;;;;;;;;;;;;;;;;;42589:8;;;3585:39021;;;;;;;;;;;42589:8;;;3585:39021;;;;;;;;;;;;;;;;;;;;;;42589:8;;;17155:150;;;;;;;;;;-1:-1:-1;17155:150:15;;;;;:::i;:::-;;:::i;:::-;;26217:278;;;;;;;;;;;;;:::i;6922:30::-;;;;;;;;;;-1:-1:-1;6922:30:15;;;;-1:-1:-1;;;;;6922:30:15;;;;;;-1:-1:-1;;;;;730:55:22;;;712:74;;700:2;685:18;6922:30:15;;;;;;;;5572:87;;;;;;;;;;-1:-1:-1;5572:87:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;1336:25:22;;;1324:2;1309:18;5572:87:15;1190:177:22;27450:713:15;;;;;;;;;;-1:-1:-1;27450:713:15;;;;;:::i;:::-;;:::i;29434:521::-;;;;;;;;;;-1:-1:-1;29434:521:15;;;;;:::i;:::-;;:::i;23798:263::-;;;;;;;;;;-1:-1:-1;23798:263:15;;;;;:::i;:::-;;:::i;28471:96::-;;;;;;;;;;;;28518:6;3151:14:0;-1:-1:-1;;3147:22:0;;3134:36;3128:4;3124:47;;;3071:114;;;28557:2:15;41860:23;41847:37;41837:48;;28536:24;;28471:96;;;;;2590:6:22;2578:19;;;2560:38;;2548:2;2533:18;28471:96:15;2416:188:22;4833:52:15;;;;;;;;;;;;4877:8;4833:52;;6386:61;;;;;;;;;;-1:-1:-1;6386:61:15;;;;;:::i;:::-;;;;;;;;;;;;;;5749:59;;;;;;;;;;-1:-1:-1;5749:59:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3005:14:22;;2998:22;2980:41;;2968:2;2953:18;5749:59:15;2840:187:22;8882:59:15;;;;;;;;;;-1:-1:-1;8882:59:15;;;;;:::i;:::-;;;;;;;;;;;;;;18299:811;;;;;;;;;;-1:-1:-1;18299:811:15;;;;;:::i;:::-;;:::i;21828:1324::-;;;;;;;;;;-1:-1:-1;21828:1324:15;;;;;:::i;:::-;;:::i;24832:257::-;;;;;;;;;;-1:-1:-1;24832:257:15;;;;;:::i;:::-;;:::i;16836:89::-;;;;;;;;;;-1:-1:-1;16836:89:15;;4286:1;4629:36:22;;4617:2;4602:18;16836:89:15;4487:184:22;7614:66:15;;;;;;;;;;-1:-1:-1;7614:66:15;;;;;:::i;:::-;;;;;;;;;;;;;;4696:48;;;;;;;;;;;;4737:7;4696:48;;30354:469;;;;;;;;;;-1:-1:-1;30354:469:15;;;;;:::i;:::-;;:::i;28263:102::-;;;;;;;;;;-1:-1:-1;3151:14:0;-1:-1:-1;;3147:22:0;;3134:36;3128:4;3124:47;3071:114;;28355:2:15;699:22:0;686:36;680:4;676:47;28263:102:15;28471:96;6580:90;;;;;;;;;;-1:-1:-1;6580:90:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;7686:63;;;;;;;;;;-1:-1:-1;7686:63:15;;;;;:::i;:::-;;;;;;;;;;;;;;11383:596:9;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;5962:89:15:-;;;;;;;;;;-1:-1:-1;5962:89:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;16614:99;;;;;;;;;;-1:-1:-1;3151:14:0;-1:-1:-1;;3147:22:0;;3134:36;3128:4;3124:47;3071:114;;686:36;680:4;676:47;16614:99:15;28471:96;19693:139;;;;;;:::i;:::-;;:::i;9168:88::-;;;;;;;;;;-1:-1:-1;9168:88:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;8395:27;;;;;;;;;;;;;;;;5425:75;;;;;;;;;;;;5458:42;5425:75;;28881:168;;;;;;;;;;;;;:::i;37881:1088::-;;;;;;;;;;-1:-1:-1;37881:1088:15;;;;;:::i;:::-;;:::i;1622:626:10:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6958:25:15:-;;;;;;;;;;-1:-1:-1;6958:25:15;;;;;;;;;;;16272:106;;;;;;;;;;-1:-1:-1;3151:14:0;-1:-1:-1;;3147:22:0;;3134:36;3128:4;3124:47;3071:114;;16368:2:15;699:22:0;686:36;680:4;676:47;16272:106:15;28471:96;25159:94;;;;;;;;;;-1:-1:-1;25229:12:15;;:17;;25159:94;;4366:42;;;;;;;;;;;;4406:2;4366:42;;19280:122;;;:::i;33291:2812::-;;;;;;;;;;-1:-1:-1;33291:2812:15;;;;;:::i;:::-;;:::i;17155:150::-;1635:9:11;1610:22;1604:29;1601:44;1598:158;;1677:10;1671:4;1664:24;1737:4;1731;1724:18;1598:158;1800:9;1776:22;1769:41;10681:12:15::1;::::0;:17;10677:55:::1;;10707:25;;-1:-1:-1::0;;;10707:25:15::1;;;;;;;;;;;10677:55;-1:-1:-1::0;;;;;10367:6:15::2;10350:23;10358:4;10350:23:::0;10346:62:::2;;10382:26;;;;;;;;;;;;;;10346:62;17261:37:::3;17270:10;17282:6;17290:7;17261:8;:37::i;:::-;1937:10:11::0;1913:22;1906:42;17155:150:15;;:::o;26217:278::-;26275:15;:13;:15::i;:::-;-1:-1:-1;;;;;26261:29:15;:10;-1:-1:-1;;;;;26261:29:15;;26257:76;;26299:34;;;;;;;;;;;;;;26257:76;26347:12;;:17;26343:55;;26373:25;;-1:-1:-1;;;26373:25:15;;;;;;;;;;;26343:55;26423:15;26408:12;:30;26453:35;;26477:10;;26453:35;;;;;26217:278::o;27450:713::-;1635:9:11;1610:22;1604:29;1601:44;1598:158;;1677:10;1671:4;1664:24;1737:4;1731;1724:18;1598:158;1800:9;1776:22;1769:41;27539:12:15::1;::::0;27526:10:::1;27565:7:::0;;;27561:49:::1;;27581:29;;;;;;;;;;;;;;27561:49;27620:15;27638:22;4877:8;27638:2:::0;:22:::1;:::i;:::-;27620:40;;27692:7;27674:15;:25;27670:85;;;27708:47;::::0;::::1;::::0;;::::1;::::0;::::1;1336:25:22::0;;;1309:18;;27708:47:15::1;;;;;;;;27670:85;27795:10;27765:14;27782:24:::0;;;::::1;::::0;;;;;;;-1:-1:-1;;;;;27782:32:15;::::1;::::0;;;;;;;;;27828:11;;;27824:50:::1;;27848:26;;;;;;;;;;;;;;27824:50;27897:10;27919:1;27884:24:::0;;;::::1;::::0;;;;;;;-1:-1:-1;;;;;27884:32:15;::::1;::::0;;;;;;;:36;;;;27934:16;;27930:151:::1;;27966:34;:10;27993:6:::0;27966:26:::1;:34::i;:::-;27930:151;;;28031:39;-1:-1:-1::0;;;;;28031:19:15;::::1;28051:10;28063:6:::0;28031:19:::1;:39::i;:::-;28095:61;::::0;1336:25:22;;;-1:-1:-1;;;;;28095:61:15;::::1;::::0;28129:10:::1;::::0;28095:61:::1;::::0;1324:2:22;1309:18;28095:61:15::1;;;;;;;27516:647;;;1937:10:11::0;1913:22;1906:42;27450:713:15;:::o;29434:521::-;29528:15;:13;:15::i;:::-;-1:-1:-1;;;;;29514:29:15;:10;-1:-1:-1;;;;;29514:29:15;;29510:76;;29552:34;;;;;;;;;;;;;;29510:76;29607:1;29600:4;:8;;;:36;;;;-1:-1:-1;;;;;;29612:24:15;;;29600:36;29596:85;;;29645:36;;;;;;;;;;;;;;29596:85;29691:13;29743:4;29735:13;;29715:16;28518:6;3151:14:0;-1:-1:-1;;3147:22:0;;3134:36;3128:4;3124:47;;;3071:114;;;28557:2:15;41860:23;41847:37;41837:48;;28536:24;;28471:96;;29715:16;29707:25;;:41;;;;:::i;:::-;29691:57;-1:-1:-1;4552:6:15;29762:19;;29758:64;;;29790:32;;;;;;;;1336:25:22;;;1309:18;;29790:32:15;1190:177:22;29758:64:15;29832:15;:28;;-1:-1:-1;;;;;29832:28:15;;29870:18;;;;;;;;;;;;;;;;;;;;29903:45;;2560:38:22;;;29832:28:15;29903:45;;2548:2:22;2533:18;29903:45:15;;;;;;;29500:455;29434:521;;:::o;23798:263::-;23894:15;:13;:15::i;:::-;-1:-1:-1;;;;;23880:29:15;:10;-1:-1:-1;;;;;23880:29:15;;23876:76;;23918:34;;;;;;;;;;;;;;23876:76;-1:-1:-1;;;;;23962:24:15;;;;;;:16;:24;;;;;;;:31;;;24008:46;;;;;23989:4;1336:25:22;;1324:2;1309:18;;1190:177;24008:46:15;;;;;;;;23798:263;;:::o;18299:811::-;1635:9:11;1610:22;1604:29;1601:44;1598:158;;1677:10;1671:4;1664:24;1737:4;1731;1724:18;1598:158;1800:9;1776:22;1769:41;10681:12:15::1;::::0;:17;10677:55:::1;;10707:25;;-1:-1:-1::0;;;10707:25:15::1;;;;;;;;;;;10677:55;-1:-1:-1::0;;;;;10367:6:15::2;10350:23;10358:4;10350:23:::0;10346:62:::2;;10382:26;;;;;;;;;;;;;;10346:62;18466:7:::3;-1:-1:-1::0;;;;;18466:12:15::3;18477:1;18466:12:::0;18462:76:::3;;18501:26;;;;;;;;;;;;;;18462:76;4406:2;-1:-1:-1::0;;;;;18551:24:15;::::3;;18547:114;;;18598:52;::::0;::::3;::::0;;-1:-1:-1;;;;;730:55:22;;18598:52:15::3;::::0;::::3;712:74:22::0;685:18;;18598:52:15::3;566:226:22::0;18547:114:15::3;18695:46;::::0;;;;18735:4:::3;18695:46;::::0;::::3;712:74:22::0;18671:21:15::3;::::0;-1:-1:-1;;;;;18695:31:15;::::3;::::0;::::3;::::0;685:18:22;;18695:46:15::3;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18671:70:::0;-1:-1:-1;18751:59:15::3;-1:-1:-1::0;;;;;18751:23:15;;::::3;::::0;18775:10:::3;::::0;18795:4:::3;::::0;18751:59;::::3;:23;:59::i;:::-;18839:46;::::0;;;;18879:4:::3;18839:46;::::0;::::3;712:74:22::0;18820:16:15::3;::::0;18888:13;;-1:-1:-1;;;;;18839:31:15;::::3;::::0;::::3;::::0;685:18:22;;18839:46:15::3;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:62;;;;:::i;:::-;-1:-1:-1::0;;;;;18979:22:15;;::::3;:12;:22:::0;;;::::3;::::0;;;;;;;:30;;::::3;::::0;;;;;;;;:42;;18820:81;;-1:-1:-1;18820:81:15;;18979:30;;:12;:42:::3;::::0;18820:81;;18979:42:::3;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;19036:67:15;;::::3;::::0;;::::3;;19082:20;:8:::0;:18:::3;:20::i;:::-;19036:67;::::0;-1:-1:-1;;;;;730:55:22;;;712:74;;700:2;685:18;19036:67:15::3;;;;;;;18452:658;;1937:10:11::0;1913:22;1906:42;18299:811:15;;;:::o;21828:1324::-;1635:9:11;1610:22;1604:29;1601:44;1598:158;;1677:10;1671:4;1664:24;1737:4;1731;1724:18;1598:158;1800:9;1776:22;1769:41;10681:12:15::1;::::0;:17;10677:55:::1;;10707:25;;-1:-1:-1::0;;;10707:25:15::1;;;;;;;;;;;10677:55;21950:40:::2;21975:2;21979:10;;21950:24;:40::i;:::-;22004:2;:9;;;22017:1;22004:14:::0;22000:53:::2;;22027:26;;;;;;;;;;;;;;22000:53;22085:2;:9;;;22067:15;:27;22063:79;;;22103:39;;;;;;;;;;;;;;22063:79;22156:18;:30;22175:10;;::::0;::::2;:2:::0;:10:::2;:::i;:::-;-1:-1:-1::0;;;;;22156:30:15::2;::::0;;::::2;::::0;;::::2;::::0;;;;;;;;-1:-1:-1;22156:30:15;;;22187:8:::2;::::0;::::2;;22156:40:::0;;;;;;;;::::2;;22152:120;;;22219:42;;;;;;;;;;;;;;22152:120;22324:4;22281:18;:30;22300:10;;::::0;::::2;:2:::0;:10:::2;:::i;:::-;-1:-1:-1::0;;;;;22281:30:15::2;::::0;;::::2;::::0;;::::2;::::0;;;;;;;;-1:-1:-1;22281:30:15;;;22312:8:::2;::::0;::::2;;22281:40:::0;;;;;;;:47;;;::::2;::::0;::::2;;::::0;;;::::2;::::0;;;-1:-1:-1;;;;22370:10:15::2;::::0;;::::2;22312:8:::0;22370:10:::2;:::i;:::-;-1:-1:-1::0;;;;;22357:24:15::2;-1:-1:-1::0;;;;;22357:24:15::2;;;;;;;;;;;;:34;22382:2;:8;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22357:34:15::2;-1:-1:-1::0;;;;;22357:34:15::2;;;;;;;;;;;;;22339:52;;22574:7;22562:2;:9;;;:19;22558:145;;;22650:7;22669:21;:2;:9;;;:19;:21::i;:::-;22604:88;::::0;::::2;::::0;;::::2;::::0;::::2;10824:25:22::0;;;;-1:-1:-1;;;;;10885:55:22;10865:18;;;10858:83;10797:18;;22604:88:15::2;10650:297:22::0;22558:145:15::2;22712:43;22735:8;::::0;;;::::2;::::0;::::2;;:::i;:::-;22745:2;:9;;;22712:22;:43::i;:::-;22876:19;22886:9;::::0;::::2;;22876:7:::0;:19:::2;:::i;:::-;22839:12;::::0;22852:10:::2;;::::0;::::2;:2:::0;:10:::2;:::i;:::-;-1:-1:-1::0;;;;;22839:24:15::2;-1:-1:-1::0;;;;;22839:24:15::2;;;;;;;;;;;;:34;22864:2;:8;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22839:34:15::2;-1:-1:-1::0;;;;;22839:34:15::2;;;;;;;;;;;;:56;;;;5458:42;-1:-1:-1::0;;;;;22909:18:15::2;:2;:8;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22909:18:15::2;::::0;22905:161:::2;;22943:37;22970:9;::::0;::::2;;22943:10;;::::0;::::2;22970:2:::0;22943:10:::2;:::i;:::-;-1:-1:-1::0;;;;;22943:26:15::2;::::0;::::2;:37::i;:::-;22905:161;;;23011:44;23033:10;;::::0;::::2;:2:::0;:10:::2;:::i;:::-;23045:9;::::0;::::2;::::0;::::2;::::0;23011:8:::2;::::0;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;23011:21:15::2;::::0;:44;:21:::2;:44::i;:::-;23115:8;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;23080:65:15::2;23103:10;;::::0;::::2;:2:::0;:10:::2;:::i;:::-;-1:-1:-1::0;;;;;23080:65:15::2;;23125:2;:9;;;23136:2;:8;;;23080:65;;;;;;11126:25:22::0;;;11182:2;11167:18;;11160:34;11114:2;11099:18;;10952:248;23080:65:15::2;;;;;;;;21940:1212;1937:10:11::0;1913:22;1906:42;21828:1324:15;;;:::o;24832:257::-;24926:15;:13;:15::i;:::-;-1:-1:-1;;;;;24912:29:15;:10;-1:-1:-1;;;;;24912:29:15;;24908:76;;24950:34;;;;;;;;;;;;;;24908:76;-1:-1:-1;;;;;24994:22:15;;;;;;:14;:22;;;;;;;:29;;;25038:44;;;;;25019:4;1336:25:22;;1324:2;1309:18;;1190:177;30354:469:15;30418:15;30436;:13;:15::i;:::-;30418:33;-1:-1:-1;30465:10:15;-1:-1:-1;;;;;30465:21:15;;;30461:68;;30495:34;;;;;;;;;;;;;;30461:68;-1:-1:-1;;;;;30543:23:15;;30539:78;;30575:42;;;;;;;;;;;;;;30539:78;3151:14:0;-1:-1:-1;;3147:22:0;;3134:36;3128:4;3124:47;3071:114;;686:36;680:4;676:47;-1:-1:-1;;;;;30631:30:15;;;30627:82;;30670:39;;;;;;;;;;;;;;30627:82;30719:21;:33;;;;-1:-1:-1;;;;;30719:33:15;;;;;;;;;30767:49;;30719:33;;30767:49;;;;;-1:-1:-1;;30767:49:15;30408:415;30354:469;:::o;11383:596:9:-;11721:16;11508:18;;11481:13;;;11508:18;11779:23;:21;:23::i;:::-;11383:596;;11761:41;;;-1:-1:-1;11822:13:9;;-1:-1:-1;11873:4:9;;-1:-1:-1;11383:596:9;;-1:-1:-1;11383:596:9;:::o;19693:139:15:-;1635:9:11;1610:22;1604:29;1601:44;1598:158;;1677:10;1671:4;1664:24;1737:4;1731;1724:18;1598:158;1800:9;1776:22;1769:41;10681:12:15::1;::::0;:17;10677:55:::1;;10707:25;;-1:-1:-1::0;;;10707:25:15::1;;;;;;;;;;;10677:55;-1:-1:-1::0;;;;;10367:6:15::2;10350:23;10358:4;10350:23:::0;10346:62:::2;;10382:26;;;;;;;;;;;;;;10346:62;19801:24:::3;19816:8;19801:14;:24::i;:::-;1937:10:11::0;1913:22;1906:42;19693:139:15;:::o;28881:168::-;28960:21;;28927:7;;-1:-1:-1;;;;;28960:21:15;;28998:44;;3151:14:0;-1:-1:-1;;3147:22:0;;3134:36;3128:4;3124:47;3071:114;;29039:2:15;699:22:0;686:36;680:4;676:47;28998:44:15;;;29018:3;28998:44;28991:51;;;28881:168;:::o;37881:1088::-;1635:9:11;1610:22;1604:29;1601:44;1598:158;;1677:10;1671:4;1664:24;1737:4;1731;1724:18;1598:158;1800:9;1776:22;1769:41;-1:-1:-1;;;;;37968:26:15;::::1;37949:16;37968:26:::0;;;:18:::1;:26;::::0;;;;;38008:13;;38004:371:::1;;-1:-1:-1::0;;;;;38037:26:15;::::1;38066:1;38037:26:::0;;;:18:::1;:26;::::0;;;;;;;:30;;;3151:14:0;-1:-1:-1;;3147:22:0;;3134:36;3128:4;3124:47;3071:114;;28355:2:15;699:22:0;686:36;680:4;676:47;38310:34:15;;;;;;;;:42;;;;;;;;;:54;;38356:8;;38066:1;38310:54:::1;::::0;38356:8;;38310:54:::1;:::i;:::-;::::0;;;-1:-1:-1;;38004:371:15::1;-1:-1:-1::0;;;;;38403:23:15;;::::1;38385:15;38403:23:::0;;;:15:::1;:23;::::0;;;;;38460:15:::1;::::0;38403:23;;38460:15:::1;38660:12:::0;;;::::1;::::0;:43:::1;;-1:-1:-1::0;;;;;;38676:27:15;::::1;::::0;::::1;38660:43;38656:203;;;-1:-1:-1::0;;;;;38719:23:15;;::::1;38745:1;38719:23:::0;;;:15:::1;:23;::::0;;;;;;;:27;;;38760;;::::1;::::0;;;;;;;;:35;;;;;;;;;;:46;;38799:7;;38745:1;38760:46:::1;::::0;38799:7;;38760:46:::1;:::i;:::-;::::0;;;-1:-1:-1;38656:203:15::1;::::0;-1:-1:-1;38656:203:15::1;;38847:1;38837:11;;38656:203;-1:-1:-1::0;;;;;38874:88:15;::::1;3151:14:0::0;-1:-1:-1;;3147:22:0;;3134:36;3128:4;3124:47;3071:114;;28355:2:15;699:22:0;686:36;680:4;676:47;-1:-1:-1;;;;;38874:88:15::1;38899:6;-1:-1:-1::0;;;;;38874:88:15::1;;38929:8;38954:7;38874:88;;;;;;11126:25:22::0;;;11182:2;11167:18;;11160:34;11114:2;11099:18;;10952:248;38874:88:15::1;;;;;;;;37939:1030;;;1937:10:11::0;1913:22;1906:42;37881:1088:15;:::o;1622:626:10:-;1696:14;2069:9;:14;2065:28;;2085:8;;;2065:28;2201:40;2224:16;2235:4;;2224:10;:16::i;:::-;2201:22;:40::i;:::-;1622:626;;;;:::o;19280:122:15:-;1635:9:11;1610:22;1604:29;1601:44;1598:158;;1677:10;1671:4;1664:24;1737:4;1731;1724:18;1598:158;1800:9;1776:22;1769:41;10681:12:15::1;::::0;:17;10677:55:::1;;10707:25;;-1:-1:-1::0;;;10707:25:15::1;;;;;;;;;;;10677:55;-1:-1:-1::0;;;;;10367:6:15::2;10350:23;10358:4;10350:23:::0;10346:62:::2;;10382:26;;;;;;;;;;;;;;10346:62;19369:26:::3;19384:10;19369:14;:26::i;:::-;1937:10:11::0;1913:22;1906:42;19280:122:15:o;33291:2812::-;1635:9:11;1610:22;1604:29;1601:44;1598:158;;1677:10;1671:4;1664:24;1737:4;1731;1724:18;1598:158;1800:9;1776:22;1769:41;10681:12:15::1;::::0;:17;10677:55:::1;;10707:25;;-1:-1:-1::0;;;10707:25:15::1;;;;;;;;;;;10677:55;33504:57:::2;33523:7;;33532:8;;33542:6;33550:10;;33504:18;:57::i;:::-;33575:24;::::0;;;:16:::2;:24;::::0;;;;;::::2;;33571:102;;;33622:40;;;;;;;;;;;;;;33571:102;33682:24;::::0;;;33709:4:::2;33682:24;::::0;;;;;;:31;;;::::2;::::0;;::::2;::::0;;33738:7;;33776:16:::2;28518:6:::0;3151:14:0;-1:-1:-1;;3147:22:0;;3134:36;3128:4;3124:47;;;3071:114;;;28557:2:15;41860:23;41847:37;41837:48;;28536:24;;28471:96;;33776:16:::2;33816:11;::::0;33762:30;;-1:-1:-1;33816:11:15;;::::2;;;33802;34171:1171;34191:3;34187:1;:7;34171:1171;;;34215:13;34231:7;;34239:1;34231:10;;;;;;;:::i;:::-;;;;;;:16;;;;;;;;;;:::i;:::-;34215:32:::0;-1:-1:-1;34278:4:15::2;34261:14;34296:176;34316:1;34312;:5;34296:176;;;34366:5;-1:-1:-1::0;;;;;34346:25:15::2;:7;;34354:1;34346:10;;;;;;;:::i;:::-;;;;;;:16;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;34346:25:15::2;::::0;34342:116:::2;;34407:5;34395:17;;34434:5;;34342:116;34319:3;;34296:176;;;;34490:9;34485:24;;34501:8;;;;34485:24;34525:10;34537:16:::0;34557:28:::2;34570:7;;34579:5;34557:12;:28::i;:::-;34524:61;;;;34603:8;34615:1;34603:13;34599:58;;34618:39;34641:5;34648:8;34618:22;:39::i;:::-;34672:19;34694:27;34705:8;;34715:5;34694:10;:27::i;:::-;34672:49:::0;-1:-1:-1;34735:16:15::2;4552:6;34755:18;34754:34;34755:18:::0;::::2;34672:49:::0;34755:18:::2;:::i;:::-;34754:34;;;;:::i;:::-;34735:53:::0;-1:-1:-1;34802:15:15::2;4552:6;34821:18;34820:34;34821:18:::0;::::2;:11:::0;:18:::2;:::i;:::-;34820:34;;;;:::i;:::-;34802:52:::0;-1:-1:-1;35120:31:15::2;35121:18;34802:52:::0;35121:8;:18:::2;:::i;:::-;35120:29;:31::i;:::-;35119:32;;;:::i;:::-;35112:3;:39;35108:87;;35160:35;;;;;;;;;;;;;;35108:87;35214:13:::0;;35210:56:::2;;-1:-1:-1::0;;;;;35229:25:15;::::2;;::::0;;;:18:::2;:25;::::0;;;;:37;;35258:8;;35229:25;:37:::2;::::0;35258:8;;35229:37:::2;:::i;:::-;::::0;;;-1:-1:-1;;35210:56:15::2;35284:12:::0;;35280:51:::2;;-1:-1:-1::0;;;;;35298:22:15;::::2;;::::0;;;:15:::2;:22;::::0;;;;:33;;35324:7;;35298:22;:33:::2;::::0;35324:7;;35298:33:::2;:::i;:::-;::::0;;;-1:-1:-1;;35280:51:15::2;34201:1141;;;;;;;34171:1171;34196:3;;34171:1171;;;;35440:9;35435:662;35455:3;35451:1;:7;35435:662;;;35479:22;35504:7;;35512:1;35504:10;;;;;;;:::i;:::-;;;::::0;;;::::2;::::0;-1:-1:-1;35528:11:15::2;::::0;-1:-1:-1;35528:11:15;;35555:6:::2;;::::0;::::2;35504:10:::0;35555:6:::2;:::i;:::-;-1:-1:-1::0;;;;;35542:20:15::2;-1:-1:-1::0;;;;;35542:20:15::2;;;;;;;;;;;;:29;35563:1;:7;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;35542:29:15::2;-1:-1:-1::0;;;;;35542:29:15::2;;;;;;;;;;;;;35528:43;;35813:11;35844:1;:7;;;35827:14;:3;:12;:14::i;:::-;:24;;;;:::i;:::-;35813:38;;35876:1;35869:4;:8;35865:95;;;35904:41;::::0;::::2;::::0;;::::2;::::0;::::2;10824:25:22::0;;;35943:1:15::2;10865:18:22::0;;;10858:83;10797:18;;35904:41:15::2;10650:297:22::0;35865:95:15::2;36013:4:::0;35973:12:::2;::::0;35986:6:::2;;::::0;::::2;:1:::0;:6:::2;:::i;:::-;-1:-1:-1::0;;;;;35973:20:15::2;-1:-1:-1::0;;;;;35973:20:15::2;;;;;;;;;;;;:29;35994:1;:7;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;35973:29:15::2;-1:-1:-1::0;;;;;35973:29:15::2;;;;;;;;;;;;:45;;;;36069:1;:7;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;36037:49:15::2;36061:6;;::::0;::::2;:1:::0;:6:::2;:::i;:::-;-1:-1:-1::0;;;;;36037:49:15::2;;36078:1;:7;;;36037:49;;;;1336:25:22::0;;1324:2;1309:18;;1190:177;36037:49:15::2;;;;;;;;35465:632;;;35460:3;;;;;35435:662;;;;33494:2609;;;1937:10:11::0;1913:22;1906:42;33291:2812:15;;;;;;;:::o;11517:1492::-;11646:7;-1:-1:-1;;;;;11646:12:15;11657:1;11646:12;11642:76;;11681:26;;;;;;;;;;;;;;11642:76;4406:2;-1:-1:-1;;;;;11789:24:15;;;11785:114;;;11836:52;;;;;-1:-1:-1;;;;;730:55:22;;11836:52:15;;;712:74:22;685:18;;11836:52:15;566:226:22;11785:114:15;11966:40;;;;;-1:-1:-1;;;;;730:55:22;;;11966:40:15;;;712:74:22;11948:15:15;;11966:31;;;;;;685:18:22;;11966:40:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12082:46;;;;;12122:4;12082:46;;;712:74:22;11948:58:15;;-1:-1:-1;12058:21:15;;-1:-1:-1;;;;;12082:31:15;;;;;685:18:22;;12082:46:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12058:70;;12219:7;-1:-1:-1;;;;;12209:17:15;:7;:17;12205:169;;;12289:74;;;;;;;;10824:25:22;;;-1:-1:-1;;;;;10885:55:22;;10865:18;;;10858:83;10797:18;;12289:74:15;10650:297:22;12205:169:15;12429:56;-1:-1:-1;;;;;12429:23:15;;;;12453:7;;12470:4;;12429:56;;:23;:56::i;:::-;12564:46;;;;;12604:4;12564:46;;;712:74:22;12545:16:15;;12613:13;;-1:-1:-1;;;;;12564:31:15;;;;;685:18:22;;12564:46:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:62;;;;:::i;:::-;-1:-1:-1;;;;;12837:21:15;;;:12;:21;;;;;;;;;;;:29;;;;;;;;;;;:41;;12545:81;;-1:-1:-1;12545:81:15;;12837:29;;:12;:41;;12545:81;;12837:41;:::i;:::-;;;;-1:-1:-1;;;;;;;12936:66:15;;;;;;;12981:20;:8;:18;:20::i;:::-;12936:66;;-1:-1:-1;;;;;730:55:22;;;712:74;;700:2;685:18;12936:66:15;;;;;;;11594:1415;;;11517:1492;;;:::o;4176:342:13:-;4378:4;4366:10;4360:4;4348:10;4340:6;4336:2;4329:5;4324:59;4314:188;;4416:10;4410:4;4403:24;4483:4;4477;4470:18;4314:188;4176:342;;:::o;13392:887::-;13555:2;13549:4;13542:16;13612:6;13606:4;13599:20;13677:34;13671:4;13664:48;13873:4;13867;13861;13855;13852:1;13845:5;13838;13833:45;13925:7;13921:1;13914:4;13908:11;13905:18;13901:32;13891:275;;14016:7;13997:16;13988:5;13976:18;13969:26;13966:48;13963:61;13953:199;;14061:10;14055:4;14048:24;14129:4;14123;14116:18;13953:199;13891:275;14192:1;14186:4;14179:15;13392:887;;;:::o;9254:1026::-;9437:4;9431:11;9502:6;9496:4;9489:20;9567:2;9561:4;9554:16;9632:4;9628:2;9624:13;9618:4;9611:27;9694:34;9688:4;9681:48;9841:4;9835;9829;9823;9820:1;9813:5;9806;9801:45;9893:7;9889:1;9882:4;9876:11;9873:18;9869:32;9859:279;;9984:7;9965:16;9956:5;9944:18;9937:26;9934:48;9931:61;9921:203;;10029:10;10023:4;10016:24;10101:4;10095;10088:18;9921:203;-1:-1:-1;10164:1:13;10158:4;10151:15;10220:4;10213:15;-1:-1:-1;;;;9254:1026:13:o;5039:142:12:-;5092:7;5120:8;5115:1;:13;5111:36;;5130:17;:15;:17::i;:::-;-1:-1:-1;5172:1:12;5039:142::o;40649:843:15:-;40821:18;40893:143;41054:10;;;;:2;:10;:::i;:::-;41082:8;;;;;;;;:::i;:::-;41108:9;40865:319;;;;;13040:25:22;;;;-1:-1:-1;;;;;13101:55:22;;;13081:18;;;13074:83;13193:55;;41135:8:15;13173:18:22;;;13166:83;;;;41108:9:15;;;;41161;13265:18:22;;;13258:34;;;;41135:8:15;;;;13308:19:22;;;13301:35;41161:9:15;;;13352:19:22;;;13345:35;13012:19;;40865:319:15;;;;;;;;;;;;40842:352;;;;;;40821:373;;41204:14;41221:26;41236:10;41221:14;:26::i;:::-;41204:43;;41257:28;41288:36;41317:6;13444:4:8;13437:18;13524:50;13345:14;13511:64;13627:4;13621;13611:21;;13276:409;41288:36:15;41257:67;;41334:14;41351:55;41373:20;41395:10;;41351:21;:55::i;:::-;41334:72;-1:-1:-1;3151:14:0;-1:-1:-1;;3147:22:0;;3134:36;3128:4;3124:47;3071:114;;686:36;680:4;676:47;-1:-1:-1;;;;;41420:27:15;;;41416:69;;41456:29;;;;;;;;;;;;;;41416:69;40755:737;;;;40649:843;;;:::o;14413:391::-;14497:13;14513:32;4737:7;14513:15;:32;:::i;:::-;-1:-1:-1;;;;;14570:24:15;;14555:12;14570:24;;;:16;:24;;;;;;;;:31;;;;;;;;;14497:48;;-1:-1:-1;14555:12:15;14570:41;;14604:7;;14570:41;:::i;:::-;-1:-1:-1;;;;;14635:24:15;;14621:11;14635:24;;;:16;:24;;;;;;14555:56;;-1:-1:-1;14673:8:15;;;;;:22;;;14692:3;14685:4;:10;14673:22;14669:80;;;14704:45;;;;;;;;11126:25:22;;;11167:18;;;11160:34;;;11099:18;;14704:45:15;10952:248:22;14669:80:15;-1:-1:-1;;;;;;14759:24:15;;;;;;;:16;:24;;;;;;;;:31;;;;;;;:38;;;;-1:-1:-1;14413:391:15:o;42068:318::-;42283:16;;;;;;;;;;;;;;;;;42181:19;42361:18;4286:1;42361:16;:18::i;:::-;42350:29;;42068:318;;:::o;13315:486::-;13380:9;13393:1;13380:14;13376:78;;13417:26;;;;;;;;;;;;;;13376:78;4406:2;13467:9;:26;13463:127;;;13516:63;;;;;-1:-1:-1;;;;;13567:9:15;730:55:22;13516:63:15;;;712:74:22;685:18;;13516:63:15;566:226:22;13463:127:15;-1:-1:-1;;;;;13667:22:15;;:12;:22;;;;;;;;;;;5458:42;13667:30;;;;;;;:43;;13701:9;;13667:12;:43;;13701:9;;13667:43;:::i;:::-;;;;-1:-1:-1;5458:42:15;;-1:-1:-1;;;;;;13726:68:15;;;13772:21;:9;:19;:21::i;:::-;13726:68;;-1:-1:-1;;;;;730:55:22;;;712:74;;700:2;685:18;13726:68:15;;;;;;;13315:486;:::o;2458:1909:10:-;2527:15;2637:4;2631:11;2620:22;;2671:4;2662:7;2655:21;2716:11;2706:7;2700:4;2696:18;2689:39;2760:7;2754:4;2750:18;2790:1;2822:11;2819:1;2815:19;2876:3;2863:11;2860:1;2847:33;2900:11;;;2949:1252;;;;2982:1205;3048:1;3042:8;3029:11;3025:26;3115:1;3102:15;3095:4;3092:1;3088:12;3085:1;3072:46;3263:4;3251:10;3247:1;3234:15;3231:1;3220:9;3213:5;3200:68;3190:310;;3403:16;3397:4;3388:7;3373:47;3461:16;3452:7;3445:33;3190:310;-1:-1:-1;3531:9:10;;;3521:20;;3685:16;3675:27;;3571:4;3567:12;;;;3732;;3789:16;3783:4;3732:12;3765:41;4073:1;4054:16;4047:24;;4040:35;3974:16;3967:24;3993:4;3963:35;4000:18;3959:60;;-1:-1:-1;4148:10:10;;;2982:1205;4138:31;2982:1205;4227:1;4221:4;4214:15;4302:7;4291;4288:1;4284:15;4280:2;4276:24;4273:37;4262:48;;;;;;2458:1909;;;;:::o;5510:221::-;5706:7;5702:2;5698:16;5688:7;5668:18;5664:32;5657:58;39587:847:15;39841:18;39913:78;40030:7;;40019:19;;;;;;;;;:::i;:::-;;;;;;;;;;;;;40009:30;;;;;;40078:8;;40067:20;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;40057:31;;40067:20;40057:31;;;;39885:241;;;15552:25:22;;;;15593:18;;15586:34;;;;15636:18;;;15629:34;;;;15679:18;;;15672:34;;;15524:19;;39885:241:15;;;;;;;;;;;;39862:274;;;;;;39841:295;;40146:14;40163:26;40178:10;40163:14;:26::i;:::-;40146:43;;40199:28;40230:36;40259:6;13444:4:8;13437:18;13524:50;13345:14;13511:64;13627:4;13621;13611:21;;13276:409;40230:36:15;40199:67;;40276:14;40293:55;40315:20;40337:10;;40293:21;:55::i;:::-;40276:72;-1:-1:-1;3151:14:0;-1:-1:-1;;3147:22:0;;3134:36;3128:4;3124:47;3071:114;;686:36;680:4;676:47;-1:-1:-1;;;;;40362:27:15;;;40358:69;;40398:29;;;;;;;;;;;;;;40358:69;39775:659;;;;39587:847;;;;;;;:::o;36493:536::-;36610:10;36622:16;36659:9;36654:369;36670:18;;;36654:369;;;36733:6;-1:-1:-1;;;;;36713:26:15;:7;;36721:1;36713:10;;;;;;;:::i;:::-;;;;;;:16;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;36713:26:15;;36709:304;;36759:8;36770:7;;36778:1;36770:10;;;;;;;:::i;:::-;;;;;;:16;;;36759:27;;36811:1;36804:8;;;;;:::i;:::-;;;36973:1;36969;:5;36965:33;;;36976:22;36996:1;36976:22;;:::i;:::-;;;36965:33;36741:272;36709:304;36690:3;;36654:369;;;;36493:536;;;;;;:::o;15243:387::-;15329:13;15345:32;4737:7;15345:15;:32;:::i;:::-;-1:-1:-1;;;;;15402:22:15;;15387:12;15402:22;;;:14;:22;;;;;;;;:29;;;;;;;;;15329:48;;-1:-1:-1;15387:12:15;15402:41;;15434:9;;15402:41;:::i;:::-;-1:-1:-1;;;;;15467:22:15;;15453:11;15467:22;;;:14;:22;;;;;;15387:56;;-1:-1:-1;15503:8:15;;;;;:22;;;15522:3;15515:4;:10;15503:22;15499:78;;;15534:43;;;;;;;;11126:25:22;;;11167:18;;;11160:34;;;11099:18;;15534:43:15;10952:248:22;15499:78:15;-1:-1:-1;;;;;;15587:22:15;;;;;;;:14;:22;;;;;;;;:29;;;;;;;:36;;;;-1:-1:-1;15243:387:15:o;37164:265::-;37256:7;37280:9;37275:130;37291:19;;;37275:130;;;37356:6;-1:-1:-1;;;;;37335:27:15;:8;;37344:1;37335:11;;;;;;;:::i;:::-;:17;;;:11;;;;;:17;;;;-1:-1:-1;37335:17:15;:::i;:::-;-1:-1:-1;;;;;37335:27:15;;37331:63;;37371:8;;37380:1;37371:11;;;;;;;:::i;:::-;;;;;;:23;;;37364:30;;;;;37331:63;37312:3;;37275:130;;;;37421:1;37414:8;;37164:265;;;;;;:::o;22875:140:12:-;22927:6;22962:1;22956;22949:14;22945:36;;-1:-1:-1;22979:1:12;22875:140::o;22945:36::-;22991:17;:15;:17::i;:::-;22875:140;;;:::o;23502:290::-;23691:10;23685:4;23678:24;23771:4;23765;23758:18;6666:885:9;6975:22;13508:11;13649:9;13646:25;13463:14;13619:9;13616:28;13612:60;7011:73;;-1:-1:-1;12939:4:9;12933:11;;13000:16;12990:27;;12777:15;13044:4;13037:12;;13030:31;12820:18;13095:12;;;13088:33;;;;13155:9;13148:4;13141:12;;13134:31;13199:9;13192:4;13185:12;;13178:31;13248:4;13235:18;;7011:73;7218:18;7212:4;7205:32;7284:6;7278:4;7271:20;7348:10;7342:4;7335:24;7424:4;7418;7408:21;7398:31;;7533:1;7527:4;7520:15;6666:885;;;:::o;4336:1373:8:-;4448:14;4565:4;4559:11;4717:16;4755:2;4750:297;;;;5069:2;5064:204;;;;5295:8;;;4750:297;4825:4;4803:27;;;4790:41;4873:3;4869:12;;;4883:2;4865:21;4852:35;;;4929:30;;4923:4;4916:44;5002:18;;4996:4;4989:32;4750:297;;5064:204;5150:4;5132:16;5128:27;5115:41;5112:1;5107:50;5101:4;5094:64;5224:4;5206:16;5200:4;5187:42;4710:595;;5335:4;5329;5322:18;5412:4;5406;5400;5394;5391:1;5384:5;5373:44;5367:51;5357:61;;5448:1;5442:4;5435:15;5506:1;5500:4;5493:15;5653:16;5672:5;5650:29;;4606:10;4600:4;4593:24;4672:4;4666;4659:18;4544:1149;4548:24;4336:1373;;;;;:::o;214:334:18:-;264:21;378:4;372:11;416:4;413:1;409:12;403:4;396:26;445:1;442;435:12;504:1;500:2;496:10;489:4;486:1;482:12;474:33;531:1;214:334;-1:-1:-1;;214:334:18:o;14:154:22:-;-1:-1:-1;;;;;93:5:22;89:54;82:5;79:65;69:93;;158:1;155;148:12;69:93;14:154;:::o;173:388::-;241:6;249;302:2;290:9;281:7;277:23;273:32;270:52;;;318:1;315;308:12;270:52;357:9;344:23;376:31;401:5;376:31;:::i;:::-;426:5;-1:-1:-1;483:2:22;468:18;;455:32;496:33;455:32;496:33;:::i;:::-;548:7;538:17;;;173:388;;;;;:::o;1372:247::-;1431:6;1484:2;1472:9;1463:7;1459:23;1455:32;1452:52;;;1500:1;1497;1490:12;1452:52;1539:9;1526:23;1558:31;1583:5;1558:31;:::i;1624:415::-;1691:6;1699;1752:2;1740:9;1731:7;1727:23;1723:32;1720:52;;;1768:1;1765;1758:12;1720:52;1807:9;1794:23;1826:31;1851:5;1826:31;:::i;:::-;1876:5;-1:-1:-1;1933:2:22;1918:18;;1905:32;1981:6;1968:20;;1956:33;;1946:61;;2003:1;2000;1993:12;2044:367;2112:6;2120;2173:2;2161:9;2152:7;2148:23;2144:32;2141:52;;;2189:1;2186;2179:12;2141:52;2228:9;2215:23;2247:31;2272:5;2247:31;:::i;:::-;2297:5;2375:2;2360:18;;;;2347:32;;-1:-1:-1;;;2044:367:22:o;2609:226::-;2668:6;2721:2;2709:9;2700:7;2696:23;2692:32;2689:52;;;2737:1;2734;2727:12;2689:52;-1:-1:-1;2782:23:22;;2609:226;-1:-1:-1;2609:226:22:o;3032:529::-;3109:6;3117;3125;3178:2;3166:9;3157:7;3153:23;3149:32;3146:52;;;3194:1;3191;3184:12;3146:52;3233:9;3220:23;3252:31;3277:5;3252:31;:::i;:::-;3302:5;-1:-1:-1;3359:2:22;3344:18;;3331:32;3372:33;3331:32;3372:33;:::i;:::-;3424:7;-1:-1:-1;3483:2:22;3468:18;;3455:32;3496:33;3455:32;3496:33;:::i;:::-;3548:7;3538:17;;;3032:529;;;;;:::o;3566:347::-;3617:8;3627:6;3681:3;3674:4;3666:6;3662:17;3658:27;3648:55;;3699:1;3696;3689:12;3648:55;-1:-1:-1;3722:20:22;;3765:18;3754:30;;3751:50;;;3797:1;3794;3787:12;3751:50;3834:4;3826:6;3822:17;3810:29;;3886:3;3879:4;3870:6;3862;3858:19;3854:30;3851:39;3848:59;;;3903:1;3900;3893:12;3848:59;3566:347;;;;;:::o;3918:564::-;4034:6;4042;4050;4094:9;4085:7;4081:23;4124:3;4120:2;4116:12;4113:32;;;4141:1;4138;4131:12;4113:32;4165:3;4161:2;4157:12;4154:32;;;4182:1;4179;4172:12;4154:32;;4205:9;4195:19;;4265:3;4254:9;4250:19;4237:33;4293:18;4285:6;4282:30;4279:50;;;4325:1;4322;4315:12;4279:50;4364:58;4414:7;4405:6;4394:9;4390:22;4364:58;:::i;:::-;3918:564;;4441:8;;-1:-1:-1;4338:84:22;;-1:-1:-1;;;;3918:564:22:o;4676:459::-;4718:3;4756:5;4750:12;4783:6;4778:3;4771:19;4808:1;4818:139;4832:6;4829:1;4826:13;4818:139;;;4940:4;4925:13;;;4921:24;;4915:31;4895:11;;;4891:22;;4884:63;4847:12;4818:139;;;4822:3;5002:1;4995:4;4986:6;4981:3;4977:16;4973:27;4966:38;5124:4;5054:66;5049:2;5041:6;5037:15;5033:88;5028:3;5024:98;5020:109;5013:116;;;4676:459;;;;:::o;5140:1314::-;5537:66;5529:6;5525:79;5514:9;5507:98;5641:3;5636:2;5625:9;5621:18;5614:31;5488:4;5668:46;5709:3;5698:9;5694:19;5686:6;5668:46;:::i;:::-;5762:9;5754:6;5750:22;5745:2;5734:9;5730:18;5723:50;5796:33;5822:6;5814;5796:33;:::i;:::-;5860:2;5845:18;;5838:34;;;-1:-1:-1;;;;;5909:55:22;;5903:3;5888:19;;5881:84;5996:3;5981:19;;5974:35;;;6046:22;;;6040:3;6025:19;;6018:51;6118:13;;6140:22;;;6190:2;6216:15;;;;-1:-1:-1;6178:15:22;;;;-1:-1:-1;6259:169:22;6273:6;6270:1;6267:13;6259:169;;;6334:13;;6322:26;;6377:2;6403:15;;;;6368:12;;;;6295:1;6288:9;6259:169;;;-1:-1:-1;6445:3:22;;5140:1314;-1:-1:-1;;;;;;;;;;;5140:1314:22:o;6459:621::-;6556:6;6564;6617:2;6605:9;6596:7;6592:23;6588:32;6585:52;;;6633:1;6630;6623:12;6585:52;6673:9;6660:23;6706:18;6698:6;6695:30;6692:50;;;6738:1;6735;6728:12;6692:50;6761:22;;6814:4;6806:13;;6802:27;-1:-1:-1;6792:55:22;;6843:1;6840;6833:12;6792:55;6883:2;6870:16;6909:18;6901:6;6898:30;6895:50;;;6941:1;6938;6931:12;6895:50;6994:7;6989:2;6979:6;6976:1;6972:14;6968:2;6964:23;6960:32;6957:45;6954:65;;;7015:1;7012;7005:12;6954:65;7046:2;7038:11;;;;;7068:6;;-1:-1:-1;6459:621:22;-1:-1:-1;;;6459:621:22:o;7085:839::-;7245:4;7293:2;7282:9;7278:18;7323:2;7312:9;7305:21;7346:6;7381;7375:13;7412:6;7404;7397:22;7450:2;7439:9;7435:18;7428:25;;7512:2;7502:6;7499:1;7495:14;7484:9;7480:30;7476:39;7462:53;;7550:2;7542:6;7538:15;7571:1;7581:314;7595:6;7592:1;7589:13;7581:314;;;7684:66;7672:9;7664:6;7660:22;7656:95;7651:3;7644:108;7775:40;7808:6;7799;7793:13;7775:40;:::i;:::-;7765:50;-1:-1:-1;7850:2:22;7873:12;;;;7838:15;;;;;7617:1;7610:9;7581:314;;;-1:-1:-1;7912:6:22;;7085:839;-1:-1:-1;;;;;;7085:839:22:o;7929:387::-;8012:8;8022:6;8076:3;8069:4;8061:6;8057:17;8053:27;8043:55;;8094:1;8091;8084:12;8043:55;-1:-1:-1;8117:20:22;;8160:18;8149:30;;8146:50;;;8192:1;8189;8182:12;8146:50;8229:4;8221:6;8217:17;8205:29;;8289:3;8282:4;8272:6;8269:1;8265:14;8257:6;8253:27;8249:38;8246:47;8243:67;;;8306:1;8303;8296:12;8321:1452;8534:6;8542;8550;8558;8566;8574;8582;8635:3;8623:9;8614:7;8610:23;8606:33;8603:53;;;8652:1;8649;8642:12;8603:53;8692:9;8679:23;8725:18;8717:6;8714:30;8711:50;;;8757:1;8754;8747:12;8711:50;8780:22;;8833:4;8825:13;;8821:27;-1:-1:-1;8811:55:22;;8862:1;8859;8852:12;8811:55;8902:2;8889:16;8928:18;8920:6;8917:30;8914:50;;;8960:1;8957;8950:12;8914:50;9018:7;9011:4;9003;8995:6;8991:17;8987:2;8983:26;8979:37;8976:50;8973:70;;;9039:1;9036;9029:12;8973:70;9070:4;9062:13;;;;-1:-1:-1;9094:6:22;-1:-1:-1;9138:20:22;;9125:34;9184:18;9171:32;;9168:52;;;9216:1;9213;9206:12;9168:52;9255:92;9339:7;9328:8;9317:9;9313:24;9255:92;:::i;:::-;9366:8;;-1:-1:-1;9229:118:22;-1:-1:-1;;9470:2:22;9455:18;;9442:32;;-1:-1:-1;9551:4:22;9536:20;;9523:34;9582:18;9569:32;;9566:52;;;9614:1;9611;9604:12;9566:52;9653:60;9705:7;9694:8;9683:9;9679:24;9653:60;:::i;:::-;8321:1452;;;;-1:-1:-1;8321:1452:22;;-1:-1:-1;8321:1452:22;;;;9627:86;;-1:-1:-1;;;8321:1452:22:o;9778:184::-;9830:77;9827:1;9820:88;9927:4;9924:1;9917:15;9951:4;9948:1;9941:15;9967:125;10032:9;;;10053:10;;;10050:36;;;10066:18;;:::i;10328:184::-;10398:6;10451:2;10439:9;10430:7;10426:23;10422:32;10419:52;;;10467:1;10464;10457:12;10419:52;-1:-1:-1;10490:16:22;;10328:184;-1:-1:-1;10328:184:22:o;10517:128::-;10584:9;;;10605:11;;;10602:37;;;10619:18;;:::i;11205:184::-;11257:77;11254:1;11247:88;11354:4;11351:1;11344:15;11378:4;11375:1;11368:15;11394:168;11467:9;;;11498;;11515:15;;;11509:22;;11495:37;11485:71;;11536:18;;:::i;11567:274::-;11607:1;11633;11623:189;;11668:77;11665:1;11658:88;11769:4;11766:1;11759:15;11797:4;11794:1;11787:15;11623:189;-1:-1:-1;11826:9:22;;11567:274::o;11846:191::-;11881:3;11912:66;11905:5;11902:77;11899:103;;11982:18;;:::i;:::-;-1:-1:-1;12022:1:22;12018:13;;11846:191::o;12042:216::-;12106:9;;;12134:11;;;12081:3;12164:9;;12192:10;;12188:19;;12217:10;;12209:19;;12185:44;12182:70;;;12232:18;;:::i;:::-;12182:70;;12042:216;;;;:::o;13391:1029::-;13651:2;13663:21;;;13636:18;;13719:22;;;13603:4;13798:6;13772:2;13757:18;;13603:4;13832:562;13846:6;13843:1;13840:13;13832:562;;;13921:6;13908:20;13941:31;13966:5;13941:31;:::i;:::-;-1:-1:-1;;;;;13997:54:22;13985:67;;14105:2;14093:15;;14080:29;14122:33;14080:29;14122:33;:::i;:::-;-1:-1:-1;;;;;14189:56:22;14184:2;14175:12;;14168:78;14305:2;14293:15;;;14280:29;14266:12;;;14259:51;14339:4;14367:17;;;;14330:14;;;;13868:1;13861:9;13832:562;;;-1:-1:-1;14411:3:22;13391:1029;-1:-1:-1;;;;;13391:1029:22:o;14425:891::-;14685:2;14697:21;;;14670:18;;14753:22;;;14637:4;14832:6;14806:2;14791:18;;14637:4;14866:424;14880:6;14877:1;14874:13;14866:424;;;14955:6;14942:20;14975:31;15000:5;14975:31;:::i;:::-;-1:-1:-1;;;;;15031:54:22;15019:67;;15164:2;15152:15;;;15139:29;15188:12;;;15181:29;15239:2;15265:15;;;;15230:12;;;;14902:1;14895:9;14866:424;","linkReferences":{},"immutableReferences":{"1331":[{"start":11251,"length":32}],"1333":[{"start":11286,"length":32}],"1335":[{"start":11366,"length":32}],"1337":[{"start":11404,"length":32}],"1339":[{"start":11218,"length":32}],"5391":[{"start":2143,"length":32},{"start":3578,"length":32},{"start":5998,"length":32},{"start":6723,"length":32}]}},"methodIdentifiers":{"MIN_ORDER_SIZE()":"d3f82d8e","NATIVE()":"a0cf0aea","TERMINATION_DELAY()":"36807d4c","WITHDRAW_EPOCH()":"62fe8ee1","deposit(address,uint160)":"03fde255","depositFor(address,address,uint160)":"4e3250cf","depositNative()":"db6b5246","depositNativeFor(address)":"91a775b7","eip712Domain()":"84b0196e","factory()":"c45a0155","isTerminated()":"d1cc9976","maintenanceAccrued(address)":"62b629f9","maintenanceAddress()":"719d5f83","maintenanceBps()":"2e673446","multicall(bytes[])":"ac9650d8","operatorAccrued(address)":"7e122f53","operatorAddress()":"127effb2","operatorAdmin()":"a4e0c181","operatorBps()":"c4109253","owner()":"8da5cb5b","setOperatorAdmin(address)":"6de07157","setOperatorFee(address,uint16)":"26ac1b1c","setSettleEpochCap(address,uint256)":"54222c98","setWithdrawEpochCap(address,uint256)":"2d2cfb66","settleBatch((address,address,int256)[],(address,uint256)[],uint256,bytes)":"e0a273bc","settleEpochCap(address)":"4d51462e","settleFees(address)":"a78842ee","settledInEpoch(address,uint256)":"9cd5adbe","terminate()":"0c08bf88","terminatedAt()":"9e3bc208","tradeBalance(address,address)":"19d5f0c3","usedSettleNonces(uint256)":"4565fe4a","usedWithdrawNonces(address,uint256)":"892d16be","version()":"54fd4d50","withdraw((address,address,uint256,uint256,uint256),bytes)":"4e5c6e4e","withdrawEpochCap(address)":"426aabc2","withdrawTerminated(address)":"1aba2337","withdrawnInEpoch(address,uint256)":"742960c1"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.34+commit.80d5c536\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBps\",\"type\":\"uint256\"}],\"name\":\"FEE_TOO_HIGH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"available\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"required\",\"type\":\"uint160\"}],\"name\":\"INSUFFICIENT_BALANCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_SIGNER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"}],\"name\":\"MINIMUM_ORDER_AMOUNT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NOT_A_CLONE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NOT_TERMINATED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OPERATOR_ADMIN_IS_SIGNER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Reentrancy\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SETTLE_NONCE_ALREADY_USED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SETTLE_NOT_CONSERVED\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"cap\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"attempted\",\"type\":\"uint256\"}],\"name\":\"SETTLE_RATE_LIMITED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TERMINATED\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"readyAt\",\"type\":\"uint256\"}],\"name\":\"TERMINATION_DELAY_PENDING\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UNAUTHORIZED_CALLER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WITHDRAW_NONCE_ALREADY_USED\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"cap\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"attempted\",\"type\":\"uint256\"}],\"name\":\"WITHDRAW_RATE_LIMITED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WITHDRAW_VOUCHER_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZERO_ADDRESS_OPERATOR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZERO_ADDRESS_OPERATOR_ADMIN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZERO_AMOUNT\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"maintenanceRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maintenanceAmount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operatorRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorAmount\",\"type\":\"uint256\"}],\"name\":\"FeesSettled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"delta\",\"type\":\"int256\"}],\"name\":\"NetSettled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAdmin\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"OperatorAdminSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"bps\",\"type\":\"uint16\"}],\"name\":\"OperatorFeeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"cap\",\"type\":\"uint256\"}],\"name\":\"SettleEpochCapSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"Terminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TerminatedWithdrawal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"}],\"name\":\"TokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"cap\",\"type\":\"uint256\"}],\"name\":\"WithdrawEpochCapSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"stateMutability\":\"nonpayable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"MIN_ORDER_SIZE\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TERMINATION_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WITHDRAW_EPOCH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"_amount\",\"type\":\"uint160\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"_amount\",\"type\":\"uint160\"}],\"name\":\"depositFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositNative\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"depositNativeFor\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isTerminated\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"maintenanceAccrued\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maintenanceAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maintenanceBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"operatorAccrued\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newAdmin\",\"type\":\"address\"}],\"name\":\"setOperatorAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_bps\",\"type\":\"uint16\"}],\"name\":\"setOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_cap\",\"type\":\"uint256\"}],\"name\":\"setSettleEpochCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_cap\",\"type\":\"uint256\"}],\"name\":\"setWithdrawEpochCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"int256\",\"name\":\"delta\",\"type\":\"int256\"}],\"internalType\":\"struct MidribV3.SettleDelta[]\",\"name\":\"_deltas\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"grossVolume\",\"type\":\"uint256\"}],\"internalType\":\"struct MidribV3.TokenVolume[]\",\"name\":\"_volumes\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"settleBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"settleEpochCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cap\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"settleFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"settledInEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"terminate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"terminatedAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"tradeBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"usedSettleNonces\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"used\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"usedWithdrawNonces\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"used\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"_version\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct MidribV3.WithdrawalVoucher\",\"name\":\"_v\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"withdrawEpochCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cap\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"withdrawTerminated\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"withdrawnInEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aspens Technical Team\",\"details\":\"Under the optimistic shadow ledger, trading happens off-chain inside the      TEE: orders never touch the chain. The contract only ever sees these fund      movements \\u2014 deposits, TEE-signed net settlement (`settleBatch`), TEE-signed      voucher withdrawals (`withdraw`), and fee settlement. There is no on-chain      order machinery (no open / fill / lock / cancel, no ERC-7683 settler      conformance, no Permit2).Immutable-args layout (packed, set by {MidribFactory.createInstance}),      by byte offset: owner/signer at 0 (20), factory at 20 (20),      maintenanceAddress at 40 (20), maintenanceBps at 60 (uint16, 2),      operatorAdmin at 62 (20). The maintenance fee (Aspens-controlled) is baked      in immutably for this instance; the operator fee (stack-controlled) lives      in mutable storage, set by `operatorAdmin`. `operatorAdmin` also gates the      per-epoch withdrawal and settlement caps and `terminate()`. It can never      be the TEE signer: `MidribFactory.createInstance` and `setOperatorAdmin`      both refuse that pairing, so the caps that bound a compromised TEE are      never raisable by it.Token compatibility assumptions:      This contract is only safe to use against ERC-20 tokens that satisfy ALL      of the following. Markets must be configured against compliant tokens;      the contract does NOT detect or refuse non-compliant ones.        - Standard `transfer` / `transferFrom` semantics: the sender's balance          drops by exactly the transfer amount, with no re-entrant or          opportunistically-reverting transfer hooks.        - No fee-on-transfer behavior. The `balanceBefore` / `balanceAfter`          reconciliation in `_deposit` assumes the received amount equals the          transferred amount.        - No rebasing / share-based balance model. Balances must be stable          between reads.        - No transfer blocklists that can lock a user's funds after deposit.      Token gating happens off-chain at the arborter / matching-engine      market-config layer. See the SDK README \\\"Token Assumptions\\\" section and      the admin-console Add-Token tooltip.The chain's NATIVE asset (ETH/FLR) is additionally supported as a      first-class balance under the `NATIVE` sentinel key: deposited via      `depositNative`/`depositNativeFor` (payable), withdrawn by the same      TEE voucher flow (paid out as raw value), and settled/fee-skimmed by      `settleBatch`/`settleFees` exactly like any token address.\",\"errors\":{\"FEE_TOO_HIGH(uint256)\":[{\"details\":\"A fee (maintenance alone, or maintenance + operator combined)      exceeded DENOMINATOR (100%). `totalBps` is the rejected total.\"}],\"INSUFFICIENT_BALANCE(uint256,uint160)\":[{\"details\":\"A balance is insufficient for the requested movement. `available` is      the balance on hand; `required` the amount the caller asked for.\"}],\"INVALID_SIGNER()\":[{\"details\":\"A TEE-signed payload (settleBatch / withdrawal voucher) did not      recover to the instance owner (the TEE).\"}],\"MINIMUM_ORDER_AMOUNT(uint160)\":[{\"details\":\"A deposit was below `MIN_ORDER_SIZE` (the dust guard). `amount` is the      rejected value.\"}],\"NOT_A_CLONE()\":[{\"details\":\"A deposit was attempted on the shared implementation contract      rather than on a factory-minted clone. The implementation reads its      owner from calldata the caller controls, so funds held there could      be withdrawn by anyone; it must never custody anything.\"}],\"NOT_TERMINATED()\":[{\"details\":\"`withdrawTerminated` was called before the instance was `terminate()`d.      The permissionless, voucher-free reclaim path only opens after termination.\"}],\"OPERATOR_ADMIN_IS_SIGNER()\":[{\"details\":\"An operator admin equal to the instance's TEE signer was supplied      (`createInstance` / `setOperatorAdmin`). The admin gates the caps that      bound the TEE, so it must be a key the TEE does not hold.\"}],\"Reentrancy()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SETTLE_NONCE_ALREADY_USED()\":[{\"details\":\"A `settleBatch` nonce was already consumed (replay).\"}],\"SETTLE_NOT_CONSERVED()\":[{\"details\":\"A `settleBatch`'s per-token net deltas did not sum to exactly the      negated contract-computed fee (would create or destroy value).\"}],\"SETTLE_RATE_LIMITED(uint256,uint256)\":[{\"details\":\"A `settleBatch` would credit more of a token in the current epoch      than its settlement cap allows. `attempted` is the resulting      cumulative epoch total of positive deltas.\"}],\"TERMINATED()\":[{\"details\":\"A trade operation (deposit / `settleBatch` / voucher `withdraw`) was      called after the instance was `terminate()`d, or `terminate()` was      called a second time. Once terminated, the only fund movement left is      `withdrawTerminated`.\"}],\"TERMINATION_DELAY_PENDING(uint256)\":[{\"details\":\"`withdrawTerminated` was called inside `TERMINATION_DELAY` of      `terminate()`. `readyAt` is the first timestamp at which it succeeds.\"}],\"UNAUTHORIZED_CALLER()\":[{\"details\":\"An owner/admin-gated instance function was called by a non-owner.\"}],\"WITHDRAW_NONCE_ALREADY_USED()\":[{\"details\":\"A withdrawal voucher's `(account, nonce)` pair was already consumed (replay).\"}],\"WITHDRAW_RATE_LIMITED(uint256,uint256)\":[{\"details\":\"A withdrawal would exceed the per-token per-epoch cap (a TEE-bug      blast-radius backstop). `attempted` is the resulting cumulative epoch total.\"}],\"WITHDRAW_VOUCHER_EXPIRED()\":[{\"details\":\"A withdrawal voucher was submitted after its `expiry`.\"}],\"ZERO_ADDRESS_OPERATOR()\":[{\"details\":\"A non-zero operator fee was set with a zero recipient.\"}],\"ZERO_ADDRESS_OPERATOR_ADMIN()\":[{\"details\":\"A zero address was supplied for the operator admin.\"}],\"ZERO_AMOUNT()\":[{\"details\":\"A deposit or withdrawal amount was zero.\"}]},\"events\":{\"FeesSettled(address,address,uint256,address,uint256)\":{\"details\":\"Emitted by `settleFees`: accrued maintenance + operator fees for a token      paid out to their respective recipients' `tradeBalance`.\"},\"NetSettled(address,address,int256)\":{\"details\":\"Emitted per account in a `settleBatch`: net change applied to      `tradeBalance[user][tokenContract]` (off-chain shadow-ledger net      settlement).\"},\"OperatorAdminSet(address,address)\":{\"details\":\"Emitted when an instance's operator admin (the stack-admin key gating the operator fee) is rotated.\"},\"OperatorFeeSet(address,uint16)\":{\"details\":\"Emitted when an instance's operator fee (stack-admin-controlled) is set or rotated.\"},\"SettleEpochCapSet(address,uint256)\":{\"details\":\"Emitted when a token's per-epoch settlement cap is set on an instance.      `cap == 0` means unlimited. Mirrors the Solana `SettleEpochCapSet` event.\"},\"Terminated(address)\":{\"details\":\"Emitted once when the instance is `terminate()`d (the venue-teardown      kill switch). `caller` is the operator admin that flipped it. After      this, all trade operations revert and, once `TERMINATION_DELAY` has      passed, only `withdrawTerminated` moves funds.\"},\"TerminatedWithdrawal(address,address,uint256)\":{\"details\":\"Emitted on a voucher-free reclaim via `withdrawTerminated`: `account`      pulled its full on-chain `tradeBalance` of `tokenContract` after termination.\"},\"TokenDeposited(address,address,uint160)\":{\"details\":\"Emitted when a token is deposited into the Midrib contract\"},\"WithdrawEpochCapSet(address,uint256)\":{\"details\":\"Emitted when a token's per-epoch withdrawal cap is set on an instance.      `cap == 0` means unlimited. Mirrors the Solana `WithdrawEpochCapSet`      event so the admin surface is auditable from the logs on both chains.\"},\"Withdrawn(address,address,uint256,uint256)\":{\"details\":\"Emitted on a TEE-voucher-authorized withdrawal. Carries      the voucher `nonce` so the off-chain listener fold is idempotent on      `(account, nonce)`.\"}},\"kind\":\"dev\",\"methods\":{\"deposit(address,uint160)\":{\"params\":{\"_amount\":\"amount of tokens we want to deposit\",\"_token\":\"contract address of the token we are depositing\"}},\"depositFor(address,address,uint160)\":{\"details\":\"Enables the Flare FCE on-chain deposit path (see      infra/stacks/fcc/extension/contracts/AspensInstructionSender.sol): the relayer      holds the user's tokens transiently, approves this contract, and calls      `depositFor` so custody AND the credited tradeBalance both land here \\u2014 keeping      `settleBatch`/`withdraw` unchanged \\u2014 while the cosigned instruction names the      real depositor. Unlike `deposit`, tokens are pulled from `msg.sender` (the      relayer), not from `_account`; the credit + event are against `_account`. Same      fee-on-transfer-safe accounting as `_deposit`; `_deposit` itself is untouched.\",\"params\":{\"_account\":\"beneficiary whose tradeBalance is credited\",\"_amount\":\"amount to pull from msg.sender (>= MIN_ORDER_SIZE)\",\"_token\":\"token being deposited\"}},\"depositNativeFor(address)\":{\"params\":{\"_account\":\"beneficiary whose NATIVE tradeBalance is credited\"}},\"eip712Domain()\":{\"details\":\"See: https://eips.ethereum.org/EIPS/eip-5267\"},\"factory()\":{\"returns\":{\"_factory\":\"the deploying factory address\"}},\"multicall(bytes[])\":{\"details\":\"Apply `delegatecall` with the current contract to each calldata in `data`, and store the `abi.encode` formatted results of each `delegatecall` into `results`. If any of the `delegatecall`s reverts, the entire context is reverted, and the error is bubbled up. By default, this function directly returns the results and terminates the call context. If you need to add before and after actions to the multicall, please override this function.\"},\"owner()\":{\"returns\":{\"_owner\":\"the instance owner / TEE signer address\"}},\"setOperatorAdmin(address)\":{\"details\":\"Refuses the TEE signer as the new admin: the admin gates the caps that      bound a compromised TEE and `terminate()`, so handing it to the signer      would let the TEE lift its own limits.\",\"params\":{\"_newAdmin\":\"new operator admin (non-zero, not the TEE signer)\"}},\"setOperatorFee(address,uint16)\":{\"params\":{\"_bps\":\"operator fee in basis points\",\"_recipient\":\"operator fee recipient (required when `_bps > 0`)\"}},\"setSettleEpochCap(address,uint256)\":{\"details\":\"Gated to the operator admin, never the TEE signer: this cap bounds what      a compromised TEE can move between accounts by signing batches, so the      TEE must not be able to raise it. Writes only the cap; the current      epoch's tally is untouched, so re-arming cannot wipe it.\",\"params\":{\"_cap\":\"cumulative positive-delta total settleable per `WITHDRAW_EPOCH` (`0` = unlimited)\",\"_token\":\"token whose cap to set\"}},\"setWithdrawEpochCap(address,uint256)\":{\"details\":\"Gated to the operator admin \\u2014 the stack's own key, which can never be      the TEE signer (see `setOperatorAdmin`), so the TEE cannot raise the      cap that bounds its own vouchers. Rotate with `setOperatorAdmin`.\",\"params\":{\"_cap\":\"cumulative amount withdrawable per `WITHDRAW_EPOCH` (`0` = unlimited)\",\"_token\":\"token whose cap to set\"}},\"settleBatch((address,address,int256)[],(address,uint256)[],uint256,bytes)\":{\"details\":\"Off-chain shadow-ledger net settlement. In the optimistic      model funds are NOT locked per order; matched trades accumulate as net      deltas off-chain and are reflected on-chain here in a single batch.      Safety:      - signed by the instance owner (the TEE);      - per token, the contract computes        `fee = grossVolume*maintenanceBps/DENOMINATOR (floor) + grossVolume*operatorBps/DENOMINATOR (floor)`        and requires the trader deltas to sum to exactly `-fee` \\u2014 the fee is the        conservation sink. Non-bypassable: under- OR over-paying the computed        fee reverts SETTLE_NOT_CONSERVED, so the on-chain bps is enforced        against the reported volume;      - the skim accrues to `maintenanceAccrued`/`operatorAccrued`, paid out        later (slower cadence) by `settleFees`;      - no account's `tradeBalance` may go negative (no overdraw / mint);      - per token, the sum of the POSITIVE deltas (what the batch credits to        recipients) counts against `settleEpochCap` for the current epoch,        cumulatively across batches; over the cap reverts SETTLE_RATE_LIMITED;      - one-shot per `_nonce` (replay-protected).\",\"params\":{\"_deltas\":\"per-(user,token) signed NET-OF-FEE balance changes\",\"_nonce\":\"unique batch nonce\",\"_signature\":\"owner EIP-712 signature over (deltasHash, volumesHash, nonce)\",\"_volumes\":\"per-token gross matched volume (drives the fee computation)\"}},\"settleFees(address)\":{\"params\":{\"_token\":\"token whose accrued fees to pay out\"}},\"terminate()\":{\"details\":\"Gated to the operator admin ONLY \\u2014 the stack's own, non-TEE key. It      releases the funds even when the TEE / signer key is gone, the      venue-teardown case in which a voucher can never be produced again.      The TEE signer cannot call it: a terminate it could trigger would let      a compromised TEE swap the capped voucher exit for the uncapped      `withdrawTerminated` one. One-way and set once: no un-terminate, and a      second call reverts instead of restarting the delay.\"},\"version()\":{\"returns\":{\"_version\":\"The version number\"}},\"withdraw((address,address,uint256,uint256,uint256),bytes)\":{\"details\":\"In the optimistic shadow-ledger model a self-service withdrawal is      unsafe: on-chain `tradeBalance` still includes funds reserved behind      resting orders (reservations are off-chain), so a user could drain      collateral a later `settleBatch` is obligated to pay out. The TEE \\u2014      the authority on the withdrawable balance \\u2014 signs a voucher instead;      the contract enforces only bounded backstops:      - signed by the instance owner (the TEE), like `settleBatch`;      - a non-zero amount (a zero voucher would only burn a nonce);      - not past `expiry`; one-shot per `(account, nonce)` (replay-proof);      - hard cap: never pays more of a token than `tradeBalance` holds (no mint);      - per-token per-epoch rate limit (TEE-bug blast-radius backstop).      Anyone may submit it (gas payer need not be the recipient): funds      always go to `_v.account`, so a relayer can pay gas for a gasless      withdrawal.\",\"params\":{\"_signature\":\"owner EIP-712 signature over the voucher fields\",\"_v\":\"the signed voucher\"}},\"withdrawTerminated(address)\":{\"details\":\"Reverts `TERMINATION_DELAY_PENDING(readyAt)` until      `block.timestamp >= terminatedAt + TERMINATION_DELAY`. Deliberately NOT      epoch-rate-limited: the caller withdraws only what the contract already      records as theirs and no TEE signature is involved, so a cap could only      strand funds \\u2014 the opposite of recovery. Balance is zeroed before the      transfer (CEI; `nonReentrant` also guards), so a token can be reclaimed      only once.\",\"params\":{\"_token\":\"token address, or the `NATIVE` sentinel, to reclaim.\"}}},\"stateVariables\":{\"DENOMINATOR\":{\"details\":\"Basis-point denominator (100% = 10_000). Matches MidribFactory + the Solana program.\"},\"MIN_ORDER_SIZE\":{\"details\":\"Minimum deposit amount \\u2014 a dust guard inherited from V2.\"},\"NATIVE\":{\"details\":\"Sentinel \\\"token address\\\" keying the chain's NATIVE asset (ETH/FLR)      in `tradeBalance`, vouchers, `settleBatch` deltas/volumes, and fee      accrual. Purely a mapping key \\u2014 no code lives at it and no ERC-20      call is ever made against it. Native value can ONLY enter via      `depositNative`/`depositNativeFor` (there is no `receive()`), so      `address(this).balance` always equals the sum of sentinel-keyed      trade balances plus sentinel-keyed accrued fees.\"},\"TERMINATION_DELAY\":{\"details\":\"Fixed wait between `terminate()` and the first `withdrawTerminated`.\"},\"VERSION\":{\"details\":\"Current version number\"},\"WITHDRAW_EPOCH\":{\"details\":\"Window for the per-token withdrawal AND settlement rate-limit      accounting. One epoch clock for both caps.\"},\"__self\":{\"details\":\"Address of the shared implementation this code was deployed as.      Immutables live in the bytecode, so inside a clone's delegatecall      this still holds the IMPLEMENTATION address while `address(this)` is      the clone; the two agree only when the implementation itself is      being called. That call shape is unsafe to custody funds under: the      immutable args (owner/TEE signer among them) are read from the tail      of calldata, which a direct caller controls, so anyone could forge      the owner and drain whatever the implementation held. `onlyClone`      therefore refuses every deposit path on the implementation, which      keeps its balances at zero and leaves nothing for a forged owner to      withdraw.\"},\"maintenanceAccrued\":{\"details\":\"Per-token fees skimmed in `settleBatch` but not yet paid out. Kept in two      pools so a later operator bps/recipient change can't mis-attribute fees      already accrued at the old rate. Drained by `settleFees`.\"},\"operatorAddress\":{\"details\":\"Operator fee (stack-controlled) recipient + rate, in basis points. Mutable;      set/rotated by `operatorAdmin` via `setOperatorFee`. Skimmed in ADDITION to      the immutable maintenance fee. Zero until configured.\"},\"operatorAdminOverride\":{\"details\":\"Optional override of the baked-in operator admin (immutable arg at byte 62), letting      the stack admin rotate the key that gates the operator fee, the per-epoch      withdrawal and settlement caps, and `terminate()`. `0` = use the baked value.      Read the effective admin via `operatorAdmin()`.\"},\"settleEpochCap\":{\"details\":\"Per-token cap on the value `settleBatch` may credit to accounts per      epoch \\u2014 the SUM OF POSITIVE deltas, i.e. what moves TO recipients.      Without it one TEE-signed batch could move every account's balance      to a single address, bounded by nothing: the withdrawal cap only      bounds vouchers. `0` (the default) means unlimited. Set by the      operator admin only (`setSettleEpochCap`).\"},\"settledInEpoch\":{\"details\":\"Cumulative positive-delta total settled per `(token, epoch)`, where      `epoch = block.timestamp / WITHDRAW_EPOCH` (the withdrawal cap's      clock). Recorded whether or not a cap is armed.\"},\"terminatedAt\":{\"details\":\"The venue-teardown kill switch: the `block.timestamp` at which      `terminate()` ran, `0` while live. Once set, every trade operation      (deposit / `settleBatch` / voucher `withdraw`) reverts, and after      `TERMINATION_DELAY` the only fund movement left is the permissionless,      voucher-free `withdrawTerminated`, by which each account reclaims its      on-chain `tradeBalance` with NO TEE signature required. Set once:      there is no un-terminate, and a second `terminate()` reverts rather      than restarting the delay. `isTerminated()` reads it as a flag.\"},\"tradeBalance\":{\"details\":\"settled on-chain balance: holder => token => amount\"},\"usedSettleNonces\":{\"details\":\"Nonces already consumed by `settleBatch` (TEE-signed net settlement).\"},\"usedWithdrawNonces\":{\"details\":\"`(account, nonce)` pairs already consumed by a withdrawal voucher.      Per-account so users' voucher nonces are independent.\"},\"withdrawEpochCap\":{\"details\":\"Per-token cumulative withdrawal cap per epoch \\u2014 a blast-radius      backstop against a buggy or compromised TEE. `0` (the default) means      unlimited; the operator admin \\u2014 never the TEE signer \\u2014 raises caps      from a conservative start as confidence grows (`setWithdrawEpochCap`).\"},\"withdrawnInEpoch\":{\"details\":\"Cumulative amount withdrawn per `(token, epoch)`, where      `epoch = block.timestamp / WITHDRAW_EPOCH`.\"}},\"title\":\"Midrib V3\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deposit(address,uint160)\":{\"notice\":\"Allows a user to deposit tokens into this contract.\"},\"depositFor(address,address,uint160)\":{\"notice\":\"Deposit on behalf of `_account`, pulling the tokens from the CALLER.\"},\"depositNative()\":{\"notice\":\"Deposit the chain's native asset (ETH/FLR), credited under the         NATIVE sentinel key. The native analogue of `deposit`.\"},\"depositNativeFor(address)\":{\"notice\":\"Native-asset analogue of `depositFor` (the Flare FCE relayer         path): the VALUE comes from the caller, while the credit + event         go to `_account`.\"},\"factory()\":{\"notice\":\"The factory that deployed this instance (immutable arg at byte 20).\"},\"isTerminated()\":{\"notice\":\"Whether `terminate()` has run on this instance.\"},\"maintenanceAddress()\":{\"notice\":\"Maintenance fee recipient \\u2014 Aspens-controlled, immutable for this instance.\"},\"maintenanceBps()\":{\"notice\":\"Maintenance fee in basis points \\u2014 Aspens-controlled, immutable for this instance.\"},\"operatorAdmin()\":{\"notice\":\"Effective operator admin: the storage override if rotated, else the baked-in         immutable arg (byte 62). Gates `setOperatorFee` / `setOperatorAdmin` /         `setWithdrawEpochCap` / `setSettleEpochCap` / `terminate`. Never zero and         never the TEE signer.\"},\"owner()\":{\"notice\":\"The instance owner \\u2014 the TEE signer (immutable arg at byte 0).         Authorizes `settleBatch` and withdrawal vouchers.\"},\"setOperatorAdmin(address)\":{\"notice\":\"Rotate the operator admin (current operator admin only).\"},\"setOperatorFee(address,uint16)\":{\"notice\":\"Set or rotate the operator fee (stack admin only). Skimmed IN ADDITION to         the maintenance fee; the combined fee may not exceed DENOMINATOR (100%).         A zero `_bps` disables the operator fee.\"},\"setSettleEpochCap(address,uint256)\":{\"notice\":\"Set the per-epoch settlement cap for a token: the most `settleBatch`         may credit to accounts (the sum of its positive deltas) in that token         per `WITHDRAW_EPOCH`, across all batches. `0` disables the cap         (unlimited).\"},\"setWithdrawEpochCap(address,uint256)\":{\"notice\":\"Set the per-epoch withdrawal cap for a token. `0` disables the cap         (unlimited). Caps bound the blast radius of a buggy or compromised         TEE; start conservative and raise as confidence grows.\"},\"settleBatch((address,address,int256)[],(address,uint256)[],uint256,bytes)\":{\"notice\":\"Apply a TEE-signed batch of net balance changes to `tradeBalance`,         skimming the maintenance + operator fees the contract computes from         the reported per-token gross matched volume.\"},\"settleFees(address)\":{\"notice\":\"Pay out the accrued maintenance + operator fees for a token to their         configured recipients' `tradeBalance` (from which they withdraw by         voucher). Intended to run on a slower cadence than `settleBatch`.         Permissionless \\u2014 it only ever moves accrued fees to the on-chain         configured addresses.\"},\"terminate()\":{\"notice\":\"EMERGENCY: permanently terminate this instance. Records `terminatedAt`,         which makes every trade operation (deposits, `settleBatch`, voucher         `withdraw`) revert from here on, and opens `withdrawTerminated` \\u2014         after `TERMINATION_DELAY` \\u2014 so each account can reclaim its on-chain         `tradeBalance` WITHOUT a TEE voucher.\"},\"version()\":{\"notice\":\"Get current version of the contract\"},\"withdraw((address,address,uint256,uint256,uint256),bytes)\":{\"notice\":\"Withdraw tokens against a TEE-signed voucher.\"},\"withdrawTerminated(address)\":{\"notice\":\"After termination and `TERMINATION_DELAY`, reclaim the caller's         entire on-chain `tradeBalance` of `_token` to the caller.         Permissionless \\u2014 each account can only pull its own recorded         balance \\u2014 and needs NO TEE signature, so it survives loss of the         signer key.\"}},\"notice\":\"Optimistic shadow-ledger settlement contract for the Aspens stack.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"chains/evm/src/MidribV3.sol\":\"MidribV3\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":5000},\"remappings\":[\":bitcoinprism-evm/=chains/evm/lib/oif-contracts/lib/bitcoinprism-evm/\",\":clones-with-immutable-args/=chains/evm/lib/clones-with-immutable-args/src/\",\":ds-test/=chains/evm/lib/clones-with-immutable-args/lib/ds-test/src/\",\":erc4626-tests/=chains/evm/lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=chains/evm/lib/permit2/lib/forge-gas-snapshot/src/\",\":forge-std/=chains/evm/lib/forge-std/src/\",\":halmos-cheatcodes/=chains/evm/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":oif-contracts/=chains/evm/lib/oif-contracts/\",\":openzeppelin-contracts-upgradeable/=chains/evm/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=chains/evm/lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=chains/evm/lib/openzeppelin-foundry-upgrades/src/\",\":permit2/=chains/evm/lib/permit2/\",\":solady/=chains/evm/lib/solady/src/\",\":soledge/=chains/evm/lib/oif-contracts/lib/the-compact/lib/soledge/src/\",\":solmate/=chains/evm/lib/permit2/lib/solmate/src/\",\":the-compact/=chains/evm/lib/oif-contracts/lib/the-compact/\"]},\"sources\":{\"chains/evm/lib/clones-with-immutable-args/src/Clone.sol\":{\"keccak256\":\"0xf75bde15306c97dfc1f265130e5d3dbdcbacc7a42ee4b0adbc09e76b04efd59e\",\"license\":\"BSD\",\"urls\":[\"bzz-raw://517e7dc10088420ebbdcf879c3ab7f7e0c7c6063596e186309bb158895ece712\",\"dweb:/ipfs/QmYcwmBbPXg833XofAVx7X2qFjWZpAQH1DBXTKcVQSKTGM\"]},\"chains/evm/lib/solady/src/utils/ECDSA.sol\":{\"keccak256\":\"0xb0754260daabfe6f20dd16f2213823f27c8df1089b43c8eda9b3c2a6eca07478\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ffef4ca363ec0e2437b5e195fbb3d58bdc6750921fce32f351ca1c092ad36a75\",\"dweb:/ipfs/QmTcnAyxwvQg3h357PdB8S8oz5bBt85J4SvEgmMqwAfPKF\"]},\"chains/evm/lib/solady/src/utils/EIP712.sol\":{\"keccak256\":\"0x53ccaa757944900e7423347c3c35ea5a905580f3f075452b8468a501a9c39839\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa5688d98319fbeb5b3c46330a394e15a0f2c862d651415e183da4179b918351\",\"dweb:/ipfs/QmZZFrFWmUCFL1qkZDVm3oqrDkQfumYnnksF6cpPkAHdtJ\"]},\"chains/evm/lib/solady/src/utils/Multicallable.sol\":{\"keccak256\":\"0xccd9f4b1c6dbc1592a2c68f10ef9b9798ab03279c39142f7266f6fd8cfcc0fd4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a54a9ede45f3537604184f48031279f493eb0075fb51b42b2c37c86540023ef\",\"dweb:/ipfs/QmfCovmCBLJZtPYJyfZEpbgTuQgT1r2DsDJVbRkxamsbZT\"]},\"chains/evm/lib/solady/src/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xdb28f318ec45197a6c7cc2abebed67d7cb8b965838ef962e3844423256a9ddb8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://873cd46b77a2aeb781e7a0d131e7299151323ed884c330101a51d0727e218d98\",\"dweb:/ipfs/QmddadCjyedztvdSgLZEyKWoRes2SqtpviSjhEbSNrkUoi\"]},\"chains/evm/lib/solady/src/utils/SafeCastLib.sol\":{\"keccak256\":\"0x184c2be02a160a07f7e27fea5753d878c5015c0632faa115ed2f4e90614df284\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c721441b505ec68ecfcc08cf8019342f6f304e94165af3e02db726377de2055a\",\"dweb:/ipfs/Qmcwe7wcjeGs7px92YR4XCFB6YS1x8T1Aq9FoDC7LKC4BA\"]},\"chains/evm/lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x960d5b7ca568a090c4a7785ddfd88f6ce135ced94f5c79c34e5519a71772a817\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2dd81d9b7c0e8cd1ba3b84b8d3b3c937e3b942b626e4d5ab4ad454a07666396\",\"dweb:/ipfs/QmcLh9t8qgojjnziKzDfZXNtbsmvsQMRgd9nHds9ZmP668\"]},\"chains/evm/src/MidribV3.sol\":{\"keccak256\":\"0x59b7c26bdb81682cbf5e8371f14c7f9f2ad926d53fe53ce9c511f2f81ca10ffe\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6f3c71d37c59febce56d6beb4e3fd394d8f838668653e70839f341bc1d0e13fa\",\"dweb:/ipfs/QmY9sq3gngLyyxBtPJogVjDVgLhjoQXSWZfsASo8oJ2aZ8\"]},\"chains/evm/src/interfaces/IMinimalErc20.sol\":{\"keccak256\":\"0x5a34550af787ce671c59414f813621ae56327e90b1d6073edd30fc7d3107bb3f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b62cf4b600df271955dfdbd45fef785becf6d910bcf7bb8b586cdfc30a5c2b2\",\"dweb:/ipfs/QmZbJ5zW71QzN73NeLVfixFznBnEvHEtqqRj8Jm1mLAMUh\"]},\"chains/evm/src/libraries/LibString.sol\":{\"keccak256\":\"0x34bce717d04e252a623fd1a27cd6a61e77565a448292224b10ec06beb646d3f3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3d138d27208395ef9122c6c043ea41381e53d3b3c1989d8c7873fbf0ebc79096\",\"dweb:/ipfs/QmedpQ96QxJPdhnbkvbsCDNfBDmeZo5TpM45DA4CH4ffww\"]},\"chains/evm/src/libraries/MidribErrors.sol\":{\"keccak256\":\"0xe0d33baff5a69bba1b42c7e9c5902753e6a4b4874d885335c8b2e32a0ee54803\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://21e2142dbf13ece76687b4c891cd8437726f0387d2fed4751f8ffb426b77aea1\",\"dweb:/ipfs/QmYdDzqPhBJw1xdostyerkefZTuFJAqZFQ2ZdRHBompVFD\"]},\"chains/evm/src/libraries/MidribEvents.sol\":{\"keccak256\":\"0x2d744fa82b7a43193520f471f85c6477562ea14da9df49a4b94cc410644a3864\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://abcc30dfbefff3ccfe2dbe37867c42097ffd93fe5bf4c424c62a0a0de04bb189\",\"dweb:/ipfs/QmcKfkhvMHNKLAyEWQ66h5qVmVUpKYQtn2at3euXUU5ez1\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.34+commit.80d5c536"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"totalBps","type":"uint256"}],"type":"error","name":"FEE_TOO_HIGH"},{"inputs":[{"internalType":"uint256","name":"available","type":"uint256"},{"internalType":"uint160","name":"required","type":"uint160"}],"type":"error","name":"INSUFFICIENT_BALANCE"},{"inputs":[],"type":"error","name":"INVALID_SIGNER"},{"inputs":[{"internalType":"uint160","name":"amount","type":"uint160"}],"type":"error","name":"MINIMUM_ORDER_AMOUNT"},{"inputs":[],"type":"error","name":"NOT_A_CLONE"},{"inputs":[],"type":"error","name":"NOT_TERMINATED"},{"inputs":[],"type":"error","name":"OPERATOR_ADMIN_IS_SIGNER"},{"inputs":[],"type":"error","name":"Reentrancy"},{"inputs":[],"type":"error","name":"SETTLE_NONCE_ALREADY_USED"},{"inputs":[],"type":"error","name":"SETTLE_NOT_CONSERVED"},{"inputs":[{"internalType":"uint256","name":"cap","type":"uint256"},{"internalType":"uint256","name":"attempted","type":"uint256"}],"type":"error","name":"SETTLE_RATE_LIMITED"},{"inputs":[],"type":"error","name":"TERMINATED"},{"inputs":[{"internalType":"uint256","name":"readyAt","type":"uint256"}],"type":"error","name":"TERMINATION_DELAY_PENDING"},{"inputs":[],"type":"error","name":"UNAUTHORIZED_CALLER"},{"inputs":[],"type":"error","name":"WITHDRAW_NONCE_ALREADY_USED"},{"inputs":[{"internalType":"uint256","name":"cap","type":"uint256"},{"internalType":"uint256","name":"attempted","type":"uint256"}],"type":"error","name":"WITHDRAW_RATE_LIMITED"},{"inputs":[],"type":"error","name":"WITHDRAW_VOUCHER_EXPIRED"},{"inputs":[],"type":"error","name":"ZERO_ADDRESS_OPERATOR"},{"inputs":[],"type":"error","name":"ZERO_ADDRESS_OPERATOR_ADMIN"},{"inputs":[],"type":"error","name":"ZERO_AMOUNT"},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"address","name":"maintenanceRecipient","type":"address","indexed":true},{"internalType":"uint256","name":"maintenanceAmount","type":"uint256","indexed":false},{"internalType":"address","name":"operatorRecipient","type":"address","indexed":true},{"internalType":"uint256","name":"operatorAmount","type":"uint256","indexed":false}],"type":"event","name":"FeesSettled","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true},{"internalType":"address","name":"tokenContract","type":"address","indexed":true},{"internalType":"int256","name":"delta","type":"int256","indexed":false}],"type":"event","name":"NetSettled","anonymous":false},{"inputs":[{"internalType":"address","name":"oldAdmin","type":"address","indexed":true},{"internalType":"address","name":"newAdmin","type":"address","indexed":true}],"type":"event","name":"OperatorAdminSet","anonymous":false},{"inputs":[{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint16","name":"bps","type":"uint16","indexed":false}],"type":"event","name":"OperatorFeeSet","anonymous":false},{"inputs":[{"internalType":"address","name":"tokenContract","type":"address","indexed":true},{"internalType":"uint256","name":"cap","type":"uint256","indexed":false}],"type":"event","name":"SettleEpochCapSet","anonymous":false},{"inputs":[{"internalType":"address","name":"caller","type":"address","indexed":true}],"type":"event","name":"Terminated","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"tokenContract","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"TerminatedWithdrawal","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true},{"internalType":"address","name":"tokenContract","type":"address","indexed":true},{"internalType":"uint160","name":"amount","type":"uint160","indexed":false}],"type":"event","name":"TokenDeposited","anonymous":false},{"inputs":[{"internalType":"address","name":"tokenContract","type":"address","indexed":true},{"internalType":"uint256","name":"cap","type":"uint256","indexed":false}],"type":"event","name":"WithdrawEpochCapSet","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"tokenContract","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"nonce","type":"uint256","indexed":false}],"type":"event","name":"Withdrawn","anonymous":false},{"inputs":[],"stateMutability":"nonpayable","type":"fallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_ORDER_SIZE","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NATIVE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TERMINATION_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"WITHDRAW_EPOCH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint160","name":"_amount","type":"uint160"}],"stateMutability":"nonpayable","type":"function","name":"deposit"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint160","name":"_amount","type":"uint160"}],"stateMutability":"nonpayable","type":"function","name":"depositFor"},{"inputs":[],"stateMutability":"payable","type":"function","name":"depositNative"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"stateMutability":"payable","type":"function","name":"depositNativeFor"},{"inputs":[],"stateMutability":"view","type":"function","name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"factory","outputs":[{"internalType":"address","name":"_factory","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isTerminated","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"maintenanceAccrued","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"maintenanceAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"maintenanceBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"multicall","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"operatorAccrued","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorAdmin","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"owner","outputs":[{"internalType":"address","name":"_owner","type":"address"}]},{"inputs":[{"internalType":"address","name":"_newAdmin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorAdmin"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint16","name":"_bps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorFee"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_cap","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setSettleEpochCap"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_cap","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setWithdrawEpochCap"},{"inputs":[{"internalType":"struct MidribV3.SettleDelta[]","name":"_deltas","type":"tuple[]","components":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"int256","name":"delta","type":"int256"}]},{"internalType":"struct MidribV3.TokenVolume[]","name":"_volumes","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"grossVolume","type":"uint256"}]},{"internalType":"uint256","name":"_nonce","type":"uint256"},{"internalType":"bytes","name":"_signature","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"settleBatch"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"settleEpochCap","outputs":[{"internalType":"uint256","name":"cap","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"settleFees"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"settledInEpoch","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"terminate"},{"inputs":[],"stateMutability":"view","type":"function","name":"terminatedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"tradeBalance","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"view","type":"function","name":"usedSettleNonces","outputs":[{"internalType":"bool","name":"used","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"view","type":"function","name":"usedWithdrawNonces","outputs":[{"internalType":"bool","name":"used","type":"bool"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"version","outputs":[{"internalType":"uint8","name":"_version","type":"uint8"}]},{"inputs":[{"internalType":"struct MidribV3.WithdrawalVoucher","name":"_v","type":"tuple","components":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"}]},{"internalType":"bytes","name":"_signature","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"withdraw"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"withdrawEpochCap","outputs":[{"internalType":"uint256","name":"cap","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"withdrawTerminated"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawnInEpoch","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"deposit(address,uint160)":{"params":{"_amount":"amount of tokens we want to deposit","_token":"contract address of the token we are depositing"}},"depositFor(address,address,uint160)":{"details":"Enables the Flare FCE on-chain deposit path (see      infra/stacks/fcc/extension/contracts/AspensInstructionSender.sol): the relayer      holds the user's tokens transiently, approves this contract, and calls      `depositFor` so custody AND the credited tradeBalance both land here — keeping      `settleBatch`/`withdraw` unchanged — while the cosigned instruction names the      real depositor. Unlike `deposit`, tokens are pulled from `msg.sender` (the      relayer), not from `_account`; the credit + event are against `_account`. Same      fee-on-transfer-safe accounting as `_deposit`; `_deposit` itself is untouched.","params":{"_account":"beneficiary whose tradeBalance is credited","_amount":"amount to pull from msg.sender (>= MIN_ORDER_SIZE)","_token":"token being deposited"}},"depositNativeFor(address)":{"params":{"_account":"beneficiary whose NATIVE tradeBalance is credited"}},"eip712Domain()":{"details":"See: https://eips.ethereum.org/EIPS/eip-5267"},"factory()":{"returns":{"_factory":"the deploying factory address"}},"multicall(bytes[])":{"details":"Apply `delegatecall` with the current contract to each calldata in `data`, and store the `abi.encode` formatted results of each `delegatecall` into `results`. If any of the `delegatecall`s reverts, the entire context is reverted, and the error is bubbled up. By default, this function directly returns the results and terminates the call context. If you need to add before and after actions to the multicall, please override this function."},"owner()":{"returns":{"_owner":"the instance owner / TEE signer address"}},"setOperatorAdmin(address)":{"details":"Refuses the TEE signer as the new admin: the admin gates the caps that      bound a compromised TEE and `terminate()`, so handing it to the signer      would let the TEE lift its own limits.","params":{"_newAdmin":"new operator admin (non-zero, not the TEE signer)"}},"setOperatorFee(address,uint16)":{"params":{"_bps":"operator fee in basis points","_recipient":"operator fee recipient (required when `_bps > 0`)"}},"setSettleEpochCap(address,uint256)":{"details":"Gated to the operator admin, never the TEE signer: this cap bounds what      a compromised TEE can move between accounts by signing batches, so the      TEE must not be able to raise it. Writes only the cap; the current      epoch's tally is untouched, so re-arming cannot wipe it.","params":{"_cap":"cumulative positive-delta total settleable per `WITHDRAW_EPOCH` (`0` = unlimited)","_token":"token whose cap to set"}},"setWithdrawEpochCap(address,uint256)":{"details":"Gated to the operator admin — the stack's own key, which can never be      the TEE signer (see `setOperatorAdmin`), so the TEE cannot raise the      cap that bounds its own vouchers. Rotate with `setOperatorAdmin`.","params":{"_cap":"cumulative amount withdrawable per `WITHDRAW_EPOCH` (`0` = unlimited)","_token":"token whose cap to set"}},"settleBatch((address,address,int256)[],(address,uint256)[],uint256,bytes)":{"details":"Off-chain shadow-ledger net settlement. In the optimistic      model funds are NOT locked per order; matched trades accumulate as net      deltas off-chain and are reflected on-chain here in a single batch.      Safety:      - signed by the instance owner (the TEE);      - per token, the contract computes        `fee = grossVolume*maintenanceBps/DENOMINATOR (floor) + grossVolume*operatorBps/DENOMINATOR (floor)`        and requires the trader deltas to sum to exactly `-fee` — the fee is the        conservation sink. Non-bypassable: under- OR over-paying the computed        fee reverts SETTLE_NOT_CONSERVED, so the on-chain bps is enforced        against the reported volume;      - the skim accrues to `maintenanceAccrued`/`operatorAccrued`, paid out        later (slower cadence) by `settleFees`;      - no account's `tradeBalance` may go negative (no overdraw / mint);      - per token, the sum of the POSITIVE deltas (what the batch credits to        recipients) counts against `settleEpochCap` for the current epoch,        cumulatively across batches; over the cap reverts SETTLE_RATE_LIMITED;      - one-shot per `_nonce` (replay-protected).","params":{"_deltas":"per-(user,token) signed NET-OF-FEE balance changes","_nonce":"unique batch nonce","_signature":"owner EIP-712 signature over (deltasHash, volumesHash, nonce)","_volumes":"per-token gross matched volume (drives the fee computation)"}},"settleFees(address)":{"params":{"_token":"token whose accrued fees to pay out"}},"terminate()":{"details":"Gated to the operator admin ONLY — the stack's own, non-TEE key. It      releases the funds even when the TEE / signer key is gone, the      venue-teardown case in which a voucher can never be produced again.      The TEE signer cannot call it: a terminate it could trigger would let      a compromised TEE swap the capped voucher exit for the uncapped      `withdrawTerminated` one. One-way and set once: no un-terminate, and a      second call reverts instead of restarting the delay."},"version()":{"returns":{"_version":"The version number"}},"withdraw((address,address,uint256,uint256,uint256),bytes)":{"details":"In the optimistic shadow-ledger model a self-service withdrawal is      unsafe: on-chain `tradeBalance` still includes funds reserved behind      resting orders (reservations are off-chain), so a user could drain      collateral a later `settleBatch` is obligated to pay out. The TEE —      the authority on the withdrawable balance — signs a voucher instead;      the contract enforces only bounded backstops:      - signed by the instance owner (the TEE), like `settleBatch`;      - a non-zero amount (a zero voucher would only burn a nonce);      - not past `expiry`; one-shot per `(account, nonce)` (replay-proof);      - hard cap: never pays more of a token than `tradeBalance` holds (no mint);      - per-token per-epoch rate limit (TEE-bug blast-radius backstop).      Anyone may submit it (gas payer need not be the recipient): funds      always go to `_v.account`, so a relayer can pay gas for a gasless      withdrawal.","params":{"_signature":"owner EIP-712 signature over the voucher fields","_v":"the signed voucher"}},"withdrawTerminated(address)":{"details":"Reverts `TERMINATION_DELAY_PENDING(readyAt)` until      `block.timestamp >= terminatedAt + TERMINATION_DELAY`. Deliberately NOT      epoch-rate-limited: the caller withdraws only what the contract already      records as theirs and no TEE signature is involved, so a cap could only      strand funds — the opposite of recovery. Balance is zeroed before the      transfer (CEI; `nonReentrant` also guards), so a token can be reclaimed      only once.","params":{"_token":"token address, or the `NATIVE` sentinel, to reclaim."}}},"version":1},"userdoc":{"kind":"user","methods":{"deposit(address,uint160)":{"notice":"Allows a user to deposit tokens into this contract."},"depositFor(address,address,uint160)":{"notice":"Deposit on behalf of `_account`, pulling the tokens from the CALLER."},"depositNative()":{"notice":"Deposit the chain's native asset (ETH/FLR), credited under the         NATIVE sentinel key. The native analogue of `deposit`."},"depositNativeFor(address)":{"notice":"Native-asset analogue of `depositFor` (the Flare FCE relayer         path): the VALUE comes from the caller, while the credit + event         go to `_account`."},"factory()":{"notice":"The factory that deployed this instance (immutable arg at byte 20)."},"isTerminated()":{"notice":"Whether `terminate()` has run on this instance."},"maintenanceAddress()":{"notice":"Maintenance fee recipient — Aspens-controlled, immutable for this instance."},"maintenanceBps()":{"notice":"Maintenance fee in basis points — Aspens-controlled, immutable for this instance."},"operatorAdmin()":{"notice":"Effective operator admin: the storage override if rotated, else the baked-in         immutable arg (byte 62). Gates `setOperatorFee` / `setOperatorAdmin` /         `setWithdrawEpochCap` / `setSettleEpochCap` / `terminate`. Never zero and         never the TEE signer."},"owner()":{"notice":"The instance owner — the TEE signer (immutable arg at byte 0).         Authorizes `settleBatch` and withdrawal vouchers."},"setOperatorAdmin(address)":{"notice":"Rotate the operator admin (current operator admin only)."},"setOperatorFee(address,uint16)":{"notice":"Set or rotate the operator fee (stack admin only). Skimmed IN ADDITION to         the maintenance fee; the combined fee may not exceed DENOMINATOR (100%).         A zero `_bps` disables the operator fee."},"setSettleEpochCap(address,uint256)":{"notice":"Set the per-epoch settlement cap for a token: the most `settleBatch`         may credit to accounts (the sum of its positive deltas) in that token         per `WITHDRAW_EPOCH`, across all batches. `0` disables the cap         (unlimited)."},"setWithdrawEpochCap(address,uint256)":{"notice":"Set the per-epoch withdrawal cap for a token. `0` disables the cap         (unlimited). Caps bound the blast radius of a buggy or compromised         TEE; start conservative and raise as confidence grows."},"settleBatch((address,address,int256)[],(address,uint256)[],uint256,bytes)":{"notice":"Apply a TEE-signed batch of net balance changes to `tradeBalance`,         skimming the maintenance + operator fees the contract computes from         the reported per-token gross matched volume."},"settleFees(address)":{"notice":"Pay out the accrued maintenance + operator fees for a token to their         configured recipients' `tradeBalance` (from which they withdraw by         voucher). Intended to run on a slower cadence than `settleBatch`.         Permissionless — it only ever moves accrued fees to the on-chain         configured addresses."},"terminate()":{"notice":"EMERGENCY: permanently terminate this instance. Records `terminatedAt`,         which makes every trade operation (deposits, `settleBatch`, voucher         `withdraw`) revert from here on, and opens `withdrawTerminated` —         after `TERMINATION_DELAY` — so each account can reclaim its on-chain         `tradeBalance` WITHOUT a TEE voucher."},"version()":{"notice":"Get current version of the contract"},"withdraw((address,address,uint256,uint256,uint256),bytes)":{"notice":"Withdraw tokens against a TEE-signed voucher."},"withdrawTerminated(address)":{"notice":"After termination and `TERMINATION_DELAY`, reclaim the caller's         entire on-chain `tradeBalance` of `_token` to the caller.         Permissionless — each account can only pull its own recorded         balance — and needs NO TEE signature, so it survives loss of the         signer key."}},"version":1}},"settings":{"remappings":["bitcoinprism-evm/=chains/evm/lib/oif-contracts/lib/bitcoinprism-evm/","clones-with-immutable-args/=chains/evm/lib/clones-with-immutable-args/src/","ds-test/=chains/evm/lib/clones-with-immutable-args/lib/ds-test/src/","erc4626-tests/=chains/evm/lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=chains/evm/lib/permit2/lib/forge-gas-snapshot/src/","forge-std/=chains/evm/lib/forge-std/src/","halmos-cheatcodes/=chains/evm/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","oif-contracts/=chains/evm/lib/oif-contracts/","openzeppelin-contracts-upgradeable/=chains/evm/lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=chains/evm/lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=chains/evm/lib/openzeppelin-foundry-upgrades/src/","permit2/=chains/evm/lib/permit2/","solady/=chains/evm/lib/solady/src/","soledge/=chains/evm/lib/oif-contracts/lib/the-compact/lib/soledge/src/","solmate/=chains/evm/lib/permit2/lib/solmate/src/","the-compact/=chains/evm/lib/oif-contracts/lib/the-compact/"],"optimizer":{"enabled":true,"runs":5000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"chains/evm/src/MidribV3.sol":"MidribV3"},"evmVersion":"london","libraries":{}},"sources":{"chains/evm/lib/clones-with-immutable-args/src/Clone.sol":{"keccak256":"0xf75bde15306c97dfc1f265130e5d3dbdcbacc7a42ee4b0adbc09e76b04efd59e","urls":["bzz-raw://517e7dc10088420ebbdcf879c3ab7f7e0c7c6063596e186309bb158895ece712","dweb:/ipfs/QmYcwmBbPXg833XofAVx7X2qFjWZpAQH1DBXTKcVQSKTGM"],"license":"BSD"},"chains/evm/lib/solady/src/utils/ECDSA.sol":{"keccak256":"0xb0754260daabfe6f20dd16f2213823f27c8df1089b43c8eda9b3c2a6eca07478","urls":["bzz-raw://ffef4ca363ec0e2437b5e195fbb3d58bdc6750921fce32f351ca1c092ad36a75","dweb:/ipfs/QmTcnAyxwvQg3h357PdB8S8oz5bBt85J4SvEgmMqwAfPKF"],"license":"MIT"},"chains/evm/lib/solady/src/utils/EIP712.sol":{"keccak256":"0x53ccaa757944900e7423347c3c35ea5a905580f3f075452b8468a501a9c39839","urls":["bzz-raw://aa5688d98319fbeb5b3c46330a394e15a0f2c862d651415e183da4179b918351","dweb:/ipfs/QmZZFrFWmUCFL1qkZDVm3oqrDkQfumYnnksF6cpPkAHdtJ"],"license":"MIT"},"chains/evm/lib/solady/src/utils/Multicallable.sol":{"keccak256":"0xccd9f4b1c6dbc1592a2c68f10ef9b9798ab03279c39142f7266f6fd8cfcc0fd4","urls":["bzz-raw://8a54a9ede45f3537604184f48031279f493eb0075fb51b42b2c37c86540023ef","dweb:/ipfs/QmfCovmCBLJZtPYJyfZEpbgTuQgT1r2DsDJVbRkxamsbZT"],"license":"MIT"},"chains/evm/lib/solady/src/utils/ReentrancyGuard.sol":{"keccak256":"0xdb28f318ec45197a6c7cc2abebed67d7cb8b965838ef962e3844423256a9ddb8","urls":["bzz-raw://873cd46b77a2aeb781e7a0d131e7299151323ed884c330101a51d0727e218d98","dweb:/ipfs/QmddadCjyedztvdSgLZEyKWoRes2SqtpviSjhEbSNrkUoi"],"license":"MIT"},"chains/evm/lib/solady/src/utils/SafeCastLib.sol":{"keccak256":"0x184c2be02a160a07f7e27fea5753d878c5015c0632faa115ed2f4e90614df284","urls":["bzz-raw://c721441b505ec68ecfcc08cf8019342f6f304e94165af3e02db726377de2055a","dweb:/ipfs/Qmcwe7wcjeGs7px92YR4XCFB6YS1x8T1Aq9FoDC7LKC4BA"],"license":"MIT"},"chains/evm/lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x960d5b7ca568a090c4a7785ddfd88f6ce135ced94f5c79c34e5519a71772a817","urls":["bzz-raw://b2dd81d9b7c0e8cd1ba3b84b8d3b3c937e3b942b626e4d5ab4ad454a07666396","dweb:/ipfs/QmcLh9t8qgojjnziKzDfZXNtbsmvsQMRgd9nHds9ZmP668"],"license":"MIT"},"chains/evm/src/MidribV3.sol":{"keccak256":"0x59b7c26bdb81682cbf5e8371f14c7f9f2ad926d53fe53ce9c511f2f81ca10ffe","urls":["bzz-raw://6f3c71d37c59febce56d6beb4e3fd394d8f838668653e70839f341bc1d0e13fa","dweb:/ipfs/QmY9sq3gngLyyxBtPJogVjDVgLhjoQXSWZfsASo8oJ2aZ8"],"license":"BUSL-1.1"},"chains/evm/src/interfaces/IMinimalErc20.sol":{"keccak256":"0x5a34550af787ce671c59414f813621ae56327e90b1d6073edd30fc7d3107bb3f","urls":["bzz-raw://1b62cf4b600df271955dfdbd45fef785becf6d910bcf7bb8b586cdfc30a5c2b2","dweb:/ipfs/QmZbJ5zW71QzN73NeLVfixFznBnEvHEtqqRj8Jm1mLAMUh"],"license":"BUSL-1.1"},"chains/evm/src/libraries/LibString.sol":{"keccak256":"0x34bce717d04e252a623fd1a27cd6a61e77565a448292224b10ec06beb646d3f3","urls":["bzz-raw://3d138d27208395ef9122c6c043ea41381e53d3b3c1989d8c7873fbf0ebc79096","dweb:/ipfs/QmedpQ96QxJPdhnbkvbsCDNfBDmeZo5TpM45DA4CH4ffww"],"license":"BUSL-1.1"},"chains/evm/src/libraries/MidribErrors.sol":{"keccak256":"0xe0d33baff5a69bba1b42c7e9c5902753e6a4b4874d885335c8b2e32a0ee54803","urls":["bzz-raw://21e2142dbf13ece76687b4c891cd8437726f0387d2fed4751f8ffb426b77aea1","dweb:/ipfs/QmYdDzqPhBJw1xdostyerkefZTuFJAqZFQ2ZdRHBompVFD"],"license":"BUSL-1.1"},"chains/evm/src/libraries/MidribEvents.sol":{"keccak256":"0x2d744fa82b7a43193520f471f85c6477562ea14da9df49a4b94cc410644a3864","urls":["bzz-raw://abcc30dfbefff3ccfe2dbe37867c42097ffd93fe5bf4c424c62a0a0de04bb189","dweb:/ipfs/QmcKfkhvMHNKLAyEWQ66h5qVmVUpKYQtn2at3euXUU5ez1"],"license":"BUSL-1.1"}},"version":1},"id":15}