@layerzerolabs/oapp-alt-evm
Version:
LayerZero Labs reference EVM OmniChain Application (OAppAlt) for EndpointV2Alt implementation
1 lines • 103 kB
JSON
{"abi":[{"type":"constructor","inputs":[{"name":"_localEidV2","type":"uint32","internalType":"uint32"},{"name":"_nativeDecimalsRate","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"dstBlockTimeConfigs","inputs":[{"name":"dstEid","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"avgBlockTime","type":"uint32","internalType":"uint32"},{"name":"blockNum","type":"uint64","internalType":"uint64"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"maxPastRetention","type":"uint32","internalType":"uint32"},{"name":"maxFutureRetention","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"getCmdFees","inputs":[],"outputs":[{"name":"","type":"uint120","internalType":"uint120"},{"name":"","type":"uint120","internalType":"uint120"},{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"getFee","inputs":[{"name":"_params","type":"tuple","internalType":"struct IDVNFeeLib.FeeParams","components":[{"name":"priceFeed","type":"address","internalType":"address"},{"name":"dstEid","type":"uint32","internalType":"uint32"},{"name":"confirmations","type":"uint64","internalType":"uint64"},{"name":"sender","type":"address","internalType":"address"},{"name":"quorum","type":"uint64","internalType":"uint64"},{"name":"defaultMultiplierBps","type":"uint16","internalType":"uint16"}]},{"name":"_dstConfig","type":"tuple","internalType":"struct IDVN.DstConfig","components":[{"name":"gas","type":"uint64","internalType":"uint64"},{"name":"multiplierBps","type":"uint16","internalType":"uint16"},{"name":"floorMarginUSD","type":"uint128","internalType":"uint128"}]},{"name":"_options","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getFee","inputs":[{"name":"_params","type":"tuple","internalType":"struct IDVNFeeLib.FeeParamsForRead","components":[{"name":"priceFeed","type":"address","internalType":"address"},{"name":"sender","type":"address","internalType":"address"},{"name":"quorum","type":"uint64","internalType":"uint64"},{"name":"defaultMultiplierBps","type":"uint16","internalType":"uint16"}]},{"name":"_dstConfig","type":"tuple","internalType":"struct IDVN.DstConfig","components":[{"name":"gas","type":"uint64","internalType":"uint64"},{"name":"multiplierBps","type":"uint16","internalType":"uint16"},{"name":"floorMarginUSD","type":"uint128","internalType":"uint128"}]},{"name":"_cmd","type":"bytes","internalType":"bytes"},{"name":"_options","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getFeeOnSend","inputs":[{"name":"_params","type":"tuple","internalType":"struct IDVNFeeLib.FeeParamsForRead","components":[{"name":"priceFeed","type":"address","internalType":"address"},{"name":"sender","type":"address","internalType":"address"},{"name":"quorum","type":"uint64","internalType":"uint64"},{"name":"defaultMultiplierBps","type":"uint16","internalType":"uint16"}]},{"name":"_dstConfig","type":"tuple","internalType":"struct IDVN.DstConfig","components":[{"name":"gas","type":"uint64","internalType":"uint64"},{"name":"multiplierBps","type":"uint16","internalType":"uint16"},{"name":"floorMarginUSD","type":"uint128","internalType":"uint128"}]},{"name":"_cmd","type":"bytes","internalType":"bytes"},{"name":"_options","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"fee","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"getFeeOnSend","inputs":[{"name":"_params","type":"tuple","internalType":"struct IDVNFeeLib.FeeParams","components":[{"name":"priceFeed","type":"address","internalType":"address"},{"name":"dstEid","type":"uint32","internalType":"uint32"},{"name":"confirmations","type":"uint64","internalType":"uint64"},{"name":"sender","type":"address","internalType":"address"},{"name":"quorum","type":"uint64","internalType":"uint64"},{"name":"defaultMultiplierBps","type":"uint16","internalType":"uint16"}]},{"name":"_dstConfig","type":"tuple","internalType":"struct IDVN.DstConfig","components":[{"name":"gas","type":"uint64","internalType":"uint64"},{"name":"multiplierBps","type":"uint16","internalType":"uint16"},{"name":"floorMarginUSD","type":"uint128","internalType":"uint128"}]},{"name":"_options","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"getSupportedCmdTypes","inputs":[{"name":"_targetEid","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"uint256","internalType":"BitMap256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setCmdFees","inputs":[{"name":"_evmCallRequestV1FeeUSD","type":"uint120","internalType":"uint120"},{"name":"_evmCallComputeV1ReduceFeeUSD","type":"uint120","internalType":"uint120"},{"name":"_evmCallComputeV1MapBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDstBlockTimeConfigs","inputs":[{"name":"dstEids","type":"uint32[]","internalType":"uint32[]"},{"name":"_blockConfigs","type":"tuple[]","internalType":"struct DVNFeeLibMock.BlockTimeConfig[]","components":[{"name":"avgBlockTime","type":"uint32","internalType":"uint32"},{"name":"blockNum","type":"uint64","internalType":"uint64"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"maxPastRetention","type":"uint32","internalType":"uint32"},{"name":"maxFutureRetention","type":"uint32","internalType":"uint32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSupportedCmdTypes","inputs":[{"name":"_params","type":"tuple[]","internalType":"struct DVNFeeLibMock.SetSupportedCmdTypesParam[]","components":[{"name":"targetEid","type":"uint32","internalType":"uint32"},{"name":"types","type":"uint256","internalType":"BitMap256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"major","type":"uint64","internalType":"uint64"},{"name":"minor","type":"uint8","internalType":"uint8"}],"stateMutability":"pure"},{"type":"function","name":"withdrawToken","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"DVN_EidNotSupported","inputs":[{"name":"eid","type":"uint32","internalType":"uint32"}]},{"type":"error","name":"DVN_INVALID_INPUT_LENGTH","inputs":[]},{"type":"error","name":"DVN_InvalidDVNOptions","inputs":[{"name":"cursor","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"DVN_TimestampOutOfRange","inputs":[{"name":"eid","type":"uint32","internalType":"uint32"},{"name":"timestamp","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"DVN_UnsupportedOptionType","inputs":[{"name":"optionType","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"InvalidCmd","inputs":[]},{"type":"error","name":"InvalidType","inputs":[]},{"type":"error","name":"InvalidVersion","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"Transfer_NativeFailed","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"Transfer_ToAddressIsZero","inputs":[]},{"type":"error","name":"UnsupportedTargetEid","inputs":[]}],"bytecode":{"object":"0x60c060405234801562000010575f80fd5b5060405162001e0638038062001e068339810160408190526200003391620000c8565b33806200005957604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b620000648162000079565b5063ffffffff90911660a052608052620000fe565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f8060408385031215620000da575f80fd5b825163ffffffff81168114620000ee575f80fd5b6020939093015192949293505050565b60805160a051611cd86200012e5f395f818161066d01526106da01525f81816107a40152610a800152611cd85ff3fe6080604052600436106100e7575f3560e01c80638da5cb5b11610087578063de0a93c311610057578063de0a93c3146102e4578063df2b057e14610329578063f2fde38b1461033c578063f5ff608f1461035b575f80fd5b80638da5cb5b1461026d5780639ac23d2814610293578063bbc5a33b146102b2578063d358b300146102c5575f80fd5b806339f26dfc116100c257806339f26dfc146101fb57806354fd4d501461021a578063715018a61461023a5780637bfa20a91461024e575f80fd5b806301e33667146100f257806310b65f76146101135780632565c24514610157575f80fd5b366100ee57005b5f80fd5b3480156100fd575f80fd5b5061011161010c366004611565565b61037a565b005b34801561011e575f80fd5b5061014461012d3660046115af565b63ffffffff165f9081526001602052604090205490565b6040519081526020015b60405180910390f35b348015610162575f80fd5b506101bc6101713660046115af565b60036020525f908152604090205463ffffffff808216916001600160401b036401000000008204811692600160601b830490911691600160a01b8104821691600160c01b9091041685565b6040805163ffffffff96871681526001600160401b0395861660208201529390941693830193909352831660608201529116608082015260a00161014e565b348015610206575f80fd5b506101116102153660046115f8565b610392565b348015610225575f80fd5b5060408051600180825260208201520161014e565b348015610245575f80fd5b506101116103e4565b348015610259575f80fd5b50610144610268366004611692565b6103f7565b348015610278575f80fd5b505f546040516001600160a01b03909116815260200161014e565b34801561029e575f80fd5b506101116102ad3660046116f8565b61057e565b6101446102c03660046117b4565b610622565b3480156102d0575f80fd5b506101446102df3660046117b4565b61063c565b3480156102ef575f80fd5b50600254604080516001600160781b038084168252600160781b8404166020820152600160f01b90920461ffff169082015260600161014e565b610144610337366004611692565b61082e565b348015610347575f80fd5b50610111610356366004611848565b610844565b348015610366575f80fd5b50610111610375366004611861565b610881565b6103826108fa565b61038d838383610926565b505050565b61039a6108fa565b6002805461ffff909216600160f01b026001600160f01b036001600160781b03948516600160781b026001600160f01b031990941694909516939093179190911792909216179055565b6103ec6108fa565b6103f55f610949565b565b5f61040560208501856118e3565b6001600160401b03165f0361044b5761042460408601602087016115af565b60405163680489c560e11b815263ffffffff90911660048201526024015b60405180910390fd5b6104558383610998565b505f61047861046a60a08801608089016118e3565b6001600160401b0316610a07565b90505f806104896020890189611848565b6001600160a01b03166388a4124c6104a760408b0160208c016115af565b856104b560208c018c6118e3565b6040516001600160e01b031960e086901b16815263ffffffff93909316600484015260248301919091526001600160401b03166044820152606401608060405180830381865afa15801561050b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061052f9190611912565b9350505091506105728288602001602081019061054c9190611964565b61055c60c08c0160a08d01611964565b61056c60608c0160408d0161197d565b85610a14565b98975050505050505050565b6105866108fa565b8281146105a6576040516316a9d98760e31b815260040160405180910390fd5b5f5b8381101561061b578282828181106105c2576105c2611998565b905060a0020160035f8787858181106105dd576105dd611998565b90506020020160208101906105f291906115af565b63ffffffff16815260208101919091526040015f2061061182826119b8565b50506001016105a8565b5050505050565b5f61063187878787878761063c565b979650505050505050565b5f61064a60208701876118e3565b6001600160401b03165f0361069a5760405163680489c560e11b815263ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166004820152602401610442565b6106a48383610998565b505f6106b961046a60608a0160408b016118e3565b90505f806106ca60208b018b611848565b6001600160a01b03166388a4124c7f00000000000000000000000000000000000000000000000000000000000000008561070760208e018e6118e3565b6040516001600160e01b031960e086901b16815263ffffffff93909316600484015260248301919091526001600160401b03166044820152606401608060405180830381865afa15801561075d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107819190611912565b9350505091505f6107928989610ae5565b90505f6001600160801b0383166107c97f000000000000000000000000000000000000000000000000000000000000000084611ac7565b6107d39190611af2565b905061081e6107e28286611b05565b6107f260408e0160208f01611964565b8e60600160208101906108059190611964565b8e6040016020810190610818919061197d565b87610a14565b9c9b505050505050505050505050565b5f61083b858585856103f7565b95945050505050565b61084c6108fa565b6001600160a01b03811661087557604051631e4fbdf760e01b81525f6004820152602401610442565b61087e81610949565b50565b6108896108fa565b5f5b8181101561038d578282828181106108a5576108a5611998565b9050604002016020013560015f015f8585858181106108c6576108c6611998565b6108dc92602060409092020190810191506115af565b63ffffffff16815260208101919091526040015f205560010161088b565b5f546001600160a01b031633146103f55760405163118cdaa760e01b8152336004820152602401610442565b6001600160a01b03831661093e5761038d8282610b8e565b61038d838383610c37565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f8082156109d9575f806109ad868685610c72565b604051637085244b60e01b815260ff851660048201529096509294508593505060249091019050610442565b8083146109fc5760405163013adb8360e21b815260048101829052602401610442565b5f9150505b92915050565b5f610a0182610120610ccb565b5f8061ffff861615610a265785610a28565b845b90505f612710610a3c61ffff84168a611ac7565b610a469190611af2565b90506001600160801b0384161580610a6557506001600160801b038516155b15610a7357915061083b9050565b5f846001600160801b03167f0000000000000000000000000000000000000000000000000000000000000000876001600160801b0316610ab39190611ac7565b610abd9190611af2565b610ac7908a611b05565b9050818111610ad65781610ad8565b805b9998505050505050505050565b5f80610af48484610d2f610ef0565b6002548151919250610b15916001600160781b039091169061ffff16611b18565b6001600160781b03169150806020015115610b5d5760025461271090610b4690600160f01b900461ffff1684611ac7565b610b509190611af2565b610b5a9083611b05565b91505b806040015115610b8757600254610b8490600160781b90046001600160781b031683611b05565b91505b5092915050565b6001600160a01b038216610bb5576040516306b7a93160e41b815260040160405180910390fd5b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114610bfe576040519150601f19603f3d011682016040523d82523d5f602084013e610c03565b606091505b505090508061038d57604051631196f20d60e21b81526001600160a01b038416600482015260248101839052604401610442565b6001600160a01b038216610c5e576040516306b7a93160e41b815260040160405180910390fd5b61038d6001600160a01b03841683836113de565b5f36816001840181610c85888884611430565b6002830192909150610c9d9089908990600301611456565b94506002820161ffff82168301610cb681838b8d611b43565b979b909a50969850505061ffff160193505050565b5f80610cd8604185611ac7565b9050610ce5602082611b6a565b15610d0d57610cf5602082611b6a565b610cff9082611b7d565b610d0a906020611b05565b90505b80610d1a84610104611b05565b610d249190611b05565b610b84906020611b05565b610d3b6001858361147a565b610d4860018560026114a2565b15610eea5763ffffffff8085165f90815260036020908152604091829020825160a081018452905480851682526001600160401b036401000000008204811693830193909352600160601b810490921692810192909252600160a01b810483166060830152600160c01b90049091166080820152828415610e6a5781602001516001600160401b0316846001600160401b03161115610e2757815160208301516103e89163ffffffff1690610dfd9087611b90565b610e079190611bb0565b610e119190611bd3565b8260400151610e209190611bf8565b9050610e6a565b6103e8825f015163ffffffff16858460200151610e449190611b90565b610e4e9190611bb0565b610e589190611bd3565b8260400151610e679190611b90565b90505b42826060015163ffffffff1682610e819190611bf8565b6001600160401b03161080610eb257506080820151610ea69063ffffffff1642611b05565b816001600160401b0316115b15610ee757604051630c5a8d2360e01b815263ffffffff871660048201526001600160401b0382166024820152604401610442565b50505b50505050565b604080516060810182525f808252602082018190529181018290529080858186610f1b826002611b05565b92610f2893929190611b43565b610f3191611c18565b60f01c9050610f41600283611b05565b915061ffff8116600114610f685760405163a9146eeb60e01b815260040160405180910390fd5b610f73600283611b05565b91505f868387610f84826002611b05565b92610f9193929190611b43565b610f9a91611c18565b60f01c9050610faa600284611b05565b92508061ffff165f03610fd0576040516387a7f37960e01b815260040160405180910390fd5b61ffff168352505f5b825f015161ffff168161ffff1610156111cf575f868684818110610fff57610fff611998565b919091013560f81c91506110169050600184611b05565b925060ff811660011461103c5760405163a9146eeb60e01b815260040160405180910390fd5b611047600284611b05565b92505f878488611058826002611b05565b9261106593929190611b43565b61106e91611c18565b60f01c905061107e600285611b05565b93505f1961ffff8216016111ac575f88858961109b826002611b05565b926110a893929190611b43565b6110b191611c18565b60f01c90506110c1600286611b05565b9450845f8a828b6110d3826004611b05565b926110e093929190611b43565b6110e991611c46565b60e01c90506110f9600483611b05565b91505f8b8b8481811061110e5761110e611998565b600192013560f81c8214925061112691905084611b05565b92505f8c848d611137826008611b05565b9261114493929190611b43565b61114d91611c74565b60c01c90506111628383835f8f63ffffffff16565b508a925061117791505061ffff831687611b05565b1115611196576040516387a7f37960e01b815260040160405180910390fd5b6111a461ffff821686611b05565b9450506111c5565b60405163b968846160e01b815260040160405180910390fd5b5050600101610fd9565b50838110156113b6575f8585838181106111eb576111eb611998565b919091013560f81c91506112029050600183611b05565b915060ff81166001146112285760405163a9146eeb60e01b815260040160405180910390fd5b5f868387611237826002611b05565b9261124493929190611b43565b61124d91611c18565b60f01c905061125d600284611b05565b925061ffff81166001146112845760405163b968846160e01b815260040160405180910390fd5b5f87878581811061129757611297611998565b919091013560f81c91506112ae9050600185611b05565b935060ff81166112c457600160208601526112f6565b5f1960ff8216016112db57600160408601526112f6565b60011960ff8216016111ac5760016020860181905260408601525b5f888589611305826004611b05565b9261131293929190611b43565b61131b91611c46565b60e01c905061132b600486611b05565b94505f89898781811061134057611340611998565b600192013560f81c8214925061135891905087611b05565b95505f8a878b611369826008611b05565b9261137693929190611b43565b61137f91611c74565b60c01c905061138f600888611b05565b96506113a283838360018d63ffffffff16565b6113ad601688611b05565b96505050505050505b8084146113d6576040516387a7f37960e01b815260040160405180910390fd5b509392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261038d9084906114cf565b5f6002820161144181848688611b43565b61144a91611c18565b60f01c95945050505050565b5f83838381811061146957611469611998565b919091013560f81c95945050505050565b6114858383836114a2565b61038d576040516350fae9eb60e01b815260040160405180910390fd5b63ffffffff8083165f9081526020859052604081205490916114c79190849061153b16565b949350505050565b5f8060205f8451602086015f885af1806114ee576040513d5f823e3d81fd5b50505f513d91508115611505578060011415611512565b6001600160a01b0384163b155b15610eea57604051635274afe760e01b81526001600160a01b0385166004820152602401610442565b600160ff919091161b16151590565b80356001600160a01b0381168114611560575f80fd5b919050565b5f805f60608486031215611577575f80fd5b6115808461154a565b925061158e6020850161154a565b9150604084013590509250925092565b63ffffffff8116811461087e575f80fd5b5f602082840312156115bf575f80fd5b81356115ca8161159e565b9392505050565b80356001600160781b0381168114611560575f80fd5b803561ffff81168114611560575f80fd5b5f805f6060848603121561160a575f80fd5b611613846115d1565b9250611621602085016115d1565b915061162f604085016115e7565b90509250925092565b5f60608284031215611648575f80fd5b50919050565b5f8083601f84011261165e575f80fd5b5081356001600160401b03811115611674575f80fd5b60208301915083602082850101111561168b575f80fd5b9250929050565b5f805f808486036101408112156116a7575f80fd5b60c08112156116b4575f80fd5b508493506116c58660c08701611638565b92506101208501356001600160401b038111156116e0575f80fd5b6116ec8782880161164e565b95989497509550505050565b5f805f806040858703121561170b575f80fd5b84356001600160401b0380821115611721575f80fd5b818701915087601f830112611734575f80fd5b813581811115611742575f80fd5b8860208260051b8501011115611756575f80fd5b602092830196509450908601359080821115611770575f80fd5b818701915087601f830112611783575f80fd5b813581811115611791575f80fd5b88602060a0830285010111156117a5575f80fd5b95989497505060200194505050565b5f805f805f808688036101208112156117cb575f80fd5b60808112156117d8575f80fd5b508695506117e98860808901611638565b945060e08701356001600160401b0380821115611804575f80fd5b6118108a838b0161164e565b9096509450610100890135915080821115611829575f80fd5b5061183689828a0161164e565b979a9699509497509295939492505050565b5f60208284031215611858575f80fd5b6115ca8261154a565b5f8060208385031215611872575f80fd5b82356001600160401b0380821115611888575f80fd5b818501915085601f83011261189b575f80fd5b8135818111156118a9575f80fd5b8660208260061b85010111156118bd575f80fd5b60209290920196919550909350505050565b6001600160401b038116811461087e575f80fd5b5f602082840312156118f3575f80fd5b81356115ca816118cf565b6001600160801b038116811461087e575f80fd5b5f805f8060808587031215611925575f80fd5b845193506020850151611937816118fe565b6040860151909350611948816118fe565b6060860151909250611959816118fe565b939692955090935050565b5f60208284031215611974575f80fd5b6115ca826115e7565b5f6020828403121561198d575f80fd5b81356115ca816118fe565b634e487b7160e01b5f52603260045260245ffd5b5f8135610a018161159e565b81356119c38161159e565b63ffffffff8116905081548163ffffffff19821617835560208401356119e8816118cf565b6bffffffffffffffff000000008160201b16905080836bffffffffffffffffffffffff198416171784556040850135611a20816118cf565b67ffffffffffffffff60601b606091821b166001600160a01b03199390931693909317808217831785559285013591611a588361159e565b63ffffffff60a01b1993909316179190911760a09190911b63ffffffff60a01b16178155611aaf611a8b608084016119ac565b82805463ffffffff60c01b191660c09290921b63ffffffff60c01b16919091179055565b5050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610a0157610a01611ab3565b634e487b7160e01b5f52601260045260245ffd5b5f82611b0057611b00611ade565b500490565b80820180821115610a0157610a01611ab3565b6001600160781b03818116838216028082169190828114611b3b57611b3b611ab3565b505092915050565b5f8085851115611b51575f80fd5b83861115611b5d575f80fd5b5050820193919092039150565b5f82611b7857611b78611ade565b500690565b81810381811115610a0157610a01611ab3565b6001600160401b03828116828216039080821115610b8757610b87611ab3565b6001600160401b03818116838216028082169190828114611b3b57611b3b611ab3565b5f6001600160401b0380841680611bec57611bec611ade565b92169190910492915050565b6001600160401b03818116838216019080821115610b8757610b87611ab3565b6001600160f01b03198135818116916002851015611b3b5760029490940360031b84901b1690921692915050565b6001600160e01b03198135818116916004851015611b3b5760049490940360031b84901b1690921692915050565b6001600160c01b03198135818116916008851015611b3b5760089490940360031b84901b169092169291505056fea26469706673582212206a66cfa51da2f6356feddaf18da8eae1c515c3f95431ba14b3bec7162938943a64736f6c63430008160033","sourceMap":"902:10996:61:-:0;;;3122:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3191:10;;1269:95:100;;1322:31;;-1:-1:-1;;;1322:31:100;;1350:1;1322:31;;;506:51:122;479:18;;1322:31:100;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;3213:24:61::1;::::0;;::::1;;::::0;3247:40:::1;::::0;902:10996;;2912:187:100;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:100;;;-1:-1:-1;;;;;;3020:17:100;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;14:341:122:-;92:6;100;153:2;141:9;132:7;128:23;124:32;121:52;;;169:1;166;159:12;121:52;201:9;195:16;251:10;244:5;240:22;233:5;230:33;220:61;;277:1;274;267:12;220:61;345:2;330:18;;;;324:25;300:5;;324:25;;-1:-1:-1;;;14:341:122:o;360:203::-;902:10996:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106100e7575f3560e01c80638da5cb5b11610087578063de0a93c311610057578063de0a93c3146102e4578063df2b057e14610329578063f2fde38b1461033c578063f5ff608f1461035b575f80fd5b80638da5cb5b1461026d5780639ac23d2814610293578063bbc5a33b146102b2578063d358b300146102c5575f80fd5b806339f26dfc116100c257806339f26dfc146101fb57806354fd4d501461021a578063715018a61461023a5780637bfa20a91461024e575f80fd5b806301e33667146100f257806310b65f76146101135780632565c24514610157575f80fd5b366100ee57005b5f80fd5b3480156100fd575f80fd5b5061011161010c366004611565565b61037a565b005b34801561011e575f80fd5b5061014461012d3660046115af565b63ffffffff165f9081526001602052604090205490565b6040519081526020015b60405180910390f35b348015610162575f80fd5b506101bc6101713660046115af565b60036020525f908152604090205463ffffffff808216916001600160401b036401000000008204811692600160601b830490911691600160a01b8104821691600160c01b9091041685565b6040805163ffffffff96871681526001600160401b0395861660208201529390941693830193909352831660608201529116608082015260a00161014e565b348015610206575f80fd5b506101116102153660046115f8565b610392565b348015610225575f80fd5b5060408051600180825260208201520161014e565b348015610245575f80fd5b506101116103e4565b348015610259575f80fd5b50610144610268366004611692565b6103f7565b348015610278575f80fd5b505f546040516001600160a01b03909116815260200161014e565b34801561029e575f80fd5b506101116102ad3660046116f8565b61057e565b6101446102c03660046117b4565b610622565b3480156102d0575f80fd5b506101446102df3660046117b4565b61063c565b3480156102ef575f80fd5b50600254604080516001600160781b038084168252600160781b8404166020820152600160f01b90920461ffff169082015260600161014e565b610144610337366004611692565b61082e565b348015610347575f80fd5b50610111610356366004611848565b610844565b348015610366575f80fd5b50610111610375366004611861565b610881565b6103826108fa565b61038d838383610926565b505050565b61039a6108fa565b6002805461ffff909216600160f01b026001600160f01b036001600160781b03948516600160781b026001600160f01b031990941694909516939093179190911792909216179055565b6103ec6108fa565b6103f55f610949565b565b5f61040560208501856118e3565b6001600160401b03165f0361044b5761042460408601602087016115af565b60405163680489c560e11b815263ffffffff90911660048201526024015b60405180910390fd5b6104558383610998565b505f61047861046a60a08801608089016118e3565b6001600160401b0316610a07565b90505f806104896020890189611848565b6001600160a01b03166388a4124c6104a760408b0160208c016115af565b856104b560208c018c6118e3565b6040516001600160e01b031960e086901b16815263ffffffff93909316600484015260248301919091526001600160401b03166044820152606401608060405180830381865afa15801561050b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061052f9190611912565b9350505091506105728288602001602081019061054c9190611964565b61055c60c08c0160a08d01611964565b61056c60608c0160408d0161197d565b85610a14565b98975050505050505050565b6105866108fa565b8281146105a6576040516316a9d98760e31b815260040160405180910390fd5b5f5b8381101561061b578282828181106105c2576105c2611998565b905060a0020160035f8787858181106105dd576105dd611998565b90506020020160208101906105f291906115af565b63ffffffff16815260208101919091526040015f2061061182826119b8565b50506001016105a8565b5050505050565b5f61063187878787878761063c565b979650505050505050565b5f61064a60208701876118e3565b6001600160401b03165f0361069a5760405163680489c560e11b815263ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166004820152602401610442565b6106a48383610998565b505f6106b961046a60608a0160408b016118e3565b90505f806106ca60208b018b611848565b6001600160a01b03166388a4124c7f00000000000000000000000000000000000000000000000000000000000000008561070760208e018e6118e3565b6040516001600160e01b031960e086901b16815263ffffffff93909316600484015260248301919091526001600160401b03166044820152606401608060405180830381865afa15801561075d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107819190611912565b9350505091505f6107928989610ae5565b90505f6001600160801b0383166107c97f000000000000000000000000000000000000000000000000000000000000000084611ac7565b6107d39190611af2565b905061081e6107e28286611b05565b6107f260408e0160208f01611964565b8e60600160208101906108059190611964565b8e6040016020810190610818919061197d565b87610a14565b9c9b505050505050505050505050565b5f61083b858585856103f7565b95945050505050565b61084c6108fa565b6001600160a01b03811661087557604051631e4fbdf760e01b81525f6004820152602401610442565b61087e81610949565b50565b6108896108fa565b5f5b8181101561038d578282828181106108a5576108a5611998565b9050604002016020013560015f015f8585858181106108c6576108c6611998565b6108dc92602060409092020190810191506115af565b63ffffffff16815260208101919091526040015f205560010161088b565b5f546001600160a01b031633146103f55760405163118cdaa760e01b8152336004820152602401610442565b6001600160a01b03831661093e5761038d8282610b8e565b61038d838383610c37565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f8082156109d9575f806109ad868685610c72565b604051637085244b60e01b815260ff851660048201529096509294508593505060249091019050610442565b8083146109fc5760405163013adb8360e21b815260048101829052602401610442565b5f9150505b92915050565b5f610a0182610120610ccb565b5f8061ffff861615610a265785610a28565b845b90505f612710610a3c61ffff84168a611ac7565b610a469190611af2565b90506001600160801b0384161580610a6557506001600160801b038516155b15610a7357915061083b9050565b5f846001600160801b03167f0000000000000000000000000000000000000000000000000000000000000000876001600160801b0316610ab39190611ac7565b610abd9190611af2565b610ac7908a611b05565b9050818111610ad65781610ad8565b805b9998505050505050505050565b5f80610af48484610d2f610ef0565b6002548151919250610b15916001600160781b039091169061ffff16611b18565b6001600160781b03169150806020015115610b5d5760025461271090610b4690600160f01b900461ffff1684611ac7565b610b509190611af2565b610b5a9083611b05565b91505b806040015115610b8757600254610b8490600160781b90046001600160781b031683611b05565b91505b5092915050565b6001600160a01b038216610bb5576040516306b7a93160e41b815260040160405180910390fd5b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114610bfe576040519150601f19603f3d011682016040523d82523d5f602084013e610c03565b606091505b505090508061038d57604051631196f20d60e21b81526001600160a01b038416600482015260248101839052604401610442565b6001600160a01b038216610c5e576040516306b7a93160e41b815260040160405180910390fd5b61038d6001600160a01b03841683836113de565b5f36816001840181610c85888884611430565b6002830192909150610c9d9089908990600301611456565b94506002820161ffff82168301610cb681838b8d611b43565b979b909a50969850505061ffff160193505050565b5f80610cd8604185611ac7565b9050610ce5602082611b6a565b15610d0d57610cf5602082611b6a565b610cff9082611b7d565b610d0a906020611b05565b90505b80610d1a84610104611b05565b610d249190611b05565b610b84906020611b05565b610d3b6001858361147a565b610d4860018560026114a2565b15610eea5763ffffffff8085165f90815260036020908152604091829020825160a081018452905480851682526001600160401b036401000000008204811693830193909352600160601b810490921692810192909252600160a01b810483166060830152600160c01b90049091166080820152828415610e6a5781602001516001600160401b0316846001600160401b03161115610e2757815160208301516103e89163ffffffff1690610dfd9087611b90565b610e079190611bb0565b610e119190611bd3565b8260400151610e209190611bf8565b9050610e6a565b6103e8825f015163ffffffff16858460200151610e449190611b90565b610e4e9190611bb0565b610e589190611bd3565b8260400151610e679190611b90565b90505b42826060015163ffffffff1682610e819190611bf8565b6001600160401b03161080610eb257506080820151610ea69063ffffffff1642611b05565b816001600160401b0316115b15610ee757604051630c5a8d2360e01b815263ffffffff871660048201526001600160401b0382166024820152604401610442565b50505b50505050565b604080516060810182525f808252602082018190529181018290529080858186610f1b826002611b05565b92610f2893929190611b43565b610f3191611c18565b60f01c9050610f41600283611b05565b915061ffff8116600114610f685760405163a9146eeb60e01b815260040160405180910390fd5b610f73600283611b05565b91505f868387610f84826002611b05565b92610f9193929190611b43565b610f9a91611c18565b60f01c9050610faa600284611b05565b92508061ffff165f03610fd0576040516387a7f37960e01b815260040160405180910390fd5b61ffff168352505f5b825f015161ffff168161ffff1610156111cf575f868684818110610fff57610fff611998565b919091013560f81c91506110169050600184611b05565b925060ff811660011461103c5760405163a9146eeb60e01b815260040160405180910390fd5b611047600284611b05565b92505f878488611058826002611b05565b9261106593929190611b43565b61106e91611c18565b60f01c905061107e600285611b05565b93505f1961ffff8216016111ac575f88858961109b826002611b05565b926110a893929190611b43565b6110b191611c18565b60f01c90506110c1600286611b05565b9450845f8a828b6110d3826004611b05565b926110e093929190611b43565b6110e991611c46565b60e01c90506110f9600483611b05565b91505f8b8b8481811061110e5761110e611998565b600192013560f81c8214925061112691905084611b05565b92505f8c848d611137826008611b05565b9261114493929190611b43565b61114d91611c74565b60c01c90506111628383835f8f63ffffffff16565b508a925061117791505061ffff831687611b05565b1115611196576040516387a7f37960e01b815260040160405180910390fd5b6111a461ffff821686611b05565b9450506111c5565b60405163b968846160e01b815260040160405180910390fd5b5050600101610fd9565b50838110156113b6575f8585838181106111eb576111eb611998565b919091013560f81c91506112029050600183611b05565b915060ff81166001146112285760405163a9146eeb60e01b815260040160405180910390fd5b5f868387611237826002611b05565b9261124493929190611b43565b61124d91611c18565b60f01c905061125d600284611b05565b925061ffff81166001146112845760405163b968846160e01b815260040160405180910390fd5b5f87878581811061129757611297611998565b919091013560f81c91506112ae9050600185611b05565b935060ff81166112c457600160208601526112f6565b5f1960ff8216016112db57600160408601526112f6565b60011960ff8216016111ac5760016020860181905260408601525b5f888589611305826004611b05565b9261131293929190611b43565b61131b91611c46565b60e01c905061132b600486611b05565b94505f89898781811061134057611340611998565b600192013560f81c8214925061135891905087611b05565b95505f8a878b611369826008611b05565b9261137693929190611b43565b61137f91611c74565b60c01c905061138f600888611b05565b96506113a283838360018d63ffffffff16565b6113ad601688611b05565b96505050505050505b8084146113d6576040516387a7f37960e01b815260040160405180910390fd5b509392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261038d9084906114cf565b5f6002820161144181848688611b43565b61144a91611c18565b60f01c95945050505050565b5f83838381811061146957611469611998565b919091013560f81c95945050505050565b6114858383836114a2565b61038d576040516350fae9eb60e01b815260040160405180910390fd5b63ffffffff8083165f9081526020859052604081205490916114c79190849061153b16565b949350505050565b5f8060205f8451602086015f885af1806114ee576040513d5f823e3d81fd5b50505f513d91508115611505578060011415611512565b6001600160a01b0384163b155b15610eea57604051635274afe760e01b81526001600160a01b0385166004820152602401610442565b600160ff919091161b16151590565b80356001600160a01b0381168114611560575f80fd5b919050565b5f805f60608486031215611577575f80fd5b6115808461154a565b925061158e6020850161154a565b9150604084013590509250925092565b63ffffffff8116811461087e575f80fd5b5f602082840312156115bf575f80fd5b81356115ca8161159e565b9392505050565b80356001600160781b0381168114611560575f80fd5b803561ffff81168114611560575f80fd5b5f805f6060848603121561160a575f80fd5b611613846115d1565b9250611621602085016115d1565b915061162f604085016115e7565b90509250925092565b5f60608284031215611648575f80fd5b50919050565b5f8083601f84011261165e575f80fd5b5081356001600160401b03811115611674575f80fd5b60208301915083602082850101111561168b575f80fd5b9250929050565b5f805f808486036101408112156116a7575f80fd5b60c08112156116b4575f80fd5b508493506116c58660c08701611638565b92506101208501356001600160401b038111156116e0575f80fd5b6116ec8782880161164e565b95989497509550505050565b5f805f806040858703121561170b575f80fd5b84356001600160401b0380821115611721575f80fd5b818701915087601f830112611734575f80fd5b813581811115611742575f80fd5b8860208260051b8501011115611756575f80fd5b602092830196509450908601359080821115611770575f80fd5b818701915087601f830112611783575f80fd5b813581811115611791575f80fd5b88602060a0830285010111156117a5575f80fd5b95989497505060200194505050565b5f805f805f808688036101208112156117cb575f80fd5b60808112156117d8575f80fd5b508695506117e98860808901611638565b945060e08701356001600160401b0380821115611804575f80fd5b6118108a838b0161164e565b9096509450610100890135915080821115611829575f80fd5b5061183689828a0161164e565b979a9699509497509295939492505050565b5f60208284031215611858575f80fd5b6115ca8261154a565b5f8060208385031215611872575f80fd5b82356001600160401b0380821115611888575f80fd5b818501915085601f83011261189b575f80fd5b8135818111156118a9575f80fd5b8660208260061b85010111156118bd575f80fd5b60209290920196919550909350505050565b6001600160401b038116811461087e575f80fd5b5f602082840312156118f3575f80fd5b81356115ca816118cf565b6001600160801b038116811461087e575f80fd5b5f805f8060808587031215611925575f80fd5b845193506020850151611937816118fe565b6040860151909350611948816118fe565b6060860151909250611959816118fe565b939692955090935050565b5f60208284031215611974575f80fd5b6115ca826115e7565b5f6020828403121561198d575f80fd5b81356115ca816118fe565b634e487b7160e01b5f52603260045260245ffd5b5f8135610a018161159e565b81356119c38161159e565b63ffffffff8116905081548163ffffffff19821617835560208401356119e8816118cf565b6bffffffffffffffff000000008160201b16905080836bffffffffffffffffffffffff198416171784556040850135611a20816118cf565b67ffffffffffffffff60601b606091821b166001600160a01b03199390931693909317808217831785559285013591611a588361159e565b63ffffffff60a01b1993909316179190911760a09190911b63ffffffff60a01b16178155611aaf611a8b608084016119ac565b82805463ffffffff60c01b191660c09290921b63ffffffff60c01b16919091179055565b5050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610a0157610a01611ab3565b634e487b7160e01b5f52601260045260245ffd5b5f82611b0057611b00611ade565b500490565b80820180821115610a0157610a01611ab3565b6001600160781b03818116838216028082169190828114611b3b57611b3b611ab3565b505092915050565b5f8085851115611b51575f80fd5b83861115611b5d575f80fd5b5050820193919092039150565b5f82611b7857611b78611ade565b500690565b81810381811115610a0157610a01611ab3565b6001600160401b03828116828216039080821115610b8757610b87611ab3565b6001600160401b03818116838216028082169190828114611b3b57611b3b611ab3565b5f6001600160401b0380841680611bec57611bec611ade565b92169190910492915050565b6001600160401b03818116838216019080821115610b8757610b87611ab3565b6001600160f01b03198135818116916002851015611b3b5760029490940360031b84901b1690921692915050565b6001600160e01b03198135818116916004851015611b3b5760049490940360031b84901b1690921692915050565b6001600160c01b03198135818116916008851015611b3b5760089490940360031b84901b169092169291505056fea26469706673582212206a66cfa51da2f6356feddaf18da8eae1c515c3f95431ba14b3bec7162938943a64736f6c63430008160033","sourceMap":"902:10996:61:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4159:203;;;;;;;;;;-1:-1:-1;4159:203:61;;;;;:::i;:::-;;:::i;:::-;;3637:145;;;;;;;;;;-1:-1:-1;3637:145:61;;;;;:::i;:::-;3737:38;;3709:9;3737:38;;;:17;:38;;;;;;;3637:145;;;;1077:25:122;;;1065:2;1050:18;3637:145:61;;;;;;;;3047:68;;;;;;;;;;-1:-1:-1;3047:68:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3047:68:61;;;;;;-1:-1:-1;;;3047:68:61;;;;;;-1:-1:-1;;;3047:68:61;;;;;-1:-1:-1;;;3047:68:61;;;;;;;;;;1372:10:122;1409:15;;;1391:34;;-1:-1:-1;;;;;1498:15:122;;;1493:2;1478:18;;1471:43;1550:15;;;;1530:18;;;1523:43;;;;1602:15;;1597:2;1582:18;;1575:43;1655:15;;1649:3;1634:19;;1627:44;1349:3;1334:19;3047:68:61;1113:564:122;4368:366:61;;;;;;;;;;-1:-1:-1;4368:366:61;;;;;:::i;:::-;;:::i;11708:99::-;;;;;;;;;;-1:-1:-1;11708:99:61;;;11795:1;2542:50:122;;;2623:2;2608:18;;2601:45;2515:18;11708:99:61;2374:278:122;2293:101:100;;;;;;;;;;;;;:::i;5902:814:61:-;;;;;;;;;;-1:-1:-1;5902:814:61;;;;;:::i;:::-;;:::i;1638:85:100:-;;;;;;;;;;-1:-1:-1;1684:7:100;1710:6;1638:85;;-1:-1:-1;;;;;1710:6:100;;;4191:51:122;;4179:2;4164:18;1638:85:100;4045:203:122;3788:365:61;;;;;;;;;;-1:-1:-1;3788:365:61;;;;;:::i;:::-;;:::i;5410:282::-;;;;;;:::i;:::-;;:::i;6722:1028::-;;;;;;;;;;-1:-1:-1;6722:1028:61;;;;;:::i;:::-;;:::i;4740:173::-;;;;;;;;;;-1:-1:-1;4829:22:61;;4740:173;;;-1:-1:-1;;;;;4829:22:61;;;6660:34:122;;-1:-1:-1;;;4853:28:61;;;6725:2:122;6710:18;;6703:43;-1:-1:-1;;;4883:22:61;;;;;6762:18:122;;;6755:47;6597:2;6582:18;4740:173:61;6409:399:122;5167:237:61;;;;;;:::i;:::-;;:::i;2543:215:100:-;;;;;;;;;;-1:-1:-1;2543:215:100;;;;;:::i;:::-;;:::i;3383:248:61:-;;;;;;;;;;-1:-1:-1;3383:248:61;;;;;:::i;:::-;;:::i;4159:203::-;1531:13:100;:11;:13::i;:::-;4311:44:61::1;4334:6;4342:3;4347:7;4311:22;:44::i;:::-;4159:203:::0;;;:::o;4368:366::-;1531:13:100;:11;:13::i;:::-;4551:22:61::1;:48:::0;;4679::::1;::::0;;::::1;-1:-1:-1::0;;;4679:48:61::1;-1:-1:-1::0;;;;;;;;;;4609:60:61;;::::1;-1:-1:-1::0;;;4609:60:61::1;-1:-1:-1::0;;;;;;4609:60:61;;;4551:48;;;::::1;4609:60:::0;;;;;;;::::1;4679:48:::0;;;::::1;;::::0;;4368:366::o;2293:101:100:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;5902:814:61:-;6058:7;6081:14;;;;:10;:14;:::i;:::-;-1:-1:-1;;;;;6081:19:61;6099:1;6081:19;6077:67;;6129:14;;;;;;;;:::i;:::-;6109:35;;-1:-1:-1;;;6109:35:61;;8228:10:122;8216:23;;;6109:35:61;;;8198:42:122;8171:18;;6109:35:61;;;;;;;;6077:67;6155:27;6173:8;;6155:17;:27::i;:::-;-1:-1:-1;6213:20:61;6236:32;6253:14;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6236:32:61;:16;:32::i;:::-;6213:55;-1:-1:-1;6279:11:61;;6342:17;;;;:7;:17;:::i;:::-;-1:-1:-1;;;;;6322:55:61;;6391:14;;;;;;;;:::i;:::-;6419:12;6445:14;;;;:10;:14;:::i;:::-;6322:147;;-1:-1:-1;;;;;;6322:147:61;;;;;;;;8468:23:122;;;;6322:147:61;;;8450:42:122;8508:18;;;8501:34;;;;-1:-1:-1;;;;;8571:31:122;8551:18;;;8544:59;8423:18;;6322:147:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6278:191;;;;;;6498:211;6529:3;6550:10;:24;;;;;;;;;;:::i;:::-;6592:28;;;;;;;;:::i;:::-;6638:25;;;;;;;;:::i;:::-;6681:14;6498:13;:211::i;:::-;6479:230;5902:814;-1:-1:-1;;;;;;;;5902:814:61:o;3788:365::-;1531:13:100;:11;:13::i;:::-;3944:38:61;;::::1;3940:77;;3991:26;;-1:-1:-1::0;;;3991:26:61::1;;;;;;;;;;;3940:77;4032:9;4027:120;4047:18:::0;;::::1;4027:120;;;4120:13;;4134:1;4120:16;;;;;;;:::i;:::-;;;;;;4086:19;:31;4106:7;;4114:1;4106:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;4086:31;;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;4086:31:61;:50:::1;::::0;:31;:50:::1;:::i;:::-;-1:-1:-1::0;;4067:3:61::1;;4027:120;;;;3788:365:::0;;;;:::o;5410:282::-;5613:11;5642:43;5649:7;5658:10;5670:4;;5676:8;;5642:6;:43::i;:::-;5636:49;5410:282;-1:-1:-1;;;;;;;5410:282:61:o;6722:1028::-;6914:7;6937:14;;;;:10;:14;:::i;:::-;-1:-1:-1;;;;;6937:19:61;6955:1;6937:19;6933:63;;6965:31;;-1:-1:-1;;;6965:31:61;;8228:10:122;6985::61;8216:23:122;6965:31:61;;;8198:42:122;8171:18;;6965:31:61;8054:192:122;6933:63:61;7007:27;7025:8;;7007:17;:27::i;:::-;-1:-1:-1;7065:20:61;7088:36;7109:14;;;;;;;;:::i;7088:36::-;7065:59;-1:-1:-1;7135:11:61;;7198:17;;;;:7;:17;:::i;:::-;-1:-1:-1;;;;;7178:55:61;;7247:10;7271:12;7297:14;;;;:10;:14;:::i;:::-;7178:143;;-1:-1:-1;;;;;;7178:143:61;;;;;;;;8468:23:122;;;;7178:143:61;;;8450:42:122;8508:18;;;8501:34;;;;-1:-1:-1;;;;;8571:31:122;8551:18;;;8544:59;8423:18;;7178:143:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7134:187;;;;;;7376:17;7396:21;7412:4;;7396:15;:21::i;:::-;7376:41;-1:-1:-1;7427:14:61;-1:-1:-1;;;;;7444:49:61;;7445:30;7457:18;7376:41;7445:30;:::i;:::-;7444:49;;;;:::i;:::-;7427:66;-1:-1:-1;7523:220:61;7554:12;7427:66;7554:3;:12;:::i;:::-;7584:24;;;;;;;;:::i;:::-;7626:7;:28;;;;;;;;;;:::i;:::-;7672:10;:25;;;;;;;;;;:::i;:::-;7715:14;7523:13;:220::i;:::-;7504:239;6722:1028;-1:-1:-1;;;;;;;;;;;;6722:1028:61:o;5167:237::-;5334:7;5360:37;5367:7;5376:10;5388:8;;5360:6;:37::i;:::-;5353:44;5167:237;-1:-1:-1;;;;;5167:237:61:o;2543:215:100:-;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:100;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:100;;2700:1:::1;2672:31;::::0;::::1;4191:51:122::0;4164:18;;2672:31:100::1;4045:203:122::0;2623:91:100::1;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;3383:248:61:-;1531:13:100;:11;:13::i;:::-;3493:9:61::1;3488:137;3508:18:::0;;::::1;3488:137;;;3598:7;;3606:1;3598:10;;;;;;;:::i;:::-;;;;;;:16;;;3547:17;:26;;:48;3574:7;;3582:1;3574:10;;;;;;;:::i;:::-;:20;::::0;::::1;:10;::::0;;::::1;;:20:::0;;::::1;::::0;-1:-1:-1;3574:20:61::1;:::i;:::-;3547:48;;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;3547:48:61;:67;3528:3:::1;;3488:137;;1796:162:100::0;1684:7;1710:6;-1:-1:-1;;;;;1710:6:100;735:10:110;1855:23:100;1851:101;;1901:40;;-1:-1:-1;;;1901:40:100;;735:10:110;1901:40:100;;;4191:51:122;4164:18;;1901:40:100;4045:203:122;896:222:46;-1:-1:-1;;;;;987:22:46;;983:129;;1025:19;1032:3;1037:6;1025;:19::i;983:129::-;1075:26;1081:6;1089:3;1094:6;1075:5;:26::i;2912:187:100:-;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:100;;;-1:-1:-1;;;;;;3020:17:100;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;9385:479:61:-;9460:7;;9510:24;;9503:220;;9551:16;;9592:30;:8;;9615:6;9592:22;:30::i;:::-;9675:37;;-1:-1:-1;;;9675:37:61;;12391:4:122;12379:17;;9675:37:61;;;12361:36:122;9550:72:61;;-1:-1:-1;9550:72:61;;-1:-1:-1;9550:72:61;;-1:-1:-1;;12334:18:122;;;;;-1:-1:-1;9675:37:61;12219:184:122;9503:220:61;9736:25;;;9732:78;;9770:40;;-1:-1:-1;;;9770:40:61;;;;;1077:25:122;;;1050:18;;9770:40:61;901:207:122;9732:78:61;9828:1;9821:8;;;9385:479;;;;;:::o;7824:164::-;7890:7;7916:65;7955:7;2364:3;7916:38;:65::i;8749:630::-;8933:7;;8975:9;;;;:30;;9001:4;8975:30;;;8987:11;8975:30;8952:53;-1:-1:-1;9016:25:61;9069:5;9045:20;;;;:4;:20;:::i;:::-;9044:30;;;;:::i;:::-;9016:58;-1:-1:-1;;;;;;9088:20:61;;;;:39;;-1:-1:-1;;;;;;9112:15:61;;;9088:39;9084:94;;;9150:17;-1:-1:-1;9143:24:61;;-1:-1:-1;9143:24:61;9084:94;9188:26;9260:15;-1:-1:-1;;;;;9224:51:61;9238:18;9225:10;-1:-1:-1;;;;;9225:31:61;;;;;:::i;:::-;9224:51;;;;:::i;:::-;9217:58;;:4;:58;:::i;:::-;9188:87;;9314:17;9293:18;:38;:79;;9355:17;9293:79;;;9334:18;9293:79;9286:86;8749:630;-1:-1:-1;;;;;;;;;8749:630:61:o;9870:459::-;9939:11;9962:29;9994:52;10016:4;;10022:23;9994:21;:52::i;:::-;10088:22;;10062:23;;9962:84;;-1:-1:-1;10062:48:61;;-1:-1:-1;;;;;10088:22:61;;;;10062:48;;;:::i;:::-;-1:-1:-1;;;;;10056:54:61;;;10124:3;:23;;;10120:102;;;10177:22;;1614:5;;10171:28;;-1:-1:-1;;;10177:22:61;;10170:41;10177:22;10171:3;:28;:::i;:::-;10170:41;;;;:::i;:::-;10163:48;;;;:::i;:::-;;;10120:102;10235:3;:26;;;10231:92;;;10284:28;;10277:35;;-1:-1:-1;;;10284:28:61;;-1:-1:-1;;;;;10284:28:61;10277:35;;:::i;:::-;;;10231:92;9952:377;9870:459;;;;:::o;438:252:46:-;-1:-1:-1;;;;;506:19:46;;502:58;;534:26;;-1:-1:-1;;;534:26:46;;;;;;;;;;;502:58;571:12;589:3;-1:-1:-1;;;;;589:8:46;606:6;589:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;570:48;;;633:7;628:55;;649:34;;-1:-1:-1;;;649:34:46;;-1:-1:-1;;;;;13087:32:122;;649:34:46;;;13069:51:122;13136:18;;;13129:34;;;13042:18;;649:34:46;12895:274:122;696:194:46;-1:-1:-1;;;;;779:19:46;;775:58;;807:26;;-1:-1:-1;;;807:26:46;;;;;;;;;;;775:58;843:40;-1:-1:-1;;;;;843:27:46;;871:3;876:6;843:27;:40::i;6549:769:23:-;6659:16;6677:21;6659:16;6799:1;6789:11;;6659:16;6861:22;:8;;6789:11;6861:14;:22::i;:::-;6907:1;6897:11;;;6847:36;;-1:-1:-1;6968:25:23;;:8;;;;6982:10;;6968:13;:25::i;:::-;6955:38;-1:-1:-1;7139:1:23;7130:10;;7206:13;;;;;7242:31;7206:13;7130:10;7242:8;;:31;:::i;:::-;6549:769;;7233:40;;-1:-1:-1;7233:40:23;;-1:-1:-1;;;7287:14:23;;;;-1:-1:-1;;;6549:769:23:o;8172:571:61:-;8303:7;;8352:29;1975:2;8352:7;:29;:::i;:::-;8322:59;-1:-1:-1;8395:24:61;8417:2;8322:59;8395:24;:::i;:::-;:29;8391:135;;8485:24;8507:2;8485:19;:24;:::i;:::-;8462:48;;:19;:48;:::i;:::-;:53;;8513:2;8462:53;:::i;:::-;8440:75;;8391:135;8712:19;8667:42;8698:11;1919:3;8667:42;:::i;:::-;:64;;;;:::i;:::-;:69;;8734:2;8667:69;:::i;10335:1367::-;10512:55;:17;10546:10;10558:8;10512:33;:55::i;:::-;10581:90;:17;10611:10;579:1:25;10581:29:61;:90::i;:::-;10577:1119;;;10721:31;;;;10687;10721;;;:19;:31;;;;;;;;;10687:65;;;;;;;;;;;;;;-1:-1:-1;;;;;10687:65:61;;;;;;;;;;;;-1:-1:-1;;;10687:65:61;;;;;;;;;;;;-1:-1:-1;;;10687:65:61;;;;;;;;-1:-1:-1;;;10687:65:61;;;;;;;;;10785:20;10819:600;;;;10938:8;:17;;;-1:-1:-1;;;;;10915:40:61;:20;-1:-1:-1;;;;;10915:40:61;;10911:494;;;11106:21;;11085:17;;;;11155:4;;11061:66;;;11062:40;;:20;:40;:::i;:::-;11061:66;;;;:::i;:::-;11060:99;;;;:::i;:::-;11015:8;:18;;;:144;;;;:::i;:::-;10979:180;;10911:494;;;11382:4;11333:8;:21;;;11288:66;;11309:20;11289:8;:17;;;:40;;;;:::i;:::-;11288:66;;;;:::i;:::-;11287:99;;;;:::i;:::-;11242:8;:18;;;:144;;;;:::i;:::-;11206:180;;10911:494;11493:15;11465:8;:25;;;11453:37;;:9;:37;;;;:::i;:::-;-1:-1:-1;;;;;11453:55:61;;:132;;;-1:-1:-1;11558:27:61;;;;11540:45;;;;:15;:45;:::i;:::-;11528:9;-1:-1:-1;;;;;11528:57:61;;11453:132;11432:254;;;11625:46;;-1:-1:-1;;;11625:46:61;;14799:10:122;14787:23;;11625:46:61;;;14769:42:122;-1:-1:-1;;;;;14847:31:122;;14827:18;;;14820:59;14742:18;;11625:46:61;14599:286:122;11432:254:61;10673:1023;;10577:1119;10335:1367;;;;:::o;852:4045:24:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;1166:4:24;-1:-1:-1;1166:4:24;1178:10;-1:-1:-1;1187:1:24;1178:10;:::i;:::-;1166:23;;;;;;;:::i;:::-;1159:31;;;:::i;:::-;1152:39;;;-1:-1:-1;1205:11:24;1215:1;1205:11;;:::i;:::-;;-1:-1:-1;1234:25:24;;;216:1;1234:25;1230:54;;1268:16;;-1:-1:-1;;;1268:16:24;;;;;;;;;;;1230:54;1299:11