diff --git a/audits/PaymentCoordinator - Sigma Prime - May 2024.pdf b/audits/PaymentCoordinator - Sigma Prime - May 2024.pdf new file mode 100644 index 000000000..156efc9e6 Binary files /dev/null and b/audits/PaymentCoordinator - Sigma Prime - May 2024.pdf differ diff --git a/pkg/bindings/PaymentCoordinator/binding.go b/pkg/bindings/PaymentCoordinator/binding.go index 1b2b35550..3f1d3ce02 100644 --- a/pkg/bindings/PaymentCoordinator/binding.go +++ b/pkg/bindings/PaymentCoordinator/binding.go @@ -70,7 +70,7 @@ type IPaymentCoordinatorTokenTreeMerkleLeaf struct { // PaymentCoordinatorMetaData contains all meta data concerning the PaymentCoordinator contract. var PaymentCoordinatorMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_delegationManager\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"_CALCULATION_INTERVAL_SECONDS\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_MAX_PAYMENT_DURATION\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_MAX_RETROACTIVE_LENGTH\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_MAX_FUTURE_LENGTH\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_GENESIS_PAYMENT_TIMESTAMP\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"CALCULATION_INTERVAL_SECONDS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"GENESIS_PAYMENT_TIMESTAMP\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_FUTURE_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_PAYMENT_DURATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_RETROACTIVE_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"activationDelay\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"beaconChainETHStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateEarnerLeafHash\",\"inputs\":[{\"name\":\"leaf\",\"type\":\"tuple\",\"internalType\":\"structIPaymentCoordinator.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"calculateTokenLeafHash\",\"inputs\":[{\"name\":\"leaf\",\"type\":\"tuple\",\"internalType\":\"structIPaymentCoordinator.TokenTreeMerkleLeaf\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"checkClaim\",\"inputs\":[{\"name\":\"claim\",\"type\":\"tuple\",\"internalType\":\"structIPaymentCoordinator.PaymentMerkleClaim\",\"components\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerTreeProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"earnerLeaf\",\"type\":\"tuple\",\"internalType\":\"structIPaymentCoordinator.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"tokenIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"tokenTreeProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"tokenLeaves\",\"type\":\"tuple[]\",\"internalType\":\"structIPaymentCoordinator.TokenTreeMerkleLeaf[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"claimerFor\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"cumulativeClaimed\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currPaymentCalculationEndTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"distributionRoots\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"paymentCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDistributionRootsLength\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRootIndexFromHash\",\"inputs\":[{\"name\":\"rootHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"globalOperatorCommissionBips\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_paymentUpdater\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_activationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_globalCommissionBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isPayAllForRangeSubmitter\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRangePaymentForAllHash\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRangePaymentHash\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorCommissionBips\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"payAllForRange\",\"inputs\":[{\"name\":\"rangePayments\",\"type\":\"tuple[]\",\"internalType\":\"structIPaymentCoordinator.RangePayment[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIPaymentCoordinator.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"payForRange\",\"inputs\":[{\"name\":\"rangePayments\",\"type\":\"tuple[]\",\"internalType\":\"structIPaymentCoordinator.RangePayment[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIPaymentCoordinator.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paymentNonce\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paymentUpdater\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"processClaim\",\"inputs\":[{\"name\":\"claim\",\"type\":\"tuple\",\"internalType\":\"structIPaymentCoordinator.PaymentMerkleClaim\",\"components\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerTreeProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"earnerLeaf\",\"type\":\"tuple\",\"internalType\":\"structIPaymentCoordinator.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"tokenIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"tokenTreeProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"tokenLeaves\",\"type\":\"tuple[]\",\"internalType\":\"structIPaymentCoordinator.TokenTreeMerkleLeaf[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setActivationDelay\",\"inputs\":[{\"name\":\"_activationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setClaimerFor\",\"inputs\":[{\"name\":\"claimer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGlobalOperatorCommission\",\"inputs\":[{\"name\":\"_globalCommissionBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPayAllForRangeSubmitter\",\"inputs\":[{\"name\":\"_submitter\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_newValue\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPaymentUpdater\",\"inputs\":[{\"name\":\"_paymentUpdater\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"submitRoot\",\"inputs\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"paymentCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"ActivationDelaySet\",\"inputs\":[{\"name\":\"oldActivationDelay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"newActivationDelay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ClaimerForSet\",\"inputs\":[{\"name\":\"earner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldClaimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DistributionRootSubmitted\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"root\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"paymentCalculationEndTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalCommissionBipsSet\",\"inputs\":[{\"name\":\"oldGlobalCommissionBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newGlobalCommissionBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PayAllForRangeSubmitterSet\",\"inputs\":[{\"name\":\"payAllForRangeSubmitter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldValue\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"},{\"name\":\"newValue\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PaymentClaimed\",\"inputs\":[{\"name\":\"root\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"earner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"claimedAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PaymentUpdaterSet\",\"inputs\":[{\"name\":\"oldPaymentUpdater\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPaymentUpdater\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RangePaymentCreated\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"paymentNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rangePaymentHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rangePayment\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIPaymentCoordinator.RangePayment\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIPaymentCoordinator.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RangePaymentForAllCreated\",\"inputs\":[{\"name\":\"submitter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"paymentNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rangePaymentHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rangePayment\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIPaymentCoordinator.RangePayment\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIPaymentCoordinator.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", - Bin: "0x6101806040523480156200001257600080fd5b5060405162003e7338038062003e738339810160408190526200003591620002e4565b868686868686866200004885826200037e565b63ffffffff1615620000ed5760405162461bcd60e51b815260206004820152606060248201527f5061796d656e74436f6f7264696e61746f723a2047454e455349535f5041594d60448201527f454e545f54494d455354414d50206d7573742062652061206d756c7469706c6560648201527f206f662043414c43554c4154494f4e5f494e54455256414c5f5345434f4e4453608482015260a4015b60405180910390fd5b620000fc62015180866200037e565b63ffffffff16156200019d5760405162461bcd60e51b815260206004820152605760248201527f5061796d656e74436f6f7264696e61746f723a2043414c43554c4154494f4e5f60448201527f494e54455256414c5f5345434f4e4453206d7573742062652061206d756c746960648201527f706c65206f6620534e415053484f545f434144454e4345000000000000000000608482015260a401620000e4565b6001600160a01b0396871661012052949095166101405263ffffffff92831660805290821660a052811660c05291821660e0521661010052620001df620001f2565b5050466101605250620003b09350505050565b600054610100900460ff16156200025c5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401620000e4565b60005460ff9081161015620002af576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114620002c757600080fd5b50565b805163ffffffff81168114620002df57600080fd5b919050565b600080600080600080600060e0888a0312156200030057600080fd5b87516200030d81620002b1565b60208901519097506200032081620002b1565b95506200033060408901620002ca565b94506200034060608901620002ca565b93506200035060808901620002ca565b92506200036060a08901620002ca565b91506200037060c08901620002ca565b905092959891949750929550565b600063ffffffff80841680620003a457634e487b7160e01b600052601260045260246000fd5b92169190910692915050565b60805160a05160c05160e05161010051610120516101405161016051613a2c620004476000396000611a1701526000818161044f0152612300015260006106e7015260008181610401015261214b01526000818161029401526121e901526000818161042801526120fa0152600081816107210152611ea001526000818161061301528181611f4901526120110152613a2c6000f3fe608060405234801561001057600080fd5b506004361061028a5760003560e01c806367ef85851161015c578063c8371b46116100ce578063ec1680de11610087578063ec1680de14610709578063ee6195971461071c578063f2fde38b14610743578063f698da2514610756578063f8cd84481461075e578063fabc1cbc1461077157600080fd5b8063c8371b461461065b578063d4540a5514610689578063d588cefa1461069c578063e221b245146106bc578063e810ce21146106cf578063ea4d3c9b146106e257600080fd5b8063886f119511610120578063886f1195146105cf5780638da5cb5b146105e25780639104c319146105f35780639d45c2811461060e578063a0169ddd14610635578063b57152841461064857600080fd5b806367ef85851461054f578063715018a61461056657806373f2fbea1461056e5780637b8f8b051461059c578063865c6953146105a457600080fd5b806337838ed011610200578063595c6a67116101b9578063595c6a67146104c15780635971b3f8146104c95780635ac86ab7146104fe5780635c975abb146105215780635e9d83481461052957806366d3b16b1461053c57600080fd5b806337838ed01461042357806339b70e381461044a5780633a8c0786146104715780633ccc861d146104885780633efe1db61461049b57806358baaa3e146104ae57600080fd5b8063149bc87211610252578063149bc8721461035357806318190f53146103745780631b4455161461038757806322f19a641461039a5780632b9f64a4146103bb5780632cfd45eb146103fc57600080fd5b806304a0c5021461028f578063092db007146102d057806310d67a2f146102f8578063136439dd1461030d578063146cd61d14610320575b600080fd5b6102b67f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020015b60405180910390f35b60cb546102e590600160e01b900461ffff1681565b60405161ffff90911681526020016102c7565b61030b6103063660046130e7565b610784565b005b61030b61031b366004613104565b610840565b61034361032e3660046130e7565b60d16020526000908152604090205460ff1681565b60405190151581526020016102c7565b610366610361366004613135565b61097f565b6040519081526020016102c7565b61030b6103823660046130e7565b6109f5565b61030b610395366004613151565b610a06565b6102e56103a83660046131c6565b505060cb54600160e01b900461ffff1690565b6103e46103c93660046130e7565b60cc602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016102c7565b6102b67f000000000000000000000000000000000000000000000000000000000000000081565b6102b67f000000000000000000000000000000000000000000000000000000000000000081565b6103e47f000000000000000000000000000000000000000000000000000000000000000081565b60cb546102b690600160a01b900463ffffffff1681565b61030b610496366004613212565b610bda565b61030b6104a9366004613272565b610f8f565b61030b6104bc36600461329e565b61128f565b61030b6112a0565b6104dc6104d7366004613104565b611367565b6040805193845263ffffffff92831660208501529116908201526060016102c7565b61034361050c3660046132b9565b606654600160ff9092169190911b9081161490565b606654610366565b6103436105373660046132dc565b6113a7565b60cb546103e4906001600160a01b031681565b60cb546102b690600160c01b900463ffffffff1681565b61030b611425565b61034361057c366004613311565b60d060209081526000928352604080842090915290825290205460ff1681565b60ca54610366565b6103666105b23660046131c6565b60cd60209081526000928352604080842090915290825290205481565b6065546103e4906001600160a01b031681565b6033546001600160a01b03166103e4565b6103e473beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102b67f000000000000000000000000000000000000000000000000000000000000000081565b61030b6106433660046130e7565b611439565b61030b610656366004613151565b611498565b610343610669366004613311565b60cf60209081526000928352604080842090915290825290205460ff1681565b61030b61069736600461335a565b6116e0565b6103666106aa3660046130e7565b60ce6020526000908152604090205481565b61030b6106ca3660046133cd565b611828565b6102b66106dd366004613104565b611839565b6103e47f000000000000000000000000000000000000000000000000000000000000000081565b61030b6107173660046133f6565b61191b565b6102b67f000000000000000000000000000000000000000000000000000000000000000081565b61030b6107513660046130e7565b61199d565b610366611a13565b61036661076c366004613135565b611a51565b61030b61077f366004613104565b611a62565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fb9190613424565b6001600160a01b0316336001600160a01b0316146108345760405162461bcd60e51b815260040161082b90613441565b60405180910390fd5b61083d81611bbe565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610888573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ac919061348b565b6108c85760405162461bcd60e51b815260040161082b906134a8565b606654818116146109415760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161082b565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60008061098f60208401846130e7565b83602001356040516020016109d89392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b6109fd611cb5565b61083d81611d0f565b60665460009060019081161415610a2f5760405162461bcd60e51b815260040161082b906134f0565b60026097541415610a525760405162461bcd60e51b815260040161082b90613527565b600260975560005b82811015610bcf5736848483818110610a7557610a7561355e565b9050602002810190610a879190613574565b33600081815260ce60209081526040808320549051949550939192610ab292909185918791016136b9565b60408051601f19818403018152918152815160209283012033600090815260cf845282812082825290935291205490915060ff1615610b035760405162461bcd60e51b815260040161082b906136e9565b610b0c83611d6b565b33600090815260cf602090815260408083208484529091529020805460ff19166001908117909155610b3f908390613758565b33600081815260ce602052604090819020929092559051829184917f2a0659fa4c38e0075469a0e0dd737e045dc316ffd6cb6e68755c119ee0882aea90610b87908890613770565b60405180910390a4610bb9333060408601803590610ba890602089016130e7565b6001600160a01b03169291906124a6565b5050508080610bc790613783565b915050610a5a565b505060016097555050565b60665460029060049081161415610c035760405162461bcd60e51b815260040161082b906134f0565b60026097541415610c265760405162461bcd60e51b815260040161082b90613527565b6002609755600060ca610c3c602086018661329e565b63ffffffff1681548110610c5257610c5261355e565b6000918252602091829020604080516060810182526002909302909101805483526001015463ffffffff808216948401949094526401000000009004909216918101919091529050610ca48482612517565b6000610cb660808601606087016130e7565b6001600160a01b03808216600090815260cc60205260409020549192501680610cdc5750805b336001600160a01b03821614610d5a5760405162461bcd60e51b815260206004820152603c60248201527f5061796d656e74436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063616c6c6572206973206e6f742076616c696420636c61696d657200000000606482015260840161082b565b60005b610d6a60a088018861379e565b9050811015610f815736610d8160e08901896137ef565b83818110610d9157610d9161355e565b6001600160a01b038716600090815260cd602090815260408083209302949094019450929091508290610dc6908501856130e7565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905080826020013511610e805760405162461bcd60e51b815260206004820152605560248201527f5061796d656e74436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063756d756c61746976654561726e696e6773206d75737420626520677420746064820152741a185b8818dd5b5d5b185d1a5d9950db185a5b5959605a1b608482015260a40161082b565b6000610e90826020850135613839565b6001600160a01b038716600090815260cd60209081526040822092935085018035929190610ebe90876130e7565b6001600160a01b0316815260208082019290925260400160002091909155610f00908a908390610ef0908701876130e7565b6001600160a01b031691906127c0565b86516001600160a01b03808b1691878216918916907fbff1e5a32b3f6d3b3c0a7e675ead2091fea820852f35a77abdd6d2420bec477890610f4460208901896130e7565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a45050508080610f7990613783565b915050610d5d565b505060016097555050505050565b60665460039060089081161415610fb85760405162461bcd60e51b815260040161082b906134f0565b60cb546001600160a01b0316331461102f5760405162461bcd60e51b815260206004820152603460248201527f5061796d656e74436f6f7264696e61746f723a2063616c6c6572206973206e6f6044820152733a103a3432903830bcb6b2b73a2ab83230ba32b960611b606482015260840161082b565b60cb5463ffffffff600160c01b9091048116908316116110cb5760405162461bcd60e51b815260206004820152604b60248201527f5061796d656e74436f6f7264696e61746f722e7375626d6974526f6f743a206e60448201527f657720726f6f74206d75737420626520666f72206e657765722063616c63756c60648201526a185d1959081c195c9a5bd960aa1b608482015260a40161082b565b428263ffffffff16106111645760405162461bcd60e51b815260206004820152605560248201527f5061796d656e74436f6f7264696e61746f722e7375626d6974526f6f743a207060448201527f61796d656e7443616c63756c6174696f6e456e6454696d657374616d702063616064820152746e6e6f7420626520696e207468652066757475726560581b608482015260a40161082b565b60ca5460cb5460009061118490600160a01b900463ffffffff1642613850565b6040805160608101825287815263ffffffff878116602080840182815286841685870181815260ca805460018101825560009190915296517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029098029788015591517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee29096018054925196861667ffffffffffffffff19909316929092176401000000009686169690960295909517905560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b611297611cb5565b61083d816127f0565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156112e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130c919061348b565b6113285760405162461bcd60e51b815260040161082b906134a8565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60ca818154811061137757600080fd5b60009182526020909120600290910201805460019091015490915063ffffffff8082169164010000000090041683565b600061141d8260ca6113bc602083018361329e565b63ffffffff16815481106113d2576113d261355e565b6000918252602091829020604080516060810182526002909302909101805483526001015463ffffffff80821694840194909452640100000000900490921691810191909152612517565b506001919050565b61142d611cb5565b6114376000612861565b565b33600081815260cc602052604080822080546001600160a01b031981166001600160a01b038781169182179093559251911692839185917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca31291a4505050565b606654600190600290811614156114c15760405162461bcd60e51b815260040161082b906134f0565b33600090815260d1602052604090205460ff166115515760405162461bcd60e51b815260206004820152604260248201527f5061796d656e74436f6f7264696e61746f723a2063616c6c6572206973206e6f60448201527f7420612076616c696420706179416c6c466f7252616e6765207375626d69747460648201526132b960f11b608482015260a40161082b565b600260975414156115745760405162461bcd60e51b815260040161082b90613527565b600260975560005b82811015610bcf57368484838181106115975761159761355e565b90506020028101906115a99190613574565b33600081815260ce602090815260408083205490519495509391926115d492909185918791016136b9565b60408051601f19818403018152918152815160209283012033600090815260d0845282812082825290935291205490915060ff16156116255760405162461bcd60e51b815260040161082b906136e9565b61162e83611d6b565b33600090815260d0602090815260408083208484529091529020805460ff19166001908117909155611661908390613758565b33600081815260ce602052604090819020929092559051829184917fbc0782940ec5871f66c5490ef957f44d19a9adac1dac18b946ad0dd6579c30d6906116a9908890613770565b60405180910390a46116ca333060408601803590610ba890602089016130e7565b50505080806116d890613783565b91505061157c565b600054610100900460ff16158080156117005750600054600160ff909116105b8061171a5750303b15801561171a575060005460ff166001145b61177d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161082b565b6000805460ff1916600117905580156117a0576000805461ff0019166101001790555b6117a86128b3565b60c9556117b5868661294a565b6117be87612861565b6117c784611d0f565b6117d0836127f0565b6117d982612a34565b801561181f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b611830611cb5565b61083d81612a34565b60ca546000905b63ffffffff8116156118ac578260ca61185a600184613878565b63ffffffff16815481106118705761187061355e565b906000526020600020906002020160000154141561189a57611893600182613878565b9392505050565b806118a48161389d565b915050611840565b5060405162461bcd60e51b815260206004820152603760248201527f5061796d656e74436f6f7264696e61746f722e676574526f6f74496e6465784660448201527f726f6d486173683a20726f6f74206e6f7420666f756e64000000000000000000606482015260840161082b565b611923611cb5565b6001600160a01b038216600081815260d1602052604080822054905160ff9091169284151592841515927f17b06be02af2803593116eb96121b9c6e8bee1cc1b145e7c31c19c180e86189b9190a4506001600160a01b0391909116600090815260d160205260409020805460ff1916911515919091179055565b6119a5611cb5565b6001600160a01b038116611a0a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161082b565b61083d81612861565b60007f0000000000000000000000000000000000000000000000000000000000000000461415611a44575060c95490565b611a4c6128b3565b905090565b6000600161098f60208401846130e7565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ab5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad99190613424565b6001600160a01b0316336001600160a01b031614611b095760405162461bcd60e51b815260040161082b90613441565b606654198119606654191614611b875760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161082b565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610974565b6001600160a01b038116611c4c5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161082b565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114375760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082b565b60cb546040516001600160a01b038084169216907f07d2890b3eb1206e7c3cb6bf8d46da31385ace3ce99abf85e5b690c83aa4967890600090a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b6000611d7782806137ef565b905011611dcf5760405162461bcd60e51b815260206004820152603260248201526000805160206139d7833981519152604482015271081b9bc81cdd1c985d1959da595cc81cd95d60721b606482015260840161082b565b6000816040013511611e2d5760405162461bcd60e51b815260206004820152603360248201526000805160206139d7833981519152604482015272020616d6f756e742063616e6e6f74206265203606c1b606482015260840161082b565b6f4b3b4ca85a86c47a098a223fffffffff81604001351115611e995760405162461bcd60e51b815260206004820152603160248201526000805160206139d783398151915260448201527020616d6f756e7420746f6f206c6172676560781b606482015260840161082b565b63ffffffff7f000000000000000000000000000000000000000000000000000000000000000016611ed060a083016080840161329e565b63ffffffff161115611f475760405162461bcd60e51b815260206004820152604660248201526000805160206139d783398151915260448201527f206475726174696f6e2065786365656473204d41585f5041594d454e545f44556064820152652920aa24a7a760d11b608482015260a40161082b565b7f0000000000000000000000000000000000000000000000000000000000000000611f7860a083016080840161329e565b611f8291906138d3565b63ffffffff161561200f5760405162461bcd60e51b815260206004820152605c60248201526000805160206139d783398151915260448201527f206475726174696f6e206d7573742062652061206d756c7469706c65206f662060648201527f43414c43554c4154494f4e5f494e54455256414c5f5345434f4e445300000000608482015260a40161082b565b7f0000000000000000000000000000000000000000000000000000000000000000612040608083016060840161329e565b61204a91906138d3565b63ffffffff16156120e25760405162461bcd60e51b815260206004820152606260248201526000805160206139d783398151915260448201527f20737461727454696d657374616d70206d7573742062652061206d756c74697060648201527f6c65206f662043414c43554c4154494f4e5f494e54455256414c5f5345434f4e608482015261445360f01b60a482015260c40161082b565b6120f2608082016060830161329e565b63ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff164261212a9190613839565b111580156121735750612143608082016060830161329e565b63ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff1611155b6121df5760405162461bcd60e51b815260206004820152604360248201526000805160206139d783398151915260448201527f20737461727454696d657374616d7020746f6f2066617220696e207468652070606482015262185cdd60ea1b608482015260a40161082b565b61220f63ffffffff7f00000000000000000000000000000000000000000000000000000000000000001642613758565b61221f608083016060840161329e565b63ffffffff1611156122955760405162461bcd60e51b815260206004820152604560248201526000805160206139d783398151915260448201527f20737461727454696d657374616d7020746f6f2066617220696e207468652066606482015264757475726560d81b608482015260a40161082b565b6000805b6122a383806137ef565b90508110156124a15760006122b884806137ef565b838181106122c8576122c861355e565b6122de92602060409092020190810191506130e7565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063663c1de490602401602060405180830381865afa158015612349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236d919061348b565b8061239457506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b6123f45760405162461bcd60e51b815260206004820152603c60248201526000805160206139d783398151915260448201527f20696e76616c696420737472617465677920636f6e7369646572656400000000606482015260840161082b565b806001600160a01b0316836001600160a01b03161061248f5760405162461bcd60e51b815260206004820152605b60248201526000805160206139d783398151915260448201527f2073747261746567696573206d75737420626520696e20617363656e64696e6760648201527f206f7264657220746f2068616e646c65206475706c6963617465730000000000608482015260a40161082b565b915061249a81613783565b9050612299565b505050565b6040516001600160a01b03808516602483015283166044820152606481018290526125119085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612a9f565b50505050565b806040015163ffffffff164210156125905760405162461bcd60e51b815260206004820152603660248201527f5061796d656e74436f6f7264696e61746f722e5f636865636b436c61696d3a206044820152751c9bdbdd081b9bdd081858dd1a5d985d1959081e595d60521b606482015260840161082b565b61259d60c083018361379e565b90506125ac60a084018461379e565b9050146126365760405162461bcd60e51b815260206004820152604c60248201527f5061796d656e74436f6f7264696e61746f722e5f636865636b436c61696d3a2060448201527f746f6b656e496e646963657320616e6420746f6b656e50726f6f6673206c656e60648201526b0cee8d040dad2e6dac2e8c6d60a31b608482015260a40161082b565b61264360e08301836137ef565b905061265260c084018461379e565b9050146126da5760405162461bcd60e51b815260206004820152604a60248201527f5061796d656e74436f6f7264696e61746f722e5f636865636b436c61696d3a2060448201527f746f6b656e5472656550726f6f667320616e64206c6561766573206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a40161082b565b8051612706906126f0604085016020860161329e565b6126fd60408601866138f6565b86606001612b71565b60005b61271660a084018461379e565b90508110156124a1576127b0608084013561273460a086018661379e565b848181106127445761274461355e565b9050602002016020810190612759919061329e565b61276660c087018761379e565b858181106127765761277661355e565b905060200281019061278891906138f6565b61279560e08901896137ef565b878181106127a5576127a561355e565b905060400201612ce5565b6127b981613783565b9050612709565b6040516001600160a01b0383166024820152604481018290526124a190849063a9059cbb60e01b906064016124da565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6065546001600160a01b031615801561296b57506001600160a01b03821615155b6129ed5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161082b565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2612a3082611bbe565b5050565b60cb546040805161ffff600160e01b9093048316815291831660208301527f8cdc428b0431b82d1619763f443a48197db344ba96905f3949643acd1c863a06910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b6000612af4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612e369092919063ffffffff16565b8051909150156124a15780806020019051810190612b12919061348b565b6124a15760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161082b565b612b7c60208361393d565b6001901b8463ffffffff1610612c065760405162461bcd60e51b815260206004820152604360248201527f5061796d656e74436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e65724c656166496e6064820152620c8caf60eb1b608482015260a40161082b565b6000612c118261097f565b9050612c5c84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916612e4d565b612cdd5760405162461bcd60e51b815260206004820152604660248201527f5061796d656e74436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e657220636c61696d60648201526510383937b7b360d11b608482015260a40161082b565b505050505050565b612cf060208361393d565b6001901b8463ffffffff1610612d6e5760405162461bcd60e51b815260206004820152603c60248201527f5061796d656e74436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e4c656166496e64657800000000606482015260840161082b565b6000612d7982611a51565b9050612dc484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916612e4d565b612cdd5760405162461bcd60e51b815260206004820152603f60248201527f5061796d656e74436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e20636c61696d2070726f6f6600606482015260840161082b565b6060612e458484600085612e65565b949350505050565b600083612e5b868585612f96565b1495945050505050565b606082471015612ec65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161082b565b6001600160a01b0385163b612f1d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161082b565b600080866001600160a01b03168587604051612f39919061397d565b60006040518083038185875af1925050503d8060008114612f76576040519150601f19603f3d011682016040523d82523d6000602084013e612f7b565b606091505b5091509150612f8b828286613099565b979650505050505050565b600060208451612fa6919061398f565b1561302d5760405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a40161082b565b8260205b855181116130905761304460028561398f565b6130655781600052808601516020526040600020915060028404935061307e565b8086015160005281602052604060002091506002840493505b613089602082613758565b9050613031565b50949350505050565b606083156130a8575081611893565b8251156130b85782518084602001fd5b8160405162461bcd60e51b815260040161082b91906139a3565b6001600160a01b038116811461083d57600080fd5b6000602082840312156130f957600080fd5b8135611893816130d2565b60006020828403121561311657600080fd5b5035919050565b60006040828403121561312f57600080fd5b50919050565b60006040828403121561314757600080fd5b611893838361311d565b6000806020838503121561316457600080fd5b823567ffffffffffffffff8082111561317c57600080fd5b818501915085601f83011261319057600080fd5b81358181111561319f57600080fd5b8660208260051b85010111156131b457600080fd5b60209290920196919550909350505050565b600080604083850312156131d957600080fd5b82356131e4816130d2565b915060208301356131f4816130d2565b809150509250929050565b6000610100828403121561312f57600080fd5b6000806040838503121561322557600080fd5b823567ffffffffffffffff81111561323c57600080fd5b613248858286016131ff565b92505060208301356131f4816130d2565b803563ffffffff8116811461326d57600080fd5b919050565b6000806040838503121561328557600080fd5b8235915061329560208401613259565b90509250929050565b6000602082840312156132b057600080fd5b61189382613259565b6000602082840312156132cb57600080fd5b813560ff8116811461189357600080fd5b6000602082840312156132ee57600080fd5b813567ffffffffffffffff81111561330557600080fd5b612e45848285016131ff565b6000806040838503121561332457600080fd5b823561332f816130d2565b946020939093013593505050565b803561326d816130d2565b803561ffff8116811461326d57600080fd5b60008060008060008060c0878903121561337357600080fd5b863561337e816130d2565b9550602087013561338e816130d2565b94506040870135935060608701356133a5816130d2565b92506133b360808801613259565b91506133c160a08801613348565b90509295509295509295565b6000602082840312156133df57600080fd5b61189382613348565b801515811461083d57600080fd5b6000806040838503121561340957600080fd5b8235613414816130d2565b915060208301356131f4816133e8565b60006020828403121561343657600080fd5b8151611893816130d2565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561349d57600080fd5b8151611893816133e8565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235609e1983360301811261358a57600080fd5b9190910192915050565b818352600060208085019450826000805b868110156135f95782356135b8816130d2565b6001600160a01b03168852828401356bffffffffffffffffffffffff81168082146135e1578384fd5b898601525060409788019792909201916001016135a5565b50959695505050505050565b60008135601e1983360301811261361b57600080fd5b8201803567ffffffffffffffff81111561363457600080fd5b8060061b360384131561364657600080fd5b60a0855261365b60a086018260208501613594565b91505061366a6020840161333d565b6001600160a01b031660208501526040838101359085015261368e60608401613259565b63ffffffff1660608501526136a560808401613259565b63ffffffff81166080860152509392505050565b60018060a01b03841681528260208201526060604082015260006136e06060830184613605565b95945050505050565b60208082526045908201526000805160206139d783398151915260408201527f2072616e6765207061796d656e74206861736820616c7265616479207375626d6060820152641a5d1d195960da1b608082015260a00190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561376b5761376b613742565b500190565b6020815260006118936020830184613605565b600060001982141561379757613797613742565b5060010190565b6000808335601e198436030181126137b557600080fd5b83018035915067ffffffffffffffff8211156137d057600080fd5b6020019150600581901b36038213156137e857600080fd5b9250929050565b6000808335601e1984360301811261380657600080fd5b83018035915067ffffffffffffffff82111561382157600080fd5b6020019150600681901b36038213156137e857600080fd5b60008282101561384b5761384b613742565b500390565b600063ffffffff80831681851680830382111561386f5761386f613742565b01949350505050565b600063ffffffff8381169083168181101561389557613895613742565b039392505050565b600063ffffffff8216806138b3576138b3613742565b6000190192915050565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff808416806138ea576138ea6138bd565b92169190910692915050565b6000808335601e1984360301811261390d57600080fd5b83018035915067ffffffffffffffff82111561392857600080fd5b6020019150368190038213156137e857600080fd5b60008261394c5761394c6138bd565b500490565b60005b8381101561396c578181015183820152602001613954565b838111156125115750506000910152565b6000825161358a818460208701613951565b60008261399e5761399e6138bd565b500690565b60208152600082518060208401526139c2816040850160208701613951565b601f01601f1916919091016040019291505056fe5061796d656e74436f6f7264696e61746f722e5f706179466f7252616e67653aa2646970667358221220230c33f5c3e5597aea966c344062b55bba8c024d05ba89d85105a679402443f564736f6c634300080c0033", + Bin: "0x6101806040523480156200001257600080fd5b5060405162003da838038062003da88339810160408190526200003591620002e4565b868686868686866200004885826200037e565b63ffffffff1615620000ed5760405162461bcd60e51b815260206004820152606060248201527f5061796d656e74436f6f7264696e61746f723a2047454e455349535f5041594d60448201527f454e545f54494d455354414d50206d7573742062652061206d756c7469706c6560648201527f206f662043414c43554c4154494f4e5f494e54455256414c5f5345434f4e4453608482015260a4015b60405180910390fd5b620000fc62015180866200037e565b63ffffffff16156200019d5760405162461bcd60e51b815260206004820152605760248201527f5061796d656e74436f6f7264696e61746f723a2043414c43554c4154494f4e5f60448201527f494e54455256414c5f5345434f4e4453206d7573742062652061206d756c746960648201527f706c65206f6620534e415053484f545f434144454e4345000000000000000000608482015260a401620000e4565b6001600160a01b0396871661012052949095166101405263ffffffff92831660805290821660a052811660c05291821660e0521661010052620001df620001f2565b5050466101605250620003b09350505050565b600054610100900460ff16156200025c5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401620000e4565b60005460ff9081161015620002af576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114620002c757600080fd5b50565b805163ffffffff81168114620002df57600080fd5b919050565b600080600080600080600060e0888a0312156200030057600080fd5b87516200030d81620002b1565b60208901519097506200032081620002b1565b95506200033060408901620002ca565b94506200034060608901620002ca565b93506200035060808901620002ca565b92506200036060a08901620002ca565b91506200037060c08901620002ca565b905092959891949750929550565b600063ffffffff80841680620003a457634e487b7160e01b600052601260045260246000fd5b92169190910692915050565b60805160a05160c05160e051610100516101205161014051610160516139616200044760003960006119a501526000818161044f015261228e015260006106e701526000818161040101526120d9015260008181610294015261217701526000818161042801526120880152600081816107210152611e2e01526000818161061301528181611ed70152611f9f01526139616000f3fe608060405234801561001057600080fd5b506004361061028a5760003560e01c806367ef85851161015c578063c8371b46116100ce578063ec1680de11610087578063ec1680de14610709578063ee6195971461071c578063f2fde38b14610743578063f698da2514610756578063f8cd84481461075e578063fabc1cbc1461077157600080fd5b8063c8371b461461065b578063d4540a5514610689578063d588cefa1461069c578063e221b245146106bc578063e810ce21146106cf578063ea4d3c9b146106e257600080fd5b8063886f119511610120578063886f1195146105cf5780638da5cb5b146105e25780639104c319146105f35780639d45c2811461060e578063a0169ddd14610635578063b57152841461064857600080fd5b806367ef85851461054f578063715018a61461056657806373f2fbea1461056e5780637b8f8b051461059c578063865c6953146105a457600080fd5b806337838ed011610200578063595c6a67116101b9578063595c6a67146104c15780635971b3f8146104c95780635ac86ab7146104fe5780635c975abb146105215780635e9d83481461052957806366d3b16b1461053c57600080fd5b806337838ed01461042357806339b70e381461044a5780633a8c0786146104715780633ccc861d146104885780633efe1db61461049b57806358baaa3e146104ae57600080fd5b8063149bc87211610252578063149bc8721461035357806318190f53146103745780631b4455161461038757806322f19a641461039a5780632b9f64a4146103bb5780632cfd45eb146103fc57600080fd5b806304a0c5021461028f578063092db007146102d057806310d67a2f146102f8578063136439dd1461030d578063146cd61d14610320575b600080fd5b6102b67f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020015b60405180910390f35b60cb546102e590600160e01b900461ffff1681565b60405161ffff90911681526020016102c7565b61030b610306366004613075565b610784565b005b61030b61031b366004613092565b610840565b61034361032e366004613075565b60d16020526000908152604090205460ff1681565b60405190151581526020016102c7565b6103666103613660046130c3565b61097f565b6040519081526020016102c7565b61030b610382366004613075565b6109f5565b61030b6103953660046130df565b610a06565b6102e56103a8366004613154565b505060cb54600160e01b900461ffff1690565b6103e46103c9366004613075565b60cc602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016102c7565b6102b67f000000000000000000000000000000000000000000000000000000000000000081565b6102b67f000000000000000000000000000000000000000000000000000000000000000081565b6103e47f000000000000000000000000000000000000000000000000000000000000000081565b60cb546102b690600160a01b900463ffffffff1681565b61030b6104963660046131a0565b610ba1565b61030b6104a9366004613200565b610f56565b61030b6104bc36600461322c565b611256565b61030b611267565b6104dc6104d7366004613092565b61132e565b6040805193845263ffffffff92831660208501529116908201526060016102c7565b61034361050c366004613247565b606654600160ff9092169190911b9081161490565b606654610366565b61034361053736600461326a565b61136e565b60cb546103e4906001600160a01b031681565b60cb546102b690600160c01b900463ffffffff1681565b61030b6113ec565b61034361057c36600461329f565b60d060209081526000928352604080842090915290825290205460ff1681565b60ca54610366565b6103666105b2366004613154565b60cd60209081526000928352604080842090915290825290205481565b6065546103e4906001600160a01b031681565b6033546001600160a01b03166103e4565b6103e473beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102b67f000000000000000000000000000000000000000000000000000000000000000081565b61030b610643366004613075565b611400565b61030b6106563660046130df565b61145f565b61034361066936600461329f565b60cf60209081526000928352604080842090915290825290205460ff1681565b61030b6106973660046132e8565b61166e565b6103666106aa366004613075565b60ce6020526000908152604090205481565b61030b6106ca36600461335b565b6117b6565b6102b66106dd366004613092565b6117c7565b6103e47f000000000000000000000000000000000000000000000000000000000000000081565b61030b610717366004613384565b6118a9565b6102b67f000000000000000000000000000000000000000000000000000000000000000081565b61030b610751366004613075565b61192b565b6103666119a1565b61036661076c3660046130c3565b6119df565b61030b61077f366004613092565b6119f0565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fb91906133b2565b6001600160a01b0316336001600160a01b0316146108345760405162461bcd60e51b815260040161082b906133cf565b60405180910390fd5b61083d81611b4c565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610888573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ac9190613419565b6108c85760405162461bcd60e51b815260040161082b90613436565b606654818116146109415760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161082b565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60008061098f6020840184613075565b83602001356040516020016109d89392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b6109fd611c43565b61083d81611c9d565b60665460009060019081161415610a2f5760405162461bcd60e51b815260040161082b9061347e565b60026097541415610a525760405162461bcd60e51b815260040161082b906134b5565b600260975560005b82811015610b965736848483818110610a7557610a756134ec565b9050602002810190610a879190613502565b33600081815260ce60209081526040808320549051949550939192610ab29290918591879101613647565b604051602081830303815290604052805190602001209050610ad383611cf9565b33600090815260cf602090815260408083208484529091529020805460ff19166001908117909155610b0690839061368d565b33600081815260ce602052604090819020929092559051829184917f2a0659fa4c38e0075469a0e0dd737e045dc316ffd6cb6e68755c119ee0882aea90610b4e9088906136a5565b60405180910390a4610b80333060408601803590610b6f9060208901613075565b6001600160a01b0316929190612434565b5050508080610b8e906136b8565b915050610a5a565b505060016097555050565b60665460029060049081161415610bca5760405162461bcd60e51b815260040161082b9061347e565b60026097541415610bed5760405162461bcd60e51b815260040161082b906134b5565b6002609755600060ca610c03602086018661322c565b63ffffffff1681548110610c1957610c196134ec565b6000918252602091829020604080516060810182526002909302909101805483526001015463ffffffff808216948401949094526401000000009004909216918101919091529050610c6b84826124a5565b6000610c7d6080860160608701613075565b6001600160a01b03808216600090815260cc60205260409020549192501680610ca35750805b336001600160a01b03821614610d215760405162461bcd60e51b815260206004820152603c60248201527f5061796d656e74436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063616c6c6572206973206e6f742076616c696420636c61696d657200000000606482015260840161082b565b60005b610d3160a08801886136d3565b9050811015610f485736610d4860e0890189613724565b83818110610d5857610d586134ec565b6001600160a01b038716600090815260cd602090815260408083209302949094019450929091508290610d8d90850185613075565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905080826020013511610e475760405162461bcd60e51b815260206004820152605560248201527f5061796d656e74436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063756d756c61746976654561726e696e6773206d75737420626520677420746064820152741a185b8818dd5b5d5b185d1a5d9950db185a5b5959605a1b608482015260a40161082b565b6000610e5782602085013561376e565b6001600160a01b038716600090815260cd60209081526040822092935085018035929190610e859087613075565b6001600160a01b0316815260208082019290925260400160002091909155610ec7908a908390610eb790870187613075565b6001600160a01b0316919061274e565b86516001600160a01b03808b1691878216918916907fbff1e5a32b3f6d3b3c0a7e675ead2091fea820852f35a77abdd6d2420bec477890610f0b6020890189613075565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a45050508080610f40906136b8565b915050610d24565b505060016097555050505050565b60665460039060089081161415610f7f5760405162461bcd60e51b815260040161082b9061347e565b60cb546001600160a01b03163314610ff65760405162461bcd60e51b815260206004820152603460248201527f5061796d656e74436f6f7264696e61746f723a2063616c6c6572206973206e6f6044820152733a103a3432903830bcb6b2b73a2ab83230ba32b960611b606482015260840161082b565b60cb5463ffffffff600160c01b9091048116908316116110925760405162461bcd60e51b815260206004820152604b60248201527f5061796d656e74436f6f7264696e61746f722e7375626d6974526f6f743a206e60448201527f657720726f6f74206d75737420626520666f72206e657765722063616c63756c60648201526a185d1959081c195c9a5bd960aa1b608482015260a40161082b565b428263ffffffff161061112b5760405162461bcd60e51b815260206004820152605560248201527f5061796d656e74436f6f7264696e61746f722e7375626d6974526f6f743a207060448201527f61796d656e7443616c63756c6174696f6e456e6454696d657374616d702063616064820152746e6e6f7420626520696e207468652066757475726560581b608482015260a40161082b565b60ca5460cb5460009061114b90600160a01b900463ffffffff1642613785565b6040805160608101825287815263ffffffff878116602080840182815286841685870181815260ca805460018101825560009190915296517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029098029788015591517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee29096018054925196861667ffffffffffffffff19909316929092176401000000009686169690960295909517905560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b61125e611c43565b61083d8161277e565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156112af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d39190613419565b6112ef5760405162461bcd60e51b815260040161082b90613436565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60ca818154811061133e57600080fd5b60009182526020909120600290910201805460019091015490915063ffffffff8082169164010000000090041683565b60006113e48260ca611383602083018361322c565b63ffffffff1681548110611399576113996134ec565b6000918252602091829020604080516060810182526002909302909101805483526001015463ffffffff808216948401949094526401000000009004909216918101919091526124a5565b506001919050565b6113f4611c43565b6113fe60006127ef565b565b33600081815260cc602052604080822080546001600160a01b031981166001600160a01b038781169182179093559251911692839185917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca31291a4505050565b606654600190600290811614156114885760405162461bcd60e51b815260040161082b9061347e565b33600090815260d1602052604090205460ff166115185760405162461bcd60e51b815260206004820152604260248201527f5061796d656e74436f6f7264696e61746f723a2063616c6c6572206973206e6f60448201527f7420612076616c696420706179416c6c466f7252616e6765207375626d69747460648201526132b960f11b608482015260a40161082b565b6002609754141561153b5760405162461bcd60e51b815260040161082b906134b5565b600260975560005b82811015610b96573684848381811061155e5761155e6134ec565b90506020028101906115709190613502565b33600081815260ce6020908152604080832054905194955093919261159b9290918591879101613647565b6040516020818303038152906040528051906020012090506115bc83611cf9565b33600090815260d0602090815260408083208484529091529020805460ff191660019081179091556115ef90839061368d565b33600081815260ce602052604090819020929092559051829184917fbc0782940ec5871f66c5490ef957f44d19a9adac1dac18b946ad0dd6579c30d6906116379088906136a5565b60405180910390a4611658333060408601803590610b6f9060208901613075565b5050508080611666906136b8565b915050611543565b600054610100900460ff161580801561168e5750600054600160ff909116105b806116a85750303b1580156116a8575060005460ff166001145b61170b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161082b565b6000805460ff19166001179055801561172e576000805461ff0019166101001790555b611736612841565b60c95561174386866128d8565b61174c876127ef565b61175584611c9d565b61175e8361277e565b611767826129c2565b80156117ad576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6117be611c43565b61083d816129c2565b60ca546000905b63ffffffff81161561183a578260ca6117e86001846137ad565b63ffffffff16815481106117fe576117fe6134ec565b9060005260206000209060020201600001541415611828576118216001826137ad565b9392505050565b80611832816137d2565b9150506117ce565b5060405162461bcd60e51b815260206004820152603760248201527f5061796d656e74436f6f7264696e61746f722e676574526f6f74496e6465784660448201527f726f6d486173683a20726f6f74206e6f7420666f756e64000000000000000000606482015260840161082b565b6118b1611c43565b6001600160a01b038216600081815260d1602052604080822054905160ff9091169284151592841515927f17b06be02af2803593116eb96121b9c6e8bee1cc1b145e7c31c19c180e86189b9190a4506001600160a01b0391909116600090815260d160205260409020805460ff1916911515919091179055565b611933611c43565b6001600160a01b0381166119985760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161082b565b61083d816127ef565b60007f00000000000000000000000000000000000000000000000000000000000000004614156119d2575060c95490565b6119da612841565b905090565b6000600161098f6020840184613075565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6791906133b2565b6001600160a01b0316336001600160a01b031614611a975760405162461bcd60e51b815260040161082b906133cf565b606654198119606654191614611b155760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161082b565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610974565b6001600160a01b038116611bda5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161082b565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146113fe5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082b565b60cb546040516001600160a01b038084169216907f07d2890b3eb1206e7c3cb6bf8d46da31385ace3ce99abf85e5b690c83aa4967890600090a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b6000611d058280613724565b905011611d5d5760405162461bcd60e51b8152602060048201526032602482015260008051602061390c833981519152604482015271081b9bc81cdd1c985d1959da595cc81cd95d60721b606482015260840161082b565b6000816040013511611dbb5760405162461bcd60e51b8152602060048201526033602482015260008051602061390c833981519152604482015272020616d6f756e742063616e6e6f74206265203606c1b606482015260840161082b565b6f4b3b4ca85a86c47a098a223fffffffff81604001351115611e275760405162461bcd60e51b8152602060048201526031602482015260008051602061390c83398151915260448201527020616d6f756e7420746f6f206c6172676560781b606482015260840161082b565b63ffffffff7f000000000000000000000000000000000000000000000000000000000000000016611e5e60a083016080840161322c565b63ffffffff161115611ed55760405162461bcd60e51b8152602060048201526046602482015260008051602061390c83398151915260448201527f206475726174696f6e2065786365656473204d41585f5041594d454e545f44556064820152652920aa24a7a760d11b608482015260a40161082b565b7f0000000000000000000000000000000000000000000000000000000000000000611f0660a083016080840161322c565b611f109190613808565b63ffffffff1615611f9d5760405162461bcd60e51b815260206004820152605c602482015260008051602061390c83398151915260448201527f206475726174696f6e206d7573742062652061206d756c7469706c65206f662060648201527f43414c43554c4154494f4e5f494e54455256414c5f5345434f4e445300000000608482015260a40161082b565b7f0000000000000000000000000000000000000000000000000000000000000000611fce608083016060840161322c565b611fd89190613808565b63ffffffff16156120705760405162461bcd60e51b8152602060048201526062602482015260008051602061390c83398151915260448201527f20737461727454696d657374616d70206d7573742062652061206d756c74697060648201527f6c65206f662043414c43554c4154494f4e5f494e54455256414c5f5345434f4e608482015261445360f01b60a482015260c40161082b565b612080608082016060830161322c565b63ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff16426120b8919061376e565b1115801561210157506120d1608082016060830161322c565b63ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff1611155b61216d5760405162461bcd60e51b8152602060048201526043602482015260008051602061390c83398151915260448201527f20737461727454696d657374616d7020746f6f2066617220696e207468652070606482015262185cdd60ea1b608482015260a40161082b565b61219d63ffffffff7f0000000000000000000000000000000000000000000000000000000000000000164261368d565b6121ad608083016060840161322c565b63ffffffff1611156122235760405162461bcd60e51b8152602060048201526045602482015260008051602061390c83398151915260448201527f20737461727454696d657374616d7020746f6f2066617220696e207468652066606482015264757475726560d81b608482015260a40161082b565b6000805b6122318380613724565b905081101561242f5760006122468480613724565b83818110612256576122566134ec565b61226c9260206040909202019081019150613075565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063663c1de490602401602060405180830381865afa1580156122d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fb9190613419565b8061232257506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b6123825760405162461bcd60e51b815260206004820152603c602482015260008051602061390c83398151915260448201527f20696e76616c696420737472617465677920636f6e7369646572656400000000606482015260840161082b565b806001600160a01b0316836001600160a01b03161061241d5760405162461bcd60e51b815260206004820152605b602482015260008051602061390c83398151915260448201527f2073747261746567696573206d75737420626520696e20617363656e64696e6760648201527f206f7264657220746f2068616e646c65206475706c6963617465730000000000608482015260a40161082b565b9150612428816136b8565b9050612227565b505050565b6040516001600160a01b038085166024830152831660448201526064810182905261249f9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612a2d565b50505050565b806040015163ffffffff1642101561251e5760405162461bcd60e51b815260206004820152603660248201527f5061796d656e74436f6f7264696e61746f722e5f636865636b436c61696d3a206044820152751c9bdbdd081b9bdd081858dd1a5d985d1959081e595d60521b606482015260840161082b565b61252b60c08301836136d3565b905061253a60a08401846136d3565b9050146125c45760405162461bcd60e51b815260206004820152604c60248201527f5061796d656e74436f6f7264696e61746f722e5f636865636b436c61696d3a2060448201527f746f6b656e496e646963657320616e6420746f6b656e50726f6f6673206c656e60648201526b0cee8d040dad2e6dac2e8c6d60a31b608482015260a40161082b565b6125d160e0830183613724565b90506125e060c08401846136d3565b9050146126685760405162461bcd60e51b815260206004820152604a60248201527f5061796d656e74436f6f7264696e61746f722e5f636865636b436c61696d3a2060448201527f746f6b656e5472656550726f6f667320616e64206c6561766573206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a40161082b565b80516126949061267e604085016020860161322c565b61268b604086018661382b565b86606001612aff565b60005b6126a460a08401846136d3565b905081101561242f5761273e60808401356126c260a08601866136d3565b848181106126d2576126d26134ec565b90506020020160208101906126e7919061322c565b6126f460c08701876136d3565b85818110612704576127046134ec565b9050602002810190612716919061382b565b61272360e0890189613724565b87818110612733576127336134ec565b905060400201612c73565b612747816136b8565b9050612697565b6040516001600160a01b03831660248201526044810182905261242f90849063a9059cbb60e01b90606401612468565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6065546001600160a01b03161580156128f957506001600160a01b03821615155b61297b5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161082b565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26129be82611b4c565b5050565b60cb546040805161ffff600160e01b9093048316815291831660208301527f8cdc428b0431b82d1619763f443a48197db344ba96905f3949643acd1c863a06910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b6000612a82826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612dc49092919063ffffffff16565b80519091501561242f5780806020019051810190612aa09190613419565b61242f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161082b565b612b0a602083613872565b6001901b8463ffffffff1610612b945760405162461bcd60e51b815260206004820152604360248201527f5061796d656e74436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e65724c656166496e6064820152620c8caf60eb1b608482015260a40161082b565b6000612b9f8261097f565b9050612bea84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916612ddb565b612c6b5760405162461bcd60e51b815260206004820152604660248201527f5061796d656e74436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e657220636c61696d60648201526510383937b7b360d11b608482015260a40161082b565b505050505050565b612c7e602083613872565b6001901b8463ffffffff1610612cfc5760405162461bcd60e51b815260206004820152603c60248201527f5061796d656e74436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e4c656166496e64657800000000606482015260840161082b565b6000612d07826119df565b9050612d5284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916612ddb565b612c6b5760405162461bcd60e51b815260206004820152603f60248201527f5061796d656e74436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e20636c61696d2070726f6f6600606482015260840161082b565b6060612dd38484600085612df3565b949350505050565b600083612de9868585612f24565b1495945050505050565b606082471015612e545760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161082b565b6001600160a01b0385163b612eab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161082b565b600080866001600160a01b03168587604051612ec791906138b2565b60006040518083038185875af1925050503d8060008114612f04576040519150601f19603f3d011682016040523d82523d6000602084013e612f09565b606091505b5091509150612f19828286613027565b979650505050505050565b600060208451612f3491906138c4565b15612fbb5760405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a40161082b565b8260205b8551811161301e57612fd26002856138c4565b612ff35781600052808601516020526040600020915060028404935061300c565b8086015160005281602052604060002091506002840493505b61301760208261368d565b9050612fbf565b50949350505050565b60608315613036575081611821565b8251156130465782518084602001fd5b8160405162461bcd60e51b815260040161082b91906138d8565b6001600160a01b038116811461083d57600080fd5b60006020828403121561308757600080fd5b813561182181613060565b6000602082840312156130a457600080fd5b5035919050565b6000604082840312156130bd57600080fd5b50919050565b6000604082840312156130d557600080fd5b61182183836130ab565b600080602083850312156130f257600080fd5b823567ffffffffffffffff8082111561310a57600080fd5b818501915085601f83011261311e57600080fd5b81358181111561312d57600080fd5b8660208260051b850101111561314257600080fd5b60209290920196919550909350505050565b6000806040838503121561316757600080fd5b823561317281613060565b9150602083013561318281613060565b809150509250929050565b600061010082840312156130bd57600080fd5b600080604083850312156131b357600080fd5b823567ffffffffffffffff8111156131ca57600080fd5b6131d68582860161318d565b925050602083013561318281613060565b803563ffffffff811681146131fb57600080fd5b919050565b6000806040838503121561321357600080fd5b82359150613223602084016131e7565b90509250929050565b60006020828403121561323e57600080fd5b611821826131e7565b60006020828403121561325957600080fd5b813560ff8116811461182157600080fd5b60006020828403121561327c57600080fd5b813567ffffffffffffffff81111561329357600080fd5b612dd38482850161318d565b600080604083850312156132b257600080fd5b82356132bd81613060565b946020939093013593505050565b80356131fb81613060565b803561ffff811681146131fb57600080fd5b60008060008060008060c0878903121561330157600080fd5b863561330c81613060565b9550602087013561331c81613060565b945060408701359350606087013561333381613060565b9250613341608088016131e7565b915061334f60a088016132d6565b90509295509295509295565b60006020828403121561336d57600080fd5b611821826132d6565b801515811461083d57600080fd5b6000806040838503121561339757600080fd5b82356133a281613060565b9150602083013561318281613376565b6000602082840312156133c457600080fd5b815161182181613060565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561342b57600080fd5b815161182181613376565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235609e1983360301811261351857600080fd5b9190910192915050565b818352600060208085019450826000805b8681101561358757823561354681613060565b6001600160a01b03168852828401356bffffffffffffffffffffffff811680821461356f578384fd5b89860152506040978801979290920191600101613533565b50959695505050505050565b60008135601e198336030181126135a957600080fd5b8201803567ffffffffffffffff8111156135c257600080fd5b8060061b36038413156135d457600080fd5b60a085526135e960a086018260208501613522565b9150506135f8602084016132cb565b6001600160a01b031660208501526040838101359085015261361c606084016131e7565b63ffffffff166060850152613633608084016131e7565b63ffffffff81166080860152509392505050565b60018060a01b038416815282602082015260606040820152600061366e6060830184613593565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156136a0576136a0613677565b500190565b6020815260006118216020830184613593565b60006000198214156136cc576136cc613677565b5060010190565b6000808335601e198436030181126136ea57600080fd5b83018035915067ffffffffffffffff82111561370557600080fd5b6020019150600581901b360382131561371d57600080fd5b9250929050565b6000808335601e1984360301811261373b57600080fd5b83018035915067ffffffffffffffff82111561375657600080fd5b6020019150600681901b360382131561371d57600080fd5b60008282101561378057613780613677565b500390565b600063ffffffff8083168185168083038211156137a4576137a4613677565b01949350505050565b600063ffffffff838116908316818110156137ca576137ca613677565b039392505050565b600063ffffffff8216806137e8576137e8613677565b6000190192915050565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff8084168061381f5761381f6137f2565b92169190910692915050565b6000808335601e1984360301811261384257600080fd5b83018035915067ffffffffffffffff82111561385d57600080fd5b60200191503681900382131561371d57600080fd5b600082613881576138816137f2565b500490565b60005b838110156138a1578181015183820152602001613889565b8381111561249f5750506000910152565b60008251613518818460208701613886565b6000826138d3576138d36137f2565b500690565b60208152600082518060208401526138f7816040850160208701613886565b601f01601f1916919091016040019291505056fe5061796d656e74436f6f7264696e61746f722e5f706179466f7252616e67653aa2646970667358221220263b7134f16f5839ed3a7ec21f88e8dacb42af92136c3905eb0cb36133e6061064736f6c634300080c0033", } // PaymentCoordinatorABI is the input ABI used to generate the binding from. diff --git a/src/contracts/core/PaymentCoordinator.sol b/src/contracts/core/PaymentCoordinator.sol index 1fff906bc..649ded7dc 100644 --- a/src/contracts/core/PaymentCoordinator.sol +++ b/src/contracts/core/PaymentCoordinator.sol @@ -132,10 +132,6 @@ contract PaymentCoordinator is RangePayment calldata rangePayment = rangePayments[i]; uint256 nonce = paymentNonce[msg.sender]; bytes32 rangePaymentHash = keccak256(abi.encode(msg.sender, nonce, rangePayment)); - require( - !isRangePaymentHash[msg.sender][rangePaymentHash], - "PaymentCoordinator._payForRange: range payment hash already submitted" - ); _validateRangePayment(rangePayment); @@ -160,10 +156,6 @@ contract PaymentCoordinator is RangePayment calldata rangePayment = rangePayments[i]; uint256 nonce = paymentNonce[msg.sender]; bytes32 rangePaymentForAllHash = keccak256(abi.encode(msg.sender, nonce, rangePayment)); - require( - !isRangePaymentForAllHash[msg.sender][rangePaymentForAllHash], - "PaymentCoordinator._payForRange: range payment hash already submitted" - ); _validateRangePayment(rangePayment);