From ac261ee7eaebe7b012beba0ac6b986c29fde3571 Mon Sep 17 00:00:00 2001 From: Dylan Date: Mon, 16 Oct 2023 14:49:19 -0700 Subject: [PATCH 1/5] increment elf-sims version --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 7ee07128cd..ffc556663d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] # TODO test this with docker name = "elf-simulations" -version = "0.7.0" +version = "0.8.0" # Authors are the current, primary stuards of the repo # contributors can be found on github authors = [ From 530f4d94196e8ce56fb23442efb004246d724230 Mon Sep 17 00:00:00 2001 From: Dylan Date: Mon, 16 Oct 2023 14:52:57 -0700 Subject: [PATCH 2/5] updates contracts & generated python files --- .../hypertypes/ERC20MintableContract.py | 349 +- .../hypertypes/ERC20MintableTypes.py | 66 +- .../hypertypes/ERC4626DataProviderContract.py | 52 +- .../ERC4626HyperdriveDeployerContract.py | 12 +- .../ERC4626HyperdriveFactoryContract.py | 92 +- .../ERC4626HyperdriveFactoryTypes.py | 4 +- .../hypertypes/ForwarderFactoryContract.py | 16 +- .../hypertypes/IERC4626HyperdriveContract.py | 826 ++++ .../hypertypes/IERC4626HyperdriveTypes.py | 237 + .../hypertypes/IHyperdriveContract.py | 64 +- lib/hypertypes/hypertypes/IHyperdriveTypes.py | 8 +- .../hypertypes/MockERC4626Contract.py | 324 +- lib/hypertypes/hypertypes/MockERC4626Types.py | 62 + lib/hypertypes/hypertypes/__init__.py | 0 .../abis/ERC20Mintable.sol/ERC20Mintable.json | 2564 ++++++++-- .../ERC4626HyperdriveDeployer.json | 308 +- .../ERC4626HyperdriveFactory.json | 640 +-- .../IERC4626Hyperdrive.json | 4274 +++++++++++++++++ .../src/abis/IHyperdrive.sol/IHyperdrive.json | 1988 ++++---- .../src/abis/MockERC4626.sol/MockERC4626.json | 2917 ++++++++--- 20 files changed, 12020 insertions(+), 2783 deletions(-) create mode 100644 lib/hypertypes/hypertypes/IERC4626HyperdriveContract.py create mode 100644 lib/hypertypes/hypertypes/IERC4626HyperdriveTypes.py delete mode 100644 lib/hypertypes/hypertypes/__init__.py create mode 100644 packages/hyperdrive/src/abis/IERC4626Hyperdrive.sol/IERC4626Hyperdrive.json diff --git a/lib/hypertypes/hypertypes/ERC20MintableContract.py b/lib/hypertypes/hypertypes/ERC20MintableContract.py index 6b45d7e06e..045218dc24 100644 --- a/lib/hypertypes/hypertypes/ERC20MintableContract.py +++ b/lib/hypertypes/hypertypes/ERC20MintableContract.py @@ -16,14 +16,30 @@ from web3.exceptions import FallbackNotFound +class ERC20MintableDOMAIN_SEPARATORContractFunction(ContractFunction): + """ContractFunction for the DOMAIN_SEPARATOR method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__(self) -> "ERC20MintableDOMAIN_SEPARATORContractFunction": + super().__call__() + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + class ERC20MintableAllowanceContractFunction(ContractFunction): """ContractFunction for the allowance method.""" # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, owner: str, spender: str) -> "ERC20MintableAllowanceContractFunction": - super().__call__(owner, spender) + def __call__( + self, arg1: str, arg2: str + ) -> "ERC20MintableAllowanceContractFunction": + super().__call__() return self # TODO: add call def so we can get return types for the calls @@ -36,7 +52,9 @@ class ERC20MintableApproveContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, spender: str, amount: int) -> "ERC20MintableApproveContractFunction": + def __call__( + self, spender: str, amount: int + ) -> "ERC20MintableApproveContractFunction": super().__call__(spender, amount) return self @@ -44,14 +62,28 @@ def __call__(self, spender: str, amount: int) -> "ERC20MintableApproveContractFu # def call() +class ERC20MintableAuthorityContractFunction(ContractFunction): + """ContractFunction for the authority method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__(self) -> "ERC20MintableAuthorityContractFunction": + super().__call__() + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + class ERC20MintableBalanceOfContractFunction(ContractFunction): """ContractFunction for the balanceOf method.""" # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, account: str) -> "ERC20MintableBalanceOfContractFunction": - super().__call__(account) + def __call__(self, arg1: str) -> "ERC20MintableBalanceOfContractFunction": + super().__call__() return self # TODO: add call def so we can get return types for the calls @@ -64,7 +96,9 @@ class ERC20MintableBurnContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, amount: int, destination: str | None = None) -> "ERC20MintableBurnContractFunction": + def __call__( + self, amount: int, destination: str | None = None + ) -> "ERC20MintableBurnContractFunction": if all([destination is None]): super().__call__() return self @@ -77,6 +111,22 @@ def __call__(self, amount: int, destination: str | None = None) -> "ERC20Mintabl # def call() +class ERC20MintableCanCallContractFunction(ContractFunction): + """ContractFunction for the canCall method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, user: str, target: str, functionSig: bytes + ) -> "ERC20MintableCanCallContractFunction": + super().__call__(user, target, functionSig) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + class ERC20MintableDecimalsContractFunction(ContractFunction): """ContractFunction for the decimals method.""" @@ -91,28 +141,96 @@ def __call__(self) -> "ERC20MintableDecimalsContractFunction": # def call() -class ERC20MintableDecreaseAllowanceContractFunction(ContractFunction): - """ContractFunction for the decreaseAllowance method.""" +class ERC20MintableDoesRoleHaveCapabilityContractFunction(ContractFunction): + """ContractFunction for the doesRoleHaveCapability method.""" # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, spender: str, subtractedValue: int) -> "ERC20MintableDecreaseAllowanceContractFunction": - super().__call__(spender, subtractedValue) + def __call__( + self, role: int, functionSig: bytes + ) -> "ERC20MintableDoesRoleHaveCapabilityContractFunction": + super().__call__(role, functionSig) return self # TODO: add call def so we can get return types for the calls # def call() -class ERC20MintableIncreaseAllowanceContractFunction(ContractFunction): - """ContractFunction for the increaseAllowance method.""" +class ERC20MintableDoesUserHaveRoleContractFunction(ContractFunction): + """ContractFunction for the doesUserHaveRole method.""" # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, spender: str, addedValue: int) -> "ERC20MintableIncreaseAllowanceContractFunction": - super().__call__(spender, addedValue) + def __call__( + self, user: str, role: int + ) -> "ERC20MintableDoesUserHaveRoleContractFunction": + super().__call__(user, role) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class ERC20MintableGetRolesWithCapabilityContractFunction(ContractFunction): + """ContractFunction for the getRolesWithCapability method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, arg1: bytes + ) -> "ERC20MintableGetRolesWithCapabilityContractFunction": + super().__call__() + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class ERC20MintableGetTargetCustomAuthorityContractFunction(ContractFunction): + """ContractFunction for the getTargetCustomAuthority method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, arg1: str + ) -> "ERC20MintableGetTargetCustomAuthorityContractFunction": + super().__call__() + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class ERC20MintableGetUserRolesContractFunction(ContractFunction): + """ContractFunction for the getUserRoles method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, arg1: str + ) -> "ERC20MintableGetUserRolesContractFunction": + super().__call__() + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class ERC20MintableIsCapabilityPublicContractFunction(ContractFunction): + """ContractFunction for the isCapabilityPublic method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, arg1: bytes + ) -> "ERC20MintableIsCapabilityPublicContractFunction": + super().__call__() return self # TODO: add call def so we can get return types for the calls @@ -125,7 +243,9 @@ class ERC20MintableMintContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, amount: int, destination: str | None = None) -> "ERC20MintableMintContractFunction": + def __call__( + self, amount: int, destination: str | None = None + ) -> "ERC20MintableMintContractFunction": if all([destination is not None]): super().__call__() return self @@ -152,6 +272,137 @@ def __call__(self) -> "ERC20MintableNameContractFunction": # def call() +class ERC20MintableNoncesContractFunction(ContractFunction): + """ContractFunction for the nonces method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__(self, arg1: str) -> "ERC20MintableNoncesContractFunction": + super().__call__() + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class ERC20MintableOwnerContractFunction(ContractFunction): + """ContractFunction for the owner method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__(self) -> "ERC20MintableOwnerContractFunction": + super().__call__() + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class ERC20MintablePermitContractFunction(ContractFunction): + """ContractFunction for the permit method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, + owner: str, + spender: str, + value: int, + deadline: int, + v: int, + r: bytes, + s: bytes, + ) -> "ERC20MintablePermitContractFunction": + super().__call__(owner, spender, value, deadline, v, r, s) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class ERC20MintableSetAuthorityContractFunction(ContractFunction): + """ContractFunction for the setAuthority method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, newAuthority: str + ) -> "ERC20MintableSetAuthorityContractFunction": + super().__call__(newAuthority) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class ERC20MintableSetPublicCapabilityContractFunction(ContractFunction): + """ContractFunction for the setPublicCapability method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, functionSig: bytes, enabled: bool + ) -> "ERC20MintableSetPublicCapabilityContractFunction": + super().__call__(functionSig, enabled) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class ERC20MintableSetRoleCapabilityContractFunction(ContractFunction): + """ContractFunction for the setRoleCapability method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, role: int, functionSig: bytes, enabled: bool + ) -> "ERC20MintableSetRoleCapabilityContractFunction": + super().__call__(role, functionSig, enabled) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class ERC20MintableSetTargetCustomAuthorityContractFunction(ContractFunction): + """ContractFunction for the setTargetCustomAuthority method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, target: str, customAuthority: str + ) -> "ERC20MintableSetTargetCustomAuthorityContractFunction": + super().__call__(target, customAuthority) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class ERC20MintableSetUserRoleContractFunction(ContractFunction): + """ContractFunction for the setUserRole method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, user: str, role: int, enabled: bool + ) -> "ERC20MintableSetUserRoleContractFunction": + super().__call__(user, role, enabled) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + class ERC20MintableSymbolContractFunction(ContractFunction): """ContractFunction for the symbol method.""" @@ -186,7 +437,9 @@ class ERC20MintableTransferContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, to: str, amount: int) -> "ERC20MintableTransferContractFunction": + def __call__( + self, to: str, amount: int + ) -> "ERC20MintableTransferContractFunction": super().__call__(to, amount) return self @@ -200,7 +453,9 @@ class ERC20MintableTransferFromContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, _from: str, to: str, amount: int) -> "ERC20MintableTransferFromContractFunction": + def __call__( + self, _from: str, to: str, amount: int + ) -> "ERC20MintableTransferFromContractFunction": super().__call__(_from, to, amount) return self @@ -208,27 +463,73 @@ def __call__(self, _from: str, to: str, amount: int) -> "ERC20MintableTransferFr # def call() +class ERC20MintableTransferOwnershipContractFunction(ContractFunction): + """ContractFunction for the transferOwnership method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, newOwner: str + ) -> "ERC20MintableTransferOwnershipContractFunction": + super().__call__(newOwner) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + class ERC20MintableContractFunctions(ContractFunctions): """ContractFunctions for the ERC20Mintable contract.""" + DOMAIN_SEPARATOR: ERC20MintableDOMAIN_SEPARATORContractFunction + allowance: ERC20MintableAllowanceContractFunction approve: ERC20MintableApproveContractFunction + authority: ERC20MintableAuthorityContractFunction + balanceOf: ERC20MintableBalanceOfContractFunction burn: ERC20MintableBurnContractFunction + canCall: ERC20MintableCanCallContractFunction + decimals: ERC20MintableDecimalsContractFunction - decreaseAllowance: ERC20MintableDecreaseAllowanceContractFunction + doesRoleHaveCapability: ERC20MintableDoesRoleHaveCapabilityContractFunction + + doesUserHaveRole: ERC20MintableDoesUserHaveRoleContractFunction + + getRolesWithCapability: ERC20MintableGetRolesWithCapabilityContractFunction - increaseAllowance: ERC20MintableIncreaseAllowanceContractFunction + getTargetCustomAuthority: ERC20MintableGetTargetCustomAuthorityContractFunction + + getUserRoles: ERC20MintableGetUserRolesContractFunction + + isCapabilityPublic: ERC20MintableIsCapabilityPublicContractFunction mint: ERC20MintableMintContractFunction name: ERC20MintableNameContractFunction + nonces: ERC20MintableNoncesContractFunction + + owner: ERC20MintableOwnerContractFunction + + permit: ERC20MintablePermitContractFunction + + setAuthority: ERC20MintableSetAuthorityContractFunction + + setPublicCapability: ERC20MintableSetPublicCapabilityContractFunction + + setRoleCapability: ERC20MintableSetRoleCapabilityContractFunction + + setTargetCustomAuthority: ERC20MintableSetTargetCustomAuthorityContractFunction + + setUserRole: ERC20MintableSetUserRoleContractFunction + symbol: ERC20MintableSymbolContractFunction totalSupply: ERC20MintableTotalSupplyContractFunction @@ -237,6 +538,8 @@ class ERC20MintableContractFunctions(ContractFunctions): transferFrom: ERC20MintableTransferFromContractFunction + transferOwnership: ERC20MintableTransferOwnershipContractFunction + class ERC20MintableContract(Contract): """A web3.py Contract class for the ERC20Mintable contract.""" @@ -245,7 +548,13 @@ def __init__(self, address: ChecksumAddress | None = None, abi=Any) -> None: self.abi = abi # TODO: make this better, shouldn't initialize to the zero address, but the Contract's init # function requires an address. - self.address = address if address else cast(ChecksumAddress, "0x0000000000000000000000000000000000000000") + self.address = ( + address + if address + else cast( + ChecksumAddress, "0x0000000000000000000000000000000000000000" + ) + ) try: # Initialize parent Contract class diff --git a/lib/hypertypes/hypertypes/ERC20MintableTypes.py b/lib/hypertypes/hypertypes/ERC20MintableTypes.py index 49a7084553..bd40002432 100644 --- a/lib/hypertypes/hypertypes/ERC20MintableTypes.py +++ b/lib/hypertypes/hypertypes/ERC20MintableTypes.py @@ -24,19 +24,81 @@ inputs=[ ABIEventParams(indexed=True, name="owner", type="address"), ABIEventParams(indexed=True, name="spender", type="address"), - ABIEventParams(indexed=False, name="value", type="uint256"), + ABIEventParams(indexed=False, name="amount", type="uint256"), ], name="Approval", type="event", ) +AuthorityUpdated = ABIEvent( + anonymous=False, + inputs=[ + ABIEventParams(indexed=True, name="user", type="address"), + ABIEventParams(indexed=True, name="newAuthority", type="address"), + ], + name="AuthorityUpdated", + type="event", +) + +OwnershipTransferred = ABIEvent( + anonymous=False, + inputs=[ + ABIEventParams(indexed=True, name="user", type="address"), + ABIEventParams(indexed=True, name="newOwner", type="address"), + ], + name="OwnershipTransferred", + type="event", +) + +PublicCapabilityUpdated = ABIEvent( + anonymous=False, + inputs=[ + ABIEventParams(indexed=True, name="functionSig", type="bytes4"), + ABIEventParams(indexed=False, name="enabled", type="bool"), + ], + name="PublicCapabilityUpdated", + type="event", +) + +RoleCapabilityUpdated = ABIEvent( + anonymous=False, + inputs=[ + ABIEventParams(indexed=True, name="role", type="uint8"), + ABIEventParams(indexed=True, name="functionSig", type="bytes4"), + ABIEventParams(indexed=False, name="enabled", type="bool"), + ], + name="RoleCapabilityUpdated", + type="event", +) + +TargetCustomAuthorityUpdated = ABIEvent( + anonymous=False, + inputs=[ + ABIEventParams(indexed=True, name="target", type="address"), + ABIEventParams(indexed=True, name="authority", type="address"), + ], + name="TargetCustomAuthorityUpdated", + type="event", +) + Transfer = ABIEvent( anonymous=False, inputs=[ ABIEventParams(indexed=True, name="from", type="address"), ABIEventParams(indexed=True, name="to", type="address"), - ABIEventParams(indexed=False, name="value", type="uint256"), + ABIEventParams(indexed=False, name="amount", type="uint256"), ], name="Transfer", type="event", ) + +UserRoleUpdated = ABIEvent( + anonymous=False, + inputs=[ + ABIEventParams(indexed=True, name="user", type="address"), + ABIEventParams(indexed=True, name="role", type="uint8"), + ABIEventParams(indexed=False, name="enabled", type="bool"), + ], + name="UserRoleUpdated", + type="event", +) diff --git a/lib/hypertypes/hypertypes/ERC4626DataProviderContract.py b/lib/hypertypes/hypertypes/ERC4626DataProviderContract.py index 109f0c9c60..32842aa258 100644 --- a/lib/hypertypes/hypertypes/ERC4626DataProviderContract.py +++ b/lib/hypertypes/hypertypes/ERC4626DataProviderContract.py @@ -22,7 +22,9 @@ class ERC4626DataProviderBalanceOfContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, tokenId: int, account: str) -> "ERC4626DataProviderBalanceOfContractFunction": + def __call__( + self, tokenId: int, account: str + ) -> "ERC4626DataProviderBalanceOfContractFunction": super().__call__(tokenId, account) return self @@ -64,7 +66,9 @@ class ERC4626DataProviderGetCheckpointContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, _checkpointId: int) -> "ERC4626DataProviderGetCheckpointContractFunction": + def __call__( + self, _checkpointId: int + ) -> "ERC4626DataProviderGetCheckpointContractFunction": super().__call__(_checkpointId) return self @@ -114,7 +118,9 @@ def __call__(self) -> "ERC4626DataProviderGetPoolInfoContractFunction": # def call() -class ERC4626DataProviderGetUncollectedGovernanceFeesContractFunction(ContractFunction): +class ERC4626DataProviderGetUncollectedGovernanceFeesContractFunction( + ContractFunction +): """ContractFunction for the getUncollectedGovernanceFees method.""" # super() call methods are generic, while our version adds values & types @@ -150,7 +156,9 @@ class ERC4626DataProviderIsApprovedForAllContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, account: str, operator: str) -> "ERC4626DataProviderIsApprovedForAllContractFunction": + def __call__( + self, account: str, operator: str + ) -> "ERC4626DataProviderIsApprovedForAllContractFunction": super().__call__(account, operator) return self @@ -164,7 +172,9 @@ class ERC4626DataProviderIsSweepableContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, _target: str) -> "ERC4626DataProviderIsSweepableContractFunction": + def __call__( + self, _target: str + ) -> "ERC4626DataProviderIsSweepableContractFunction": super().__call__(_target) return self @@ -192,7 +202,9 @@ class ERC4626DataProviderLoadContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, _slots: list[int]) -> "ERC4626DataProviderLoadContractFunction": + def __call__( + self, _slots: list[int] + ) -> "ERC4626DataProviderLoadContractFunction": super().__call__(_slots) return self @@ -206,7 +218,9 @@ class ERC4626DataProviderNameContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, tokenId: int) -> "ERC4626DataProviderNameContractFunction": + def __call__( + self, tokenId: int + ) -> "ERC4626DataProviderNameContractFunction": super().__call__(tokenId) return self @@ -220,7 +234,9 @@ class ERC4626DataProviderNoncesContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, account: str) -> "ERC4626DataProviderNoncesContractFunction": + def __call__( + self, account: str + ) -> "ERC4626DataProviderNoncesContractFunction": super().__call__(account) return self @@ -264,7 +280,9 @@ class ERC4626DataProviderQueryContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, period: int) -> "ERC4626DataProviderQueryContractFunction": + def __call__( + self, period: int + ) -> "ERC4626DataProviderQueryContractFunction": super().__call__(period) return self @@ -278,7 +296,9 @@ class ERC4626DataProviderSymbolContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, tokenId: int) -> "ERC4626DataProviderSymbolContractFunction": + def __call__( + self, tokenId: int + ) -> "ERC4626DataProviderSymbolContractFunction": super().__call__(tokenId) return self @@ -292,7 +312,9 @@ class ERC4626DataProviderTotalSupplyContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, tokenId: int) -> "ERC4626DataProviderTotalSupplyContractFunction": + def __call__( + self, tokenId: int + ) -> "ERC4626DataProviderTotalSupplyContractFunction": super().__call__(tokenId) return self @@ -351,7 +373,13 @@ def __init__(self, address: ChecksumAddress | None = None, abi=Any) -> None: self.abi = abi # TODO: make this better, shouldn't initialize to the zero address, but the Contract's init # function requires an address. - self.address = address if address else cast(ChecksumAddress, "0x0000000000000000000000000000000000000000") + self.address = ( + address + if address + else cast( + ChecksumAddress, "0x0000000000000000000000000000000000000000" + ) + ) try: # Initialize parent Contract class diff --git a/lib/hypertypes/hypertypes/ERC4626HyperdriveDeployerContract.py b/lib/hypertypes/hypertypes/ERC4626HyperdriveDeployerContract.py index b384620f9f..32d1e70b06 100644 --- a/lib/hypertypes/hypertypes/ERC4626HyperdriveDeployerContract.py +++ b/lib/hypertypes/hypertypes/ERC4626HyperdriveDeployerContract.py @@ -30,7 +30,9 @@ def __call__( _linkerFactory: str, _extraData: list[bytes], ) -> "ERC4626HyperdriveDeployerDeployContractFunction": - super().__call__(_config, _dataProvider, _linkerCodeHash, _linkerFactory, _extraData) + super().__call__( + _config, _dataProvider, _linkerCodeHash, _linkerFactory, _extraData + ) return self # TODO: add call def so we can get return types for the calls @@ -50,7 +52,13 @@ def __init__(self, address: ChecksumAddress | None = None, abi=Any) -> None: self.abi = abi # TODO: make this better, shouldn't initialize to the zero address, but the Contract's init # function requires an address. - self.address = address if address else cast(ChecksumAddress, "0x0000000000000000000000000000000000000000") + self.address = ( + address + if address + else cast( + ChecksumAddress, "0x0000000000000000000000000000000000000000" + ) + ) try: # Initialize parent Contract class diff --git a/lib/hypertypes/hypertypes/ERC4626HyperdriveFactoryContract.py b/lib/hypertypes/hypertypes/ERC4626HyperdriveFactoryContract.py index cd6961b731..5654f7d6b0 100644 --- a/lib/hypertypes/hypertypes/ERC4626HyperdriveFactoryContract.py +++ b/lib/hypertypes/hypertypes/ERC4626HyperdriveFactoryContract.py @@ -16,7 +16,9 @@ from web3.exceptions import FallbackNotFound -class ERC4626HyperdriveFactoryDeployAndInitializeContractFunction(ContractFunction): +class ERC4626HyperdriveFactoryDeployAndInitializeContractFunction( + ContractFunction +): """ContractFunction for the deployAndInitialize method.""" # super() call methods are generic, while our version adds values & types @@ -62,7 +64,9 @@ def __call__(self) -> "ERC4626HyperdriveFactoryFeesContractFunction": # def call() -class ERC4626HyperdriveFactoryGetDefaultPausersContractFunction(ContractFunction): +class ERC4626HyperdriveFactoryGetDefaultPausersContractFunction( + ContractFunction +): """ContractFunction for the getDefaultPausers method.""" # super() call methods are generic, while our version adds values & types @@ -108,7 +112,9 @@ def __call__(self) -> "ERC4626HyperdriveFactoryGovernanceContractFunction": # def call() -class ERC4626HyperdriveFactoryHyperdriveDeployerContractFunction(ContractFunction): +class ERC4626HyperdriveFactoryHyperdriveDeployerContractFunction( + ContractFunction +): """ContractFunction for the hyperdriveDeployer method.""" # super() call methods are generic, while our version adds values & types @@ -124,7 +130,9 @@ def __call__( # def call() -class ERC4626HyperdriveFactoryHyperdriveGovernanceContractFunction(ContractFunction): +class ERC4626HyperdriveFactoryHyperdriveGovernanceContractFunction( + ContractFunction +): """ContractFunction for the hyperdriveGovernance method.""" # super() call methods are generic, while our version adds values & types @@ -146,7 +154,9 @@ class ERC4626HyperdriveFactoryIsOfficialContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, instance: str) -> "ERC4626HyperdriveFactoryIsOfficialContractFunction": + def __call__( + self, instance: str + ) -> "ERC4626HyperdriveFactoryIsOfficialContractFunction": super().__call__(instance) return self @@ -186,13 +196,17 @@ def __call__( # def call() -class ERC4626HyperdriveFactoryUpdateDefaultPausersContractFunction(ContractFunction): +class ERC4626HyperdriveFactoryUpdateDefaultPausersContractFunction( + ContractFunction +): """ContractFunction for the updateDefaultPausers method.""" # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, _defaultPausers_: list[str]) -> "ERC4626HyperdriveFactoryUpdateDefaultPausersContractFunction": + def __call__( + self, _defaultPausers_: list[str] + ) -> "ERC4626HyperdriveFactoryUpdateDefaultPausersContractFunction": super().__call__(_defaultPausers_) return self @@ -200,13 +214,17 @@ def __call__(self, _defaultPausers_: list[str]) -> "ERC4626HyperdriveFactoryUpda # def call() -class ERC4626HyperdriveFactoryUpdateFeeCollectorContractFunction(ContractFunction): +class ERC4626HyperdriveFactoryUpdateFeeCollectorContractFunction( + ContractFunction +): """ContractFunction for the updateFeeCollector method.""" # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, _feeCollector: str) -> "ERC4626HyperdriveFactoryUpdateFeeCollectorContractFunction": + def __call__( + self, _feeCollector: str + ) -> "ERC4626HyperdriveFactoryUpdateFeeCollectorContractFunction": super().__call__(_feeCollector) return self @@ -220,7 +238,9 @@ class ERC4626HyperdriveFactoryUpdateFeesContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, _fees: tuple) -> "ERC4626HyperdriveFactoryUpdateFeesContractFunction": + def __call__( + self, _fees: tuple + ) -> "ERC4626HyperdriveFactoryUpdateFeesContractFunction": super().__call__(_fees) return self @@ -228,13 +248,17 @@ def __call__(self, _fees: tuple) -> "ERC4626HyperdriveFactoryUpdateFeesContractF # def call() -class ERC4626HyperdriveFactoryUpdateGovernanceContractFunction(ContractFunction): +class ERC4626HyperdriveFactoryUpdateGovernanceContractFunction( + ContractFunction +): """ContractFunction for the updateGovernance method.""" # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, _governance: str) -> "ERC4626HyperdriveFactoryUpdateGovernanceContractFunction": + def __call__( + self, _governance: str + ) -> "ERC4626HyperdriveFactoryUpdateGovernanceContractFunction": super().__call__(_governance) return self @@ -242,7 +266,9 @@ def __call__(self, _governance: str) -> "ERC4626HyperdriveFactoryUpdateGovernanc # def call() -class ERC4626HyperdriveFactoryUpdateHyperdriveGovernanceContractFunction(ContractFunction): +class ERC4626HyperdriveFactoryUpdateHyperdriveGovernanceContractFunction( + ContractFunction +): """ContractFunction for the updateHyperdriveGovernance method.""" # super() call methods are generic, while our version adds values & types @@ -258,13 +284,17 @@ def __call__( # def call() -class ERC4626HyperdriveFactoryUpdateImplementationContractFunction(ContractFunction): +class ERC4626HyperdriveFactoryUpdateImplementationContractFunction( + ContractFunction +): """ContractFunction for the updateImplementation method.""" # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, newDeployer: str) -> "ERC4626HyperdriveFactoryUpdateImplementationContractFunction": + def __call__( + self, newDeployer: str + ) -> "ERC4626HyperdriveFactoryUpdateImplementationContractFunction": super().__call__(newDeployer) return self @@ -272,13 +302,17 @@ def __call__(self, newDeployer: str) -> "ERC4626HyperdriveFactoryUpdateImplement # def call() -class ERC4626HyperdriveFactoryUpdateLinkerCodeHashContractFunction(ContractFunction): +class ERC4626HyperdriveFactoryUpdateLinkerCodeHashContractFunction( + ContractFunction +): """ContractFunction for the updateLinkerCodeHash method.""" # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, _linkerCodeHash: bytes) -> "ERC4626HyperdriveFactoryUpdateLinkerCodeHashContractFunction": + def __call__( + self, _linkerCodeHash: bytes + ) -> "ERC4626HyperdriveFactoryUpdateLinkerCodeHashContractFunction": super().__call__(_linkerCodeHash) return self @@ -286,13 +320,17 @@ def __call__(self, _linkerCodeHash: bytes) -> "ERC4626HyperdriveFactoryUpdateLin # def call() -class ERC4626HyperdriveFactoryUpdateLinkerFactoryContractFunction(ContractFunction): +class ERC4626HyperdriveFactoryUpdateLinkerFactoryContractFunction( + ContractFunction +): """ContractFunction for the updateLinkerFactory method.""" # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, _linkerFactory: str) -> "ERC4626HyperdriveFactoryUpdateLinkerFactoryContractFunction": + def __call__( + self, _linkerFactory: str + ) -> "ERC4626HyperdriveFactoryUpdateLinkerFactoryContractFunction": super().__call__(_linkerFactory) return self @@ -300,13 +338,17 @@ def __call__(self, _linkerFactory: str) -> "ERC4626HyperdriveFactoryUpdateLinker # def call() -class ERC4626HyperdriveFactoryUpdateSweepTargetsContractFunction(ContractFunction): +class ERC4626HyperdriveFactoryUpdateSweepTargetsContractFunction( + ContractFunction +): """ContractFunction for the updateSweepTargets method.""" # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, _sweepTargets_: list[str]) -> "ERC4626HyperdriveFactoryUpdateSweepTargetsContractFunction": + def __call__( + self, _sweepTargets_: list[str] + ) -> "ERC4626HyperdriveFactoryUpdateSweepTargetsContractFunction": super().__call__(_sweepTargets_) return self @@ -383,7 +425,13 @@ def __init__(self, address: ChecksumAddress | None = None, abi=Any) -> None: self.abi = abi # TODO: make this better, shouldn't initialize to the zero address, but the Contract's init # function requires an address. - self.address = address if address else cast(ChecksumAddress, "0x0000000000000000000000000000000000000000") + self.address = ( + address + if address + else cast( + ChecksumAddress, "0x0000000000000000000000000000000000000000" + ) + ) try: # Initialize parent Contract class diff --git a/lib/hypertypes/hypertypes/ERC4626HyperdriveFactoryTypes.py b/lib/hypertypes/hypertypes/ERC4626HyperdriveFactoryTypes.py index 4e6491d4e2..6177d46b1a 100644 --- a/lib/hypertypes/hypertypes/ERC4626HyperdriveFactoryTypes.py +++ b/lib/hypertypes/hypertypes/ERC4626HyperdriveFactoryTypes.py @@ -95,7 +95,9 @@ class PoolConfig: HyperdriveGovernanceUpdated = ABIEvent( anonymous=False, inputs=[ - ABIEventParams(indexed=True, name="hyperdriveGovernance", type="address"), + ABIEventParams( + indexed=True, name="hyperdriveGovernance", type="address" + ), ], name="HyperdriveGovernanceUpdated", type="event", diff --git a/lib/hypertypes/hypertypes/ForwarderFactoryContract.py b/lib/hypertypes/hypertypes/ForwarderFactoryContract.py index 88d90f9139..efe24c3464 100644 --- a/lib/hypertypes/hypertypes/ForwarderFactoryContract.py +++ b/lib/hypertypes/hypertypes/ForwarderFactoryContract.py @@ -36,7 +36,9 @@ class ForwarderFactoryCreateContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, token: str, tokenId: int) -> "ForwarderFactoryCreateContractFunction": + def __call__( + self, token: str, tokenId: int + ) -> "ForwarderFactoryCreateContractFunction": super().__call__(token, tokenId) return self @@ -64,7 +66,9 @@ class ForwarderFactoryGetForwarderContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, token: str, tokenId: int) -> "ForwarderFactoryGetForwarderContractFunction": + def __call__( + self, token: str, tokenId: int + ) -> "ForwarderFactoryGetForwarderContractFunction": super().__call__(token, tokenId) return self @@ -91,7 +95,13 @@ def __init__(self, address: ChecksumAddress | None = None, abi=Any) -> None: self.abi = abi # TODO: make this better, shouldn't initialize to the zero address, but the Contract's init # function requires an address. - self.address = address if address else cast(ChecksumAddress, "0x0000000000000000000000000000000000000000") + self.address = ( + address + if address + else cast( + ChecksumAddress, "0x0000000000000000000000000000000000000000" + ) + ) try: # Initialize parent Contract class diff --git a/lib/hypertypes/hypertypes/IERC4626HyperdriveContract.py b/lib/hypertypes/hypertypes/IERC4626HyperdriveContract.py new file mode 100644 index 0000000000..e1fe861109 --- /dev/null +++ b/lib/hypertypes/hypertypes/IERC4626HyperdriveContract.py @@ -0,0 +1,826 @@ +"""A web3.py Contract class for the IERC4626Hyperdrive contract.""" +# contracts have PascalCase names +# pylint: disable=invalid-name +# contracts control how many attributes and arguments we have in generated code +# pylint: disable=too-many-instance-attributes +# pylint: disable=too-many-arguments +# we don't need else statement if the other conditionals all have return, +# but it's easier to generate +# pylint: disable=no-else-return +from __future__ import annotations + +from typing import Any, cast + +from eth_typing import ChecksumAddress +from web3.contract.contract import Contract, ContractFunction, ContractFunctions +from web3.exceptions import FallbackNotFound + + +class IERC4626HyperdriveDOMAIN_SEPARATORContractFunction(ContractFunction): + """ContractFunction for the DOMAIN_SEPARATOR method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__(self) -> "IERC4626HyperdriveDOMAIN_SEPARATORContractFunction": + super().__call__() + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveAddLiquidityContractFunction(ContractFunction): + """ContractFunction for the addLiquidity method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, + _contribution: int, + _minApr: int, + _maxApr: int, + _destination: str, + _asUnderlying: bool, + ) -> "IERC4626HyperdriveAddLiquidityContractFunction": + super().__call__( + _contribution, _minApr, _maxApr, _destination, _asUnderlying + ) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveBalanceOfContractFunction(ContractFunction): + """ContractFunction for the balanceOf method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, tokenId: int, owner: str + ) -> "IERC4626HyperdriveBalanceOfContractFunction": + super().__call__(tokenId, owner) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveBaseTokenContractFunction(ContractFunction): + """ContractFunction for the baseToken method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__(self) -> "IERC4626HyperdriveBaseTokenContractFunction": + super().__call__() + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveBatchTransferFromContractFunction(ContractFunction): + """ContractFunction for the batchTransferFrom method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, _from: str, to: str, ids: list[int], values: list[int] + ) -> "IERC4626HyperdriveBatchTransferFromContractFunction": + super().__call__(_from, to, ids, values) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveCheckpointContractFunction(ContractFunction): + """ContractFunction for the checkpoint method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, _checkpointTime: int + ) -> "IERC4626HyperdriveCheckpointContractFunction": + super().__call__(_checkpointTime) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveCloseLongContractFunction(ContractFunction): + """ContractFunction for the closeLong method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, + _maturityTime: int, + _bondAmount: int, + _minOutput: int, + _destination: str, + _asUnderlying: bool, + ) -> "IERC4626HyperdriveCloseLongContractFunction": + super().__call__( + _maturityTime, _bondAmount, _minOutput, _destination, _asUnderlying + ) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveCloseShortContractFunction(ContractFunction): + """ContractFunction for the closeShort method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, + _maturityTime: int, + _bondAmount: int, + _minOutput: int, + _destination: str, + _asUnderlying: bool, + ) -> "IERC4626HyperdriveCloseShortContractFunction": + super().__call__( + _maturityTime, _bondAmount, _minOutput, _destination, _asUnderlying + ) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveCollectGovernanceFeeContractFunction(ContractFunction): + """ContractFunction for the collectGovernanceFee method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, asUnderlying: bool + ) -> "IERC4626HyperdriveCollectGovernanceFeeContractFunction": + super().__call__(asUnderlying) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveFactoryContractFunction(ContractFunction): + """ContractFunction for the factory method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__(self) -> "IERC4626HyperdriveFactoryContractFunction": + super().__call__() + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveGetCheckpointContractFunction(ContractFunction): + """ContractFunction for the getCheckpoint method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, _checkpointId: int + ) -> "IERC4626HyperdriveGetCheckpointContractFunction": + super().__call__(_checkpointId) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveGetMarketStateContractFunction(ContractFunction): + """ContractFunction for the getMarketState method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__(self) -> "IERC4626HyperdriveGetMarketStateContractFunction": + super().__call__() + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveGetPoolConfigContractFunction(ContractFunction): + """ContractFunction for the getPoolConfig method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__(self) -> "IERC4626HyperdriveGetPoolConfigContractFunction": + super().__call__() + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveGetPoolInfoContractFunction(ContractFunction): + """ContractFunction for the getPoolInfo method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__(self) -> "IERC4626HyperdriveGetPoolInfoContractFunction": + super().__call__() + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveGetUncollectedGovernanceFeesContractFunction( + ContractFunction +): + """ContractFunction for the getUncollectedGovernanceFees method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, + ) -> "IERC4626HyperdriveGetUncollectedGovernanceFeesContractFunction": + super().__call__() + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveGetWithdrawPoolContractFunction(ContractFunction): + """ContractFunction for the getWithdrawPool method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__(self) -> "IERC4626HyperdriveGetWithdrawPoolContractFunction": + super().__call__() + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveInitializeContractFunction(ContractFunction): + """ContractFunction for the initialize method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, + _contribution: int, + _apr: int, + _destination: str, + _asUnderlying: bool, + ) -> "IERC4626HyperdriveInitializeContractFunction": + super().__call__(_contribution, _apr, _destination, _asUnderlying) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveIsApprovedForAllContractFunction(ContractFunction): + """ContractFunction for the isApprovedForAll method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, owner: str, spender: str + ) -> "IERC4626HyperdriveIsApprovedForAllContractFunction": + super().__call__(owner, spender) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveIsSweepableContractFunction(ContractFunction): + """ContractFunction for the isSweepable method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, _target: str + ) -> "IERC4626HyperdriveIsSweepableContractFunction": + super().__call__(_target) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveLinkerCodeHashContractFunction(ContractFunction): + """ContractFunction for the linkerCodeHash method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__(self) -> "IERC4626HyperdriveLinkerCodeHashContractFunction": + super().__call__() + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveLoadContractFunction(ContractFunction): + """ContractFunction for the load method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, _slots: list[int] + ) -> "IERC4626HyperdriveLoadContractFunction": + super().__call__(_slots) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveNameContractFunction(ContractFunction): + """ContractFunction for the name method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__(self, _id: int) -> "IERC4626HyperdriveNameContractFunction": + super().__call__(_id) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveNoncesContractFunction(ContractFunction): + """ContractFunction for the nonces method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, owner: str + ) -> "IERC4626HyperdriveNoncesContractFunction": + super().__call__(owner) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveOpenLongContractFunction(ContractFunction): + """ContractFunction for the openLong method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, + _baseAmount: int, + _minOutput: int, + _minSharePrice: int, + _destination: str, + _asUnderlying: bool, + ) -> "IERC4626HyperdriveOpenLongContractFunction": + super().__call__( + _baseAmount, _minOutput, _minSharePrice, _destination, _asUnderlying + ) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveOpenShortContractFunction(ContractFunction): + """ContractFunction for the openShort method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, + _bondAmount: int, + _maxDeposit: int, + _minSharePrice: int, + _destination: str, + _asUnderlying: bool, + ) -> "IERC4626HyperdriveOpenShortContractFunction": + super().__call__( + _bondAmount, + _maxDeposit, + _minSharePrice, + _destination, + _asUnderlying, + ) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdrivePauseContractFunction(ContractFunction): + """ContractFunction for the pause method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, status: bool + ) -> "IERC4626HyperdrivePauseContractFunction": + super().__call__(status) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdrivePerTokenApprovalsContractFunction(ContractFunction): + """ContractFunction for the perTokenApprovals method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, tokenId: int, owner: str, spender: str + ) -> "IERC4626HyperdrivePerTokenApprovalsContractFunction": + super().__call__(tokenId, owner, spender) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdrivePermitForAllContractFunction(ContractFunction): + """ContractFunction for the permitForAll method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, + owner: str, + spender: str, + _approved: bool, + deadline: int, + v: int, + r: bytes, + s: bytes, + ) -> "IERC4626HyperdrivePermitForAllContractFunction": + super().__call__(owner, spender, _approved, deadline, v, r, s) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdrivePoolContractFunction(ContractFunction): + """ContractFunction for the pool method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__(self) -> "IERC4626HyperdrivePoolContractFunction": + super().__call__() + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveRedeemWithdrawalSharesContractFunction( + ContractFunction +): + """ContractFunction for the redeemWithdrawalShares method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, + _shares: int, + _minOutput: int, + _destination: str, + _asUnderlying: bool, + ) -> "IERC4626HyperdriveRedeemWithdrawalSharesContractFunction": + super().__call__(_shares, _minOutput, _destination, _asUnderlying) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveRemoveLiquidityContractFunction(ContractFunction): + """ContractFunction for the removeLiquidity method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, + _shares: int, + _minOutput: int, + _destination: str, + _asUnderlying: bool, + ) -> "IERC4626HyperdriveRemoveLiquidityContractFunction": + super().__call__(_shares, _minOutput, _destination, _asUnderlying) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveSetApprovalContractFunction(ContractFunction): + """ContractFunction for the setApproval method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, tokenID: int, operator: str, amount: int + ) -> "IERC4626HyperdriveSetApprovalContractFunction": + super().__call__(tokenID, operator, amount) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveSetApprovalBridgeContractFunction(ContractFunction): + """ContractFunction for the setApprovalBridge method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, tokenID: int, operator: str, amount: int, caller: str + ) -> "IERC4626HyperdriveSetApprovalBridgeContractFunction": + super().__call__(tokenID, operator, amount, caller) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveSetApprovalForAllContractFunction(ContractFunction): + """ContractFunction for the setApprovalForAll method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, operator: str, approved: bool + ) -> "IERC4626HyperdriveSetApprovalForAllContractFunction": + super().__call__(operator, approved) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveSetGovernanceContractFunction(ContractFunction): + """ContractFunction for the setGovernance method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, who: str + ) -> "IERC4626HyperdriveSetGovernanceContractFunction": + super().__call__(who) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveSetPauserContractFunction(ContractFunction): + """ContractFunction for the setPauser method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, who: str, status: bool + ) -> "IERC4626HyperdriveSetPauserContractFunction": + super().__call__(who, status) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveSweepContractFunction(ContractFunction): + """ContractFunction for the sweep method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, _target: str + ) -> "IERC4626HyperdriveSweepContractFunction": + super().__call__(_target) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveSymbolContractFunction(ContractFunction): + """ContractFunction for the symbol method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__(self, _id: int) -> "IERC4626HyperdriveSymbolContractFunction": + super().__call__(_id) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveTotalSupplyContractFunction(ContractFunction): + """ContractFunction for the totalSupply method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, _id: int + ) -> "IERC4626HyperdriveTotalSupplyContractFunction": + super().__call__(_id) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveTransferFromContractFunction(ContractFunction): + """ContractFunction for the transferFrom method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, tokenID: int, _from: str, to: str, amount: int + ) -> "IERC4626HyperdriveTransferFromContractFunction": + super().__call__(tokenID, _from, to, amount) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveTransferFromBridgeContractFunction(ContractFunction): + """ContractFunction for the transferFromBridge method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, tokenID: int, _from: str, to: str, amount: int, caller: str + ) -> "IERC4626HyperdriveTransferFromBridgeContractFunction": + super().__call__(tokenID, _from, to, amount, caller) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class IERC4626HyperdriveContractFunctions(ContractFunctions): + """ContractFunctions for the IERC4626Hyperdrive contract.""" + + DOMAIN_SEPARATOR: IERC4626HyperdriveDOMAIN_SEPARATORContractFunction + + addLiquidity: IERC4626HyperdriveAddLiquidityContractFunction + + balanceOf: IERC4626HyperdriveBalanceOfContractFunction + + baseToken: IERC4626HyperdriveBaseTokenContractFunction + + batchTransferFrom: IERC4626HyperdriveBatchTransferFromContractFunction + + checkpoint: IERC4626HyperdriveCheckpointContractFunction + + closeLong: IERC4626HyperdriveCloseLongContractFunction + + closeShort: IERC4626HyperdriveCloseShortContractFunction + + collectGovernanceFee: IERC4626HyperdriveCollectGovernanceFeeContractFunction + + factory: IERC4626HyperdriveFactoryContractFunction + + getCheckpoint: IERC4626HyperdriveGetCheckpointContractFunction + + getMarketState: IERC4626HyperdriveGetMarketStateContractFunction + + getPoolConfig: IERC4626HyperdriveGetPoolConfigContractFunction + + getPoolInfo: IERC4626HyperdriveGetPoolInfoContractFunction + + getUncollectedGovernanceFees: IERC4626HyperdriveGetUncollectedGovernanceFeesContractFunction + + getWithdrawPool: IERC4626HyperdriveGetWithdrawPoolContractFunction + + initialize: IERC4626HyperdriveInitializeContractFunction + + isApprovedForAll: IERC4626HyperdriveIsApprovedForAllContractFunction + + isSweepable: IERC4626HyperdriveIsSweepableContractFunction + + linkerCodeHash: IERC4626HyperdriveLinkerCodeHashContractFunction + + load: IERC4626HyperdriveLoadContractFunction + + name: IERC4626HyperdriveNameContractFunction + + nonces: IERC4626HyperdriveNoncesContractFunction + + openLong: IERC4626HyperdriveOpenLongContractFunction + + openShort: IERC4626HyperdriveOpenShortContractFunction + + pause: IERC4626HyperdrivePauseContractFunction + + perTokenApprovals: IERC4626HyperdrivePerTokenApprovalsContractFunction + + permitForAll: IERC4626HyperdrivePermitForAllContractFunction + + pool: IERC4626HyperdrivePoolContractFunction + + redeemWithdrawalShares: IERC4626HyperdriveRedeemWithdrawalSharesContractFunction + + removeLiquidity: IERC4626HyperdriveRemoveLiquidityContractFunction + + setApproval: IERC4626HyperdriveSetApprovalContractFunction + + setApprovalBridge: IERC4626HyperdriveSetApprovalBridgeContractFunction + + setApprovalForAll: IERC4626HyperdriveSetApprovalForAllContractFunction + + setGovernance: IERC4626HyperdriveSetGovernanceContractFunction + + setPauser: IERC4626HyperdriveSetPauserContractFunction + + sweep: IERC4626HyperdriveSweepContractFunction + + symbol: IERC4626HyperdriveSymbolContractFunction + + totalSupply: IERC4626HyperdriveTotalSupplyContractFunction + + transferFrom: IERC4626HyperdriveTransferFromContractFunction + + transferFromBridge: IERC4626HyperdriveTransferFromBridgeContractFunction + + +class IERC4626HyperdriveContract(Contract): + """A web3.py Contract class for the IERC4626Hyperdrive contract.""" + + def __init__(self, address: ChecksumAddress | None = None, abi=Any) -> None: + self.abi = abi + # TODO: make this better, shouldn't initialize to the zero address, but the Contract's init + # function requires an address. + self.address = ( + address + if address + else cast( + ChecksumAddress, "0x0000000000000000000000000000000000000000" + ) + ) + + try: + # Initialize parent Contract class + super().__init__(address=address) + + except FallbackNotFound: + print("Fallback function not found. Continuing...") + + # TODO: add events + # events: ERC20ContractEvents + + functions: IERC4626HyperdriveContractFunctions diff --git a/lib/hypertypes/hypertypes/IERC4626HyperdriveTypes.py b/lib/hypertypes/hypertypes/IERC4626HyperdriveTypes.py new file mode 100644 index 0000000000..2c418ff93b --- /dev/null +++ b/lib/hypertypes/hypertypes/IERC4626HyperdriveTypes.py @@ -0,0 +1,237 @@ +"""Dataclasses for all structs in the IERC4626Hyperdrive contract.""" +# super() call methods are generic, while our version adds values & types +# pylint: disable=arguments-differ +# contracts have PascalCase names +# pylint: disable=invalid-name +# contracts control how many attributes and arguments we have in generated code +# pylint: disable=too-many-instance-attributes +# pylint: disable=too-many-arguments +# unable to determine which imports will be used in the generated code +# pylint: disable=unused-import +# we don't need else statement if the other conditionals all have return, +# but it's easier to generate +# pylint: disable=no-else-return +from __future__ import annotations + + +from dataclasses import dataclass + +from web3.types import ABIEvent + +from web3.types import ABIEventParams + + +@dataclass +class Checkpoint: + """Checkpoint struct.""" + + sharePrice: int + longExposure: int + + +@dataclass +class MarketState: + """MarketState struct.""" + + shareReserves: int + bondReserves: int + shareAdjustment: int + longExposure: int + longsOutstanding: int + shortsOutstanding: int + longAverageMaturityTime: int + shortAverageMaturityTime: int + isInitialized: bool + isPaused: bool + + +@dataclass +class Fees: + """Fees struct.""" + + curve: int + flat: int + governance: int + + +@dataclass +class PoolConfig: + """PoolConfig struct.""" + + baseToken: str + initialSharePrice: int + minimumShareReserves: int + minimumTransactionAmount: int + positionDuration: int + checkpointDuration: int + timeStretch: int + governance: str + feeCollector: str + fees: Fees + oracleSize: int + updateGap: int + + +@dataclass +class PoolInfo: + """PoolInfo struct.""" + + shareReserves: int + shareAdjustment: int + bondReserves: int + lpTotalSupply: int + sharePrice: int + longsOutstanding: int + longAverageMaturityTime: int + shortsOutstanding: int + shortAverageMaturityTime: int + withdrawalSharesReadyToWithdraw: int + withdrawalSharesProceeds: int + lpSharePrice: int + longExposure: int + + +@dataclass +class WithdrawPool: + """WithdrawPool struct.""" + + readyToWithdraw: int + proceeds: int + + +AddLiquidity = ABIEvent( + anonymous=False, + inputs=[ + ABIEventParams(indexed=True, name="provider", type="address"), + ABIEventParams(indexed=False, name="lpAmount", type="uint256"), + ABIEventParams(indexed=False, name="baseAmount", type="uint256"), + ], + name="AddLiquidity", + type="event", +) + +Approval = ABIEvent( + anonymous=False, + inputs=[ + ABIEventParams(indexed=True, name="owner", type="address"), + ABIEventParams(indexed=True, name="spender", type="address"), + ABIEventParams(indexed=False, name="value", type="uint256"), + ], + name="Approval", + type="event", +) + +ApprovalForAll = ABIEvent( + anonymous=False, + inputs=[ + ABIEventParams(indexed=True, name="account", type="address"), + ABIEventParams(indexed=True, name="operator", type="address"), + ABIEventParams(indexed=False, name="approved", type="bool"), + ], + name="ApprovalForAll", + type="event", +) + +CloseLong = ABIEvent( + anonymous=False, + inputs=[ + ABIEventParams(indexed=True, name="trader", type="address"), + ABIEventParams(indexed=True, name="assetId", type="uint256"), + ABIEventParams(indexed=False, name="maturityTime", type="uint256"), + ABIEventParams(indexed=False, name="baseAmount", type="uint256"), + ABIEventParams(indexed=False, name="bondAmount", type="uint256"), + ], + name="CloseLong", + type="event", +) + +CloseShort = ABIEvent( + anonymous=False, + inputs=[ + ABIEventParams(indexed=True, name="trader", type="address"), + ABIEventParams(indexed=True, name="assetId", type="uint256"), + ABIEventParams(indexed=False, name="maturityTime", type="uint256"), + ABIEventParams(indexed=False, name="baseAmount", type="uint256"), + ABIEventParams(indexed=False, name="bondAmount", type="uint256"), + ], + name="CloseShort", + type="event", +) + +Initialize = ABIEvent( + anonymous=False, + inputs=[ + ABIEventParams(indexed=True, name="provider", type="address"), + ABIEventParams(indexed=False, name="lpAmount", type="uint256"), + ABIEventParams(indexed=False, name="baseAmount", type="uint256"), + ABIEventParams(indexed=False, name="apr", type="uint256"), + ], + name="Initialize", + type="event", +) + +OpenLong = ABIEvent( + anonymous=False, + inputs=[ + ABIEventParams(indexed=True, name="trader", type="address"), + ABIEventParams(indexed=True, name="assetId", type="uint256"), + ABIEventParams(indexed=False, name="maturityTime", type="uint256"), + ABIEventParams(indexed=False, name="baseAmount", type="uint256"), + ABIEventParams(indexed=False, name="bondAmount", type="uint256"), + ], + name="OpenLong", + type="event", +) + +OpenShort = ABIEvent( + anonymous=False, + inputs=[ + ABIEventParams(indexed=True, name="trader", type="address"), + ABIEventParams(indexed=True, name="assetId", type="uint256"), + ABIEventParams(indexed=False, name="maturityTime", type="uint256"), + ABIEventParams(indexed=False, name="baseAmount", type="uint256"), + ABIEventParams(indexed=False, name="bondAmount", type="uint256"), + ], + name="OpenShort", + type="event", +) + +RedeemWithdrawalShares = ABIEvent( + anonymous=False, + inputs=[ + ABIEventParams(indexed=True, name="provider", type="address"), + ABIEventParams( + indexed=False, name="withdrawalShareAmount", type="uint256" + ), + ABIEventParams(indexed=False, name="baseAmount", type="uint256"), + ], + name="RedeemWithdrawalShares", + type="event", +) + +RemoveLiquidity = ABIEvent( + anonymous=False, + inputs=[ + ABIEventParams(indexed=True, name="provider", type="address"), + ABIEventParams(indexed=False, name="lpAmount", type="uint256"), + ABIEventParams(indexed=False, name="baseAmount", type="uint256"), + ABIEventParams( + indexed=False, name="withdrawalShareAmount", type="uint256" + ), + ], + name="RemoveLiquidity", + type="event", +) + +TransferSingle = ABIEvent( + anonymous=False, + inputs=[ + ABIEventParams(indexed=True, name="operator", type="address"), + ABIEventParams(indexed=True, name="from", type="address"), + ABIEventParams(indexed=True, name="to", type="address"), + ABIEventParams(indexed=False, name="id", type="uint256"), + ABIEventParams(indexed=False, name="value", type="uint256"), + ], + name="TransferSingle", + type="event", +) diff --git a/lib/hypertypes/hypertypes/IHyperdriveContract.py b/lib/hypertypes/hypertypes/IHyperdriveContract.py index 76022b34d2..0c6c71cdc3 100644 --- a/lib/hypertypes/hypertypes/IHyperdriveContract.py +++ b/lib/hypertypes/hypertypes/IHyperdriveContract.py @@ -44,7 +44,9 @@ def __call__( _destination: str, _asUnderlying: bool, ) -> "IHyperdriveAddLiquidityContractFunction": - super().__call__(_contribution, _minApr, _maxApr, _destination, _asUnderlying) + super().__call__( + _contribution, _minApr, _maxApr, _destination, _asUnderlying + ) return self # TODO: add call def so we can get return types for the calls @@ -57,7 +59,9 @@ class IHyperdriveBalanceOfContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, tokenId: int, owner: str) -> "IHyperdriveBalanceOfContractFunction": + def __call__( + self, tokenId: int, owner: str + ) -> "IHyperdriveBalanceOfContractFunction": super().__call__(tokenId, owner) return self @@ -101,7 +105,9 @@ class IHyperdriveCheckpointContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, _checkpointTime: int) -> "IHyperdriveCheckpointContractFunction": + def __call__( + self, _checkpointTime: int + ) -> "IHyperdriveCheckpointContractFunction": super().__call__(_checkpointTime) return self @@ -123,7 +129,9 @@ def __call__( _destination: str, _asUnderlying: bool, ) -> "IHyperdriveCloseLongContractFunction": - super().__call__(_maturityTime, _bondAmount, _minOutput, _destination, _asUnderlying) + super().__call__( + _maturityTime, _bondAmount, _minOutput, _destination, _asUnderlying + ) return self # TODO: add call def so we can get return types for the calls @@ -144,7 +152,9 @@ def __call__( _destination: str, _asUnderlying: bool, ) -> "IHyperdriveCloseShortContractFunction": - super().__call__(_maturityTime, _bondAmount, _minOutput, _destination, _asUnderlying) + super().__call__( + _maturityTime, _bondAmount, _minOutput, _destination, _asUnderlying + ) return self # TODO: add call def so we can get return types for the calls @@ -157,7 +167,9 @@ class IHyperdriveCollectGovernanceFeeContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, asUnderlying: bool) -> "IHyperdriveCollectGovernanceFeeContractFunction": + def __call__( + self, asUnderlying: bool + ) -> "IHyperdriveCollectGovernanceFeeContractFunction": super().__call__(asUnderlying) return self @@ -185,7 +197,9 @@ class IHyperdriveGetCheckpointContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, _checkpointId: int) -> "IHyperdriveGetCheckpointContractFunction": + def __call__( + self, _checkpointId: int + ) -> "IHyperdriveGetCheckpointContractFunction": super().__call__(_checkpointId) return self @@ -291,7 +305,9 @@ class IHyperdriveIsApprovedForAllContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, owner: str, spender: str) -> "IHyperdriveIsApprovedForAllContractFunction": + def __call__( + self, owner: str, spender: str + ) -> "IHyperdriveIsApprovedForAllContractFunction": super().__call__(owner, spender) return self @@ -369,7 +385,9 @@ def __call__( _destination: str, _asUnderlying: bool, ) -> "IHyperdriveOpenLongContractFunction": - super().__call__(_baseAmount, _minOutput, _minSharePrice, _destination, _asUnderlying) + super().__call__( + _baseAmount, _minOutput, _minSharePrice, _destination, _asUnderlying + ) return self # TODO: add call def so we can get return types for the calls @@ -423,7 +441,9 @@ class IHyperdrivePerTokenApprovalsContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, tokenId: int, owner: str, spender: str) -> "IHyperdrivePerTokenApprovalsContractFunction": + def __call__( + self, tokenId: int, owner: str, spender: str + ) -> "IHyperdrivePerTokenApprovalsContractFunction": super().__call__(tokenId, owner, spender) return self @@ -500,7 +520,9 @@ class IHyperdriveSetApprovalContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, tokenID: int, operator: str, amount: int) -> "IHyperdriveSetApprovalContractFunction": + def __call__( + self, tokenID: int, operator: str, amount: int + ) -> "IHyperdriveSetApprovalContractFunction": super().__call__(tokenID, operator, amount) return self @@ -530,7 +552,9 @@ class IHyperdriveSetApprovalForAllContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, operator: str, approved: bool) -> "IHyperdriveSetApprovalForAllContractFunction": + def __call__( + self, operator: str, approved: bool + ) -> "IHyperdriveSetApprovalForAllContractFunction": super().__call__(operator, approved) return self @@ -558,7 +582,9 @@ class IHyperdriveSetPauserContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, who: str, status: bool) -> "IHyperdriveSetPauserContractFunction": + def __call__( + self, who: str, status: bool + ) -> "IHyperdriveSetPauserContractFunction": super().__call__(who, status) return self @@ -600,7 +626,9 @@ class IHyperdriveTransferFromContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, tokenID: int, _from: str, to: str, amount: int) -> "IHyperdriveTransferFromContractFunction": + def __call__( + self, tokenID: int, _from: str, to: str, amount: int + ) -> "IHyperdriveTransferFromContractFunction": super().__call__(tokenID, _from, to, amount) return self @@ -711,7 +739,13 @@ def __init__(self, address: ChecksumAddress | None = None, abi=Any) -> None: self.abi = abi # TODO: make this better, shouldn't initialize to the zero address, but the Contract's init # function requires an address. - self.address = address if address else cast(ChecksumAddress, "0x0000000000000000000000000000000000000000") + self.address = ( + address + if address + else cast( + ChecksumAddress, "0x0000000000000000000000000000000000000000" + ) + ) try: # Initialize parent Contract class diff --git a/lib/hypertypes/hypertypes/IHyperdriveTypes.py b/lib/hypertypes/hypertypes/IHyperdriveTypes.py index 4a6be15ac3..36641307fc 100644 --- a/lib/hypertypes/hypertypes/IHyperdriveTypes.py +++ b/lib/hypertypes/hypertypes/IHyperdriveTypes.py @@ -200,7 +200,9 @@ class WithdrawPool: anonymous=False, inputs=[ ABIEventParams(indexed=True, name="provider", type="address"), - ABIEventParams(indexed=False, name="withdrawalShareAmount", type="uint256"), + ABIEventParams( + indexed=False, name="withdrawalShareAmount", type="uint256" + ), ABIEventParams(indexed=False, name="baseAmount", type="uint256"), ], name="RedeemWithdrawalShares", @@ -213,7 +215,9 @@ class WithdrawPool: ABIEventParams(indexed=True, name="provider", type="address"), ABIEventParams(indexed=False, name="lpAmount", type="uint256"), ABIEventParams(indexed=False, name="baseAmount", type="uint256"), - ABIEventParams(indexed=False, name="withdrawalShareAmount", type="uint256"), + ABIEventParams( + indexed=False, name="withdrawalShareAmount", type="uint256" + ), ], name="RemoveLiquidity", type="event", diff --git a/lib/hypertypes/hypertypes/MockERC4626Contract.py b/lib/hypertypes/hypertypes/MockERC4626Contract.py index 6f760cd1db..011d922a63 100644 --- a/lib/hypertypes/hypertypes/MockERC4626Contract.py +++ b/lib/hypertypes/hypertypes/MockERC4626Contract.py @@ -36,7 +36,9 @@ class MockERC4626AllowanceContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, arg1: str, arg2: str) -> "MockERC4626AllowanceContractFunction": + def __call__( + self, arg1: str, arg2: str + ) -> "MockERC4626AllowanceContractFunction": super().__call__() return self @@ -50,7 +52,9 @@ class MockERC4626ApproveContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, spender: str, amount: int) -> "MockERC4626ApproveContractFunction": + def __call__( + self, spender: str, amount: int + ) -> "MockERC4626ApproveContractFunction": super().__call__(spender, amount) return self @@ -72,6 +76,20 @@ def __call__(self) -> "MockERC4626AssetContractFunction": # def call() +class MockERC4626AuthorityContractFunction(ContractFunction): + """ContractFunction for the authority method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__(self) -> "MockERC4626AuthorityContractFunction": + super().__call__() + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + class MockERC4626BalanceOfContractFunction(ContractFunction): """ContractFunction for the balanceOf method.""" @@ -86,13 +104,31 @@ def __call__(self, arg1: str) -> "MockERC4626BalanceOfContractFunction": # def call() +class MockERC4626CanCallContractFunction(ContractFunction): + """ContractFunction for the canCall method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, user: str, target: str, functionSig: bytes + ) -> "MockERC4626CanCallContractFunction": + super().__call__(user, target, functionSig) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + class MockERC4626ConvertToAssetsContractFunction(ContractFunction): """ContractFunction for the convertToAssets method.""" # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, shares: int) -> "MockERC4626ConvertToAssetsContractFunction": + def __call__( + self, shares: int + ) -> "MockERC4626ConvertToAssetsContractFunction": super().__call__(shares) return self @@ -106,7 +142,9 @@ class MockERC4626ConvertToSharesContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, assets: int) -> "MockERC4626ConvertToSharesContractFunction": + def __call__( + self, assets: int + ) -> "MockERC4626ConvertToSharesContractFunction": super().__call__(assets) return self @@ -134,7 +172,9 @@ class MockERC4626DepositContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, _assets: int, _receiver: str) -> "MockERC4626DepositContractFunction": + def __call__( + self, _assets: int, _receiver: str + ) -> "MockERC4626DepositContractFunction": super().__call__(_assets, _receiver) return self @@ -142,6 +182,38 @@ def __call__(self, _assets: int, _receiver: str) -> "MockERC4626DepositContractF # def call() +class MockERC4626DoesRoleHaveCapabilityContractFunction(ContractFunction): + """ContractFunction for the doesRoleHaveCapability method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, role: int, functionSig: bytes + ) -> "MockERC4626DoesRoleHaveCapabilityContractFunction": + super().__call__(role, functionSig) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class MockERC4626DoesUserHaveRoleContractFunction(ContractFunction): + """ContractFunction for the doesUserHaveRole method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, user: str, role: int + ) -> "MockERC4626DoesUserHaveRoleContractFunction": + super().__call__(user, role) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + class MockERC4626GetRateContractFunction(ContractFunction): """ContractFunction for the getRate method.""" @@ -156,6 +228,68 @@ def __call__(self) -> "MockERC4626GetRateContractFunction": # def call() +class MockERC4626GetRolesWithCapabilityContractFunction(ContractFunction): + """ContractFunction for the getRolesWithCapability method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, arg1: bytes + ) -> "MockERC4626GetRolesWithCapabilityContractFunction": + super().__call__() + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class MockERC4626GetTargetCustomAuthorityContractFunction(ContractFunction): + """ContractFunction for the getTargetCustomAuthority method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, arg1: str + ) -> "MockERC4626GetTargetCustomAuthorityContractFunction": + super().__call__() + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class MockERC4626GetUserRolesContractFunction(ContractFunction): + """ContractFunction for the getUserRoles method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__(self, arg1: str) -> "MockERC4626GetUserRolesContractFunction": + super().__call__() + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class MockERC4626IsCapabilityPublicContractFunction(ContractFunction): + """ContractFunction for the isCapabilityPublic method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, arg1: bytes + ) -> "MockERC4626IsCapabilityPublicContractFunction": + super().__call__() + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + class MockERC4626MaxDepositContractFunction(ContractFunction): """ContractFunction for the maxDeposit method.""" @@ -218,7 +352,9 @@ class MockERC4626MintContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, _shares: int, _receiver: str) -> "MockERC4626MintContractFunction": + def __call__( + self, _shares: int, _receiver: str + ) -> "MockERC4626MintContractFunction": super().__call__(_shares, _receiver) return self @@ -254,6 +390,20 @@ def __call__(self, arg1: str) -> "MockERC4626NoncesContractFunction": # def call() +class MockERC4626OwnerContractFunction(ContractFunction): + """ContractFunction for the owner method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__(self) -> "MockERC4626OwnerContractFunction": + super().__call__() + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + class MockERC4626PermitContractFunction(ContractFunction): """ContractFunction for the permit method.""" @@ -283,7 +433,9 @@ class MockERC4626PreviewDepositContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, assets: int) -> "MockERC4626PreviewDepositContractFunction": + def __call__( + self, assets: int + ) -> "MockERC4626PreviewDepositContractFunction": super().__call__(assets) return self @@ -311,7 +463,9 @@ class MockERC4626PreviewRedeemContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, shares: int) -> "MockERC4626PreviewRedeemContractFunction": + def __call__( + self, shares: int + ) -> "MockERC4626PreviewRedeemContractFunction": super().__call__(shares) return self @@ -325,7 +479,9 @@ class MockERC4626PreviewWithdrawContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, assets: int) -> "MockERC4626PreviewWithdrawContractFunction": + def __call__( + self, assets: int + ) -> "MockERC4626PreviewWithdrawContractFunction": super().__call__(assets) return self @@ -339,7 +495,9 @@ class MockERC4626RedeemContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, _shares: int, _receiver: str, _owner: str) -> "MockERC4626RedeemContractFunction": + def __call__( + self, _shares: int, _receiver: str, _owner: str + ) -> "MockERC4626RedeemContractFunction": super().__call__(_shares, _receiver, _owner) return self @@ -347,6 +505,38 @@ def __call__(self, _shares: int, _receiver: str, _owner: str) -> "MockERC4626Red # def call() +class MockERC4626SetAuthorityContractFunction(ContractFunction): + """ContractFunction for the setAuthority method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, newAuthority: str + ) -> "MockERC4626SetAuthorityContractFunction": + super().__call__(newAuthority) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class MockERC4626SetPublicCapabilityContractFunction(ContractFunction): + """ContractFunction for the setPublicCapability method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, functionSig: bytes, enabled: bool + ) -> "MockERC4626SetPublicCapabilityContractFunction": + super().__call__(functionSig, enabled) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + class MockERC4626SetRateContractFunction(ContractFunction): """ContractFunction for the setRate method.""" @@ -361,6 +551,54 @@ def __call__(self, _rate_: int) -> "MockERC4626SetRateContractFunction": # def call() +class MockERC4626SetRoleCapabilityContractFunction(ContractFunction): + """ContractFunction for the setRoleCapability method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, role: int, functionSig: bytes, enabled: bool + ) -> "MockERC4626SetRoleCapabilityContractFunction": + super().__call__(role, functionSig, enabled) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class MockERC4626SetTargetCustomAuthorityContractFunction(ContractFunction): + """ContractFunction for the setTargetCustomAuthority method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, target: str, customAuthority: str + ) -> "MockERC4626SetTargetCustomAuthorityContractFunction": + super().__call__(target, customAuthority) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + +class MockERC4626SetUserRoleContractFunction(ContractFunction): + """ContractFunction for the setUserRole method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, user: str, role: int, enabled: bool + ) -> "MockERC4626SetUserRoleContractFunction": + super().__call__(user, role, enabled) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + class MockERC4626SymbolContractFunction(ContractFunction): """ContractFunction for the symbol method.""" @@ -409,7 +647,9 @@ class MockERC4626TransferContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, to: str, amount: int) -> "MockERC4626TransferContractFunction": + def __call__( + self, to: str, amount: int + ) -> "MockERC4626TransferContractFunction": super().__call__(to, amount) return self @@ -423,7 +663,9 @@ class MockERC4626TransferFromContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, _from: str, to: str, amount: int) -> "MockERC4626TransferFromContractFunction": + def __call__( + self, _from: str, to: str, amount: int + ) -> "MockERC4626TransferFromContractFunction": super().__call__(_from, to, amount) return self @@ -431,13 +673,31 @@ def __call__(self, _from: str, to: str, amount: int) -> "MockERC4626TransferFrom # def call() +class MockERC4626TransferOwnershipContractFunction(ContractFunction): + """ContractFunction for the transferOwnership method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__( + self, newOwner: str + ) -> "MockERC4626TransferOwnershipContractFunction": + super().__call__(newOwner) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + class MockERC4626WithdrawContractFunction(ContractFunction): """ContractFunction for the withdraw method.""" # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__(self, _assets: int, _receiver: str, _owner: str) -> "MockERC4626WithdrawContractFunction": + def __call__( + self, _assets: int, _receiver: str, _owner: str + ) -> "MockERC4626WithdrawContractFunction": super().__call__(_assets, _receiver, _owner) return self @@ -456,8 +716,12 @@ class MockERC4626ContractFunctions(ContractFunctions): asset: MockERC4626AssetContractFunction + authority: MockERC4626AuthorityContractFunction + balanceOf: MockERC4626BalanceOfContractFunction + canCall: MockERC4626CanCallContractFunction + convertToAssets: MockERC4626ConvertToAssetsContractFunction convertToShares: MockERC4626ConvertToSharesContractFunction @@ -466,8 +730,20 @@ class MockERC4626ContractFunctions(ContractFunctions): deposit: MockERC4626DepositContractFunction + doesRoleHaveCapability: MockERC4626DoesRoleHaveCapabilityContractFunction + + doesUserHaveRole: MockERC4626DoesUserHaveRoleContractFunction + getRate: MockERC4626GetRateContractFunction + getRolesWithCapability: MockERC4626GetRolesWithCapabilityContractFunction + + getTargetCustomAuthority: MockERC4626GetTargetCustomAuthorityContractFunction + + getUserRoles: MockERC4626GetUserRolesContractFunction + + isCapabilityPublic: MockERC4626IsCapabilityPublicContractFunction + maxDeposit: MockERC4626MaxDepositContractFunction maxMint: MockERC4626MaxMintContractFunction @@ -482,6 +758,8 @@ class MockERC4626ContractFunctions(ContractFunctions): nonces: MockERC4626NoncesContractFunction + owner: MockERC4626OwnerContractFunction + permit: MockERC4626PermitContractFunction previewDeposit: MockERC4626PreviewDepositContractFunction @@ -494,8 +772,18 @@ class MockERC4626ContractFunctions(ContractFunctions): redeem: MockERC4626RedeemContractFunction + setAuthority: MockERC4626SetAuthorityContractFunction + + setPublicCapability: MockERC4626SetPublicCapabilityContractFunction + setRate: MockERC4626SetRateContractFunction + setRoleCapability: MockERC4626SetRoleCapabilityContractFunction + + setTargetCustomAuthority: MockERC4626SetTargetCustomAuthorityContractFunction + + setUserRole: MockERC4626SetUserRoleContractFunction + symbol: MockERC4626SymbolContractFunction totalAssets: MockERC4626TotalAssetsContractFunction @@ -506,6 +794,8 @@ class MockERC4626ContractFunctions(ContractFunctions): transferFrom: MockERC4626TransferFromContractFunction + transferOwnership: MockERC4626TransferOwnershipContractFunction + withdraw: MockERC4626WithdrawContractFunction @@ -516,7 +806,13 @@ def __init__(self, address: ChecksumAddress | None = None, abi=Any) -> None: self.abi = abi # TODO: make this better, shouldn't initialize to the zero address, but the Contract's init # function requires an address. - self.address = address if address else cast(ChecksumAddress, "0x0000000000000000000000000000000000000000") + self.address = ( + address + if address + else cast( + ChecksumAddress, "0x0000000000000000000000000000000000000000" + ) + ) try: # Initialize parent Contract class diff --git a/lib/hypertypes/hypertypes/MockERC4626Types.py b/lib/hypertypes/hypertypes/MockERC4626Types.py index 1a9c6e733b..6e26ac0188 100644 --- a/lib/hypertypes/hypertypes/MockERC4626Types.py +++ b/lib/hypertypes/hypertypes/MockERC4626Types.py @@ -30,6 +30,16 @@ type="event", ) +AuthorityUpdated = ABIEvent( + anonymous=False, + inputs=[ + ABIEventParams(indexed=True, name="user", type="address"), + ABIEventParams(indexed=True, name="newAuthority", type="address"), + ], + name="AuthorityUpdated", + type="event", +) + Deposit = ABIEvent( anonymous=False, inputs=[ @@ -42,6 +52,47 @@ type="event", ) +OwnershipTransferred = ABIEvent( + anonymous=False, + inputs=[ + ABIEventParams(indexed=True, name="user", type="address"), + ABIEventParams(indexed=True, name="newOwner", type="address"), + ], + name="OwnershipTransferred", + type="event", +) + +PublicCapabilityUpdated = ABIEvent( + anonymous=False, + inputs=[ + ABIEventParams(indexed=True, name="functionSig", type="bytes4"), + ABIEventParams(indexed=False, name="enabled", type="bool"), + ], + name="PublicCapabilityUpdated", + type="event", +) + +RoleCapabilityUpdated = ABIEvent( + anonymous=False, + inputs=[ + ABIEventParams(indexed=True, name="role", type="uint8"), + ABIEventParams(indexed=True, name="functionSig", type="bytes4"), + ABIEventParams(indexed=False, name="enabled", type="bool"), + ], + name="RoleCapabilityUpdated", + type="event", +) + +TargetCustomAuthorityUpdated = ABIEvent( + anonymous=False, + inputs=[ + ABIEventParams(indexed=True, name="target", type="address"), + ABIEventParams(indexed=True, name="authority", type="address"), + ], + name="TargetCustomAuthorityUpdated", + type="event", +) + Transfer = ABIEvent( anonymous=False, inputs=[ @@ -53,6 +104,17 @@ type="event", ) +UserRoleUpdated = ABIEvent( + anonymous=False, + inputs=[ + ABIEventParams(indexed=True, name="user", type="address"), + ABIEventParams(indexed=True, name="role", type="uint8"), + ABIEventParams(indexed=False, name="enabled", type="bool"), + ], + name="UserRoleUpdated", + type="event", +) + Withdraw = ABIEvent( anonymous=False, inputs=[ diff --git a/lib/hypertypes/hypertypes/__init__.py b/lib/hypertypes/hypertypes/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/hyperdrive/src/abis/ERC20Mintable.sol/ERC20Mintable.json b/packages/hyperdrive/src/abis/ERC20Mintable.sol/ERC20Mintable.json index df6ecbd067..b62cf78d12 100644 --- a/packages/hyperdrive/src/abis/ERC20Mintable.sol/ERC20Mintable.json +++ b/packages/hyperdrive/src/abis/ERC20Mintable.sol/ERC20Mintable.json @@ -1,7 +1,33 @@ { "abi": [ { - "inputs": [], + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals", + "type": "uint8" + }, + { + "internalType": "address", + "name": "admin", + "type": "address" + }, + { + "internalType": "bool", + "name": "isCompetitionMode", + "type": "bool" + } + ], "stateMutability": "nonpayable", "type": "constructor" }, @@ -23,13 +49,114 @@ { "indexed": false, "internalType": "uint256", - "name": "value", + "name": "amount", "type": "uint256" } ], "name": "Approval", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "contract Authority", + "name": "newAuthority", + "type": "address" + } + ], + "name": "AuthorityUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4" + }, + { + "indexed": false, + "internalType": "bool", + "name": "enabled", + "type": "bool" + } + ], + "name": "PublicCapabilityUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint8", + "name": "role", + "type": "uint8" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4" + }, + { + "indexed": false, + "internalType": "bool", + "name": "enabled", + "type": "bool" + } + ], + "name": "RoleCapabilityUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "indexed": true, + "internalType": "contract Authority", + "name": "authority", + "type": "address" + } + ], + "name": "TargetCustomAuthorityUpdated", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -48,7 +175,7 @@ { "indexed": false, "internalType": "uint256", - "name": "value", + "name": "amount", "type": "uint256" } ], @@ -56,15 +183,53 @@ "type": "event" }, { + "anonymous": false, "inputs": [ { + "indexed": true, "internalType": "address", - "name": "owner", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint8", + "name": "role", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "bool", + "name": "enabled", + "type": "bool" + } + ], + "name": "UserRoleUpdated", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", "type": "address" }, { "internalType": "address", - "name": "spender", + "name": "", "type": "address" } ], @@ -103,11 +268,24 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "authority", + "outputs": [ + { + "internalType": "contract Authority", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { "internalType": "address", - "name": "account", + "name": "", "type": "address" } ], @@ -153,6 +331,35 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4" + } + ], + "name": "canCall", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "decimals", @@ -169,17 +376,17 @@ { "inputs": [ { - "internalType": "address", - "name": "spender", - "type": "address" + "internalType": "uint8", + "name": "role", + "type": "uint8" }, { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4" } ], - "name": "decreaseAllowance", + "name": "doesRoleHaveCapability", "outputs": [ { "internalType": "bool", @@ -187,23 +394,23 @@ "type": "bool" } ], - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", - "name": "spender", + "name": "user", "type": "address" }, { - "internalType": "uint256", - "name": "addedValue", - "type": "uint256" + "internalType": "uint8", + "name": "role", + "type": "uint8" } ], - "name": "increaseAllowance", + "name": "doesUserHaveRole", "outputs": [ { "internalType": "bool", @@ -211,74 +418,61 @@ "type": "bool" } ], - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { "inputs": [ { - "internalType": "address", - "name": "destination", - "type": "address" - }, + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "getRolesWithCapability", + "outputs": [ { - "internalType": "uint256", - "name": "amount", - "type": "uint256" + "internalType": "bytes32", + "name": "", + "type": "bytes32" } ], - "name": "mint", - "outputs": [], - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { "inputs": [ { - "internalType": "uint256", - "name": "amount", - "type": "uint256" + "internalType": "address", + "name": "", + "type": "address" } ], - "name": "mint", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "name", + "name": "getTargetCustomAuthority", "outputs": [ { - "internalType": "string", + "internalType": "contract Authority", "name": "", - "type": "string" + "type": "address" } ], "stateMutability": "view", "type": "function" }, { - "inputs": [], - "name": "symbol", - "outputs": [ + "inputs": [ { - "internalType": "string", + "internalType": "address", "name": "", - "type": "string" + "type": "address" } ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", + "name": "getUserRoles", "outputs": [ { - "internalType": "uint256", + "internalType": "bytes32", "name": "", - "type": "uint256" + "type": "bytes32" } ], "stateMutability": "view", @@ -287,17 +481,12 @@ { "inputs": [ { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" + "internalType": "bytes4", + "name": "", + "type": "bytes4" } ], - "name": "transfer", + "name": "isCapabilityPublic", "outputs": [ { "internalType": "bool", @@ -305,7 +494,271 @@ "type": "bool" } ], - "stateMutability": "nonpayable", + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "destination", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract Authority", + "name": "newAuthority", + "type": "address" + } + ], + "name": "setAuthority", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "enabled", + "type": "bool" + } + ], + "name": "setPublicCapability", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "role", + "type": "uint8" + }, + { + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "enabled", + "type": "bool" + } + ], + "name": "setRoleCapability", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "contract Authority", + "name": "customAuthority", + "type": "address" + } + ], + "name": "setTargetCustomAuthority", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint8", + "name": "role", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "enabled", + "type": "bool" + } + ], + "name": "setUserRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", "type": "function" }, { @@ -336,36 +789,103 @@ ], "stateMutability": "nonpayable", "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" } ], "bytecode": { - "object": "0x60806040523480156200001157600080fd5b50604051806040016040528060048152602001634261736560e01b815250604051806040016040528060048152602001634241534560e01b81525081600390816200005d91906200011a565b5060046200006c82826200011a565b505050620001e6565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000a057607f821691505b602082108103620000c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200011557600081815260208120601f850160051c81016020861015620000f05750805b601f850160051c820191505b818110156200011157828155600101620000fc565b5050505b505050565b81516001600160401b0381111562000136576200013662000075565b6200014e816200014784546200008b565b84620000c7565b602080601f8311600181146200018657600084156200016d5750858301515b600019600386901b1c1916600185901b17855562000111565b600085815260208120601f198616915b82811015620001b75788860151825594840194600190910190840162000196565b5085821015620001d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610b1e80620001f66000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806342966c6811610097578063a0712d6811610066578063a0712d68146101ee578063a457c2d714610201578063a9059cbb14610214578063dd62ed3e1461022757600080fd5b806342966c681461019757806370a08231146101aa57806395d89b41146101d35780639dc29fac146101db57600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461016f57806340c10f191461018257600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b61010261023a565b60405161010f919061094f565b60405180910390f35b61012b6101263660046109b9565b6102cc565b604051901515815260200161010f565b6002545b60405190815260200161010f565b61012b61015b3660046109e3565b6102e6565b6040516012815260200161010f565b61012b61017d3660046109b9565b61030a565b6101956101903660046109b9565b61032c565b005b6101956101a5366004610a1f565b61033a565b61013f6101b8366004610a38565b6001600160a01b031660009081526020819052604090205490565b610102610347565b6101956101e93660046109b9565b610356565b6101956101fc366004610a1f565b610360565b61012b61020f3660046109b9565b61036a565b61012b6102223660046109b9565b6103ea565b61013f610235366004610a5a565b6103f8565b60606003805461024990610a8d565b80601f016020809104026020016040519081016040528092919081815260200182805461027590610a8d565b80156102c25780601f10610297576101008083540402835291602001916102c2565b820191906000526020600020905b8154815290600101906020018083116102a557829003601f168201915b5050505050905090565b6000336102da818585610423565b60019150505b92915050565b6000336102f4858285610548565b6102ff8585856105c2565b506001949350505050565b6000336102da81858561031d83836103f8565b6103279190610ac7565b610423565b6103368282610766565b5050565b6103443382610825565b50565b60606004805461024990610a8d565b6103368282610825565b6103443382610766565b6000338161037882866103f8565b9050838110156103dd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102ff8286868403610423565b6000336102da8185856105c2565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104855760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103d4565b6001600160a01b0382166104e65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103d4565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061055484846103f8565b905060001981146105bc57818110156105af5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103d4565b6105bc8484848403610423565b50505050565b6001600160a01b0383166106265760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103d4565b6001600160a01b0382166106885760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103d4565b6001600160a01b038316600090815260208190526040902054818110156107005760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103d4565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105bc565b6001600160a01b0382166107bc5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103d4565b80600260008282546107ce9190610ac7565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b0382166108855760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103d4565b6001600160a01b038216600090815260208190526040902054818110156108f95760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103d4565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161053b565b600060208083528351808285015260005b8181101561097c57858101830151858201604001528201610960565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146109b457600080fd5b919050565b600080604083850312156109cc57600080fd5b6109d58361099d565b946020939093013593505050565b6000806000606084860312156109f857600080fd5b610a018461099d565b9250610a0f6020850161099d565b9150604084013590509250925092565b600060208284031215610a3157600080fd5b5035919050565b600060208284031215610a4a57600080fd5b610a538261099d565b9392505050565b60008060408385031215610a6d57600080fd5b610a768361099d565b9150610a846020840161099d565b90509250929050565b600181811c90821680610aa157607f821691505b602082108103610ac157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e057634e487b7160e01b600052601160045260246000fdfea2646970667358221220f57185fcfa454cd1da42f03b63a56ee658acb08bb0d9065c39aa97d081dc011564736f6c63430008130033", - "sourceMap": "252:470:41:-:0;;;290:38;;;;;;;;;;1980:113:73;;;;;;;;;;;;;-1:-1:-1;;;1980:113:73;;;;;;;;;;;;;;;;-1:-1:-1;;;1980:113:73;;;2054:5;2046;:13;;;;;;:::i;:::-;-1:-1:-1;2069:7:73;:17;2079:7;2069;:17;:::i;:::-;;1980:113;;252:470:41;;14:127:162;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:380;225:1;221:12;;;;268;;;289:61;;343:4;335:6;331:17;321:27;;289:61;396:2;388:6;385:14;365:18;362:38;359:161;;442:10;437:3;433:20;430:1;423:31;477:4;474:1;467:15;505:4;502:1;495:15;359:161;;146:380;;;:::o;657:545::-;759:2;754:3;751:11;748:448;;;795:1;820:5;816:2;809:17;865:4;861:2;851:19;935:2;923:10;919:19;916:1;912:27;906:4;902:38;971:4;959:10;956:20;953:47;;;-1:-1:-1;994:4:162;953:47;1049:2;1044:3;1040:12;1037:1;1033:20;1027:4;1023:31;1013:41;;1104:82;1122:2;1115:5;1112:13;1104:82;;;1167:17;;;1148:1;1137:13;1104:82;;;1108:3;;;748:448;657:545;;;:::o;1378:1352::-;1498:10;;-1:-1:-1;;;;;1520:30:162;;1517:56;;;1553:18;;:::i;:::-;1582:97;1672:6;1632:38;1664:4;1658:11;1632:38;:::i;:::-;1626:4;1582:97;:::i;:::-;1734:4;;1798:2;1787:14;;1815:1;1810:663;;;;2517:1;2534:6;2531:89;;;-1:-1:-1;2586:19:162;;;2580:26;2531:89;-1:-1:-1;;1335:1:162;1331:11;;;1327:24;1323:29;1313:40;1359:1;1355:11;;;1310:57;2633:81;;1780:944;;1810:663;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1846:20:162;;;1964:236;1978:7;1975:1;1972:14;1964:236;;;2067:19;;;2061:26;2046:42;;2159:27;;;;2127:1;2115:14;;;;1994:19;;1964:236;;;1968:3;2228:6;2219:7;2216:19;2213:201;;;2289:19;;;2283:26;-1:-1:-1;;2372:1:162;2368:14;;;2384:3;2364:24;2360:37;2356:42;2341:58;2326:74;;2213:201;-1:-1:-1;;;;;2460:1:162;2444:14;;;2440:22;2427:36;;-1:-1:-1;1378:1352:162:o;:::-;252:470:41;;;;;;", + "object": "0x6101006040523480156200001257600080fd5b5060405162001daa38038062001daa833981016040819052620000359162000291565b8130818188888860006200004a8482620003d7565b506001620000598382620003d7565b5060ff81166080524660a0526200006f6200011a565b60c0525050600680546001600160a01b038086166001600160a01b03199283168117909355600780549186169190921617905560405190915033907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36040516001600160a01b0382169033907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b7638998019890600090a350505050151560e052506200052192505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516200014e9190620004a3565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001de57600080fd5b81516001600160401b0380821115620001fb57620001fb620001b6565b604051601f8301601f19908116603f01168101908282118183101715620002265762000226620001b6565b816040528381526020925086838588010111156200024357600080fd5b600091505b8382101562000267578582018301518183018401529082019062000248565b600093810190920192909252949350505050565b805180151581146200028c57600080fd5b919050565b600080600080600060a08688031215620002aa57600080fd5b85516001600160401b0380821115620002c257600080fd5b620002d089838a01620001cc565b96506020880151915080821115620002e757600080fd5b50620002f688828901620001cc565b945050604086015160ff811681146200030e57600080fd5b60608701519093506001600160a01b03811681146200032c57600080fd5b91506200033c608087016200027b565b90509295509295909350565b600181811c908216806200035d57607f821691505b6020821081036200037e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003d257600081815260208120601f850160051c81016020861015620003ad5750805b601f850160051c820191505b81811015620003ce57828155600101620003b9565b5050505b505050565b81516001600160401b03811115620003f357620003f3620001b6565b6200040b8162000404845462000348565b8462000384565b602080601f8311600181146200044357600084156200042a5750858301515b600019600386901b1c1916600185901b178555620003ce565b600085815260208120601f198616915b82811015620004745788860151825594840194600190910190840162000453565b5085821015620004935787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808354620004b38162000348565b60018281168015620004ce5760018114620004e45762000515565b60ff198416875282151583028701945062000515565b8760005260208060002060005b858110156200050c5781548a820152908401908201620004f1565b50505082870194505b50929695505050505050565b60805160a05160c05160e05161183a6200057060003960008181610850015281816108b601528181610bf50152610c570152600061082c015260006107f7015260006102ae015261183a6000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80637a9e5e4b1161010f578063bf7e214f116100a2578063e688747b11610071578063e688747b14610495578063ea7ca276146104cb578063ed0d0efb14610502578063f2fde38b1461052257600080fd5b8063bf7e214f1461041b578063c53a39851461042e578063d505accf14610457578063dd62ed3e1461046a57600080fd5b80639dc29fac116100de5780639dc29fac146103cf578063a0712d68146103e2578063a9059cbb146103f5578063b70096131461040857600080fd5b80637a9e5e4b146103695780637ecebe001461037c5780638da5cb5b1461039c57806395d89b41146103c757600080fd5b8063313ce567116101875780634b5159da116101565780634b5159da1461031057806367aff4841461032357806370a0823114610336578063728b952b1461035657600080fd5b8063313ce567146102a95780633644e515146102e257806340c10f19146102ea57806342966c68146102fd57600080fd5b80630bade8a4116101c35780630bade8a4146102555780630ea9b75b1461027857806318160ddd1461028d57806323b872dd1461029657600080fd5b806306a36aee146101ea57806306fdde031461021d578063095ea7b314610232575b600080fd5b61020a6101f83660046112f2565b60096020526000908152604090205481565b6040519081526020015b60405180910390f35b610225610535565b604051610214919061130f565b61024561024036600461135d565b6105c3565b6040519015158152602001610214565b6102456102633660046113a6565b600a6020526000908152604090205460ff1681565b61028b6102863660046113e0565b610630565b005b61020a60025481565b6102456102a4366004611427565b610711565b6102d07f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610214565b61020a6107f3565b61028b6102f836600461135d565b61084e565b61028b61030b366004611468565b6108b4565b61028b61031e366004611481565b610919565b61028b6103313660046114b8565b6109ab565b61020a6103443660046112f2565b60036020526000908152604090205481565b61028b6103643660046114e6565b610a73565b61028b6103773660046112f2565b610afc565b61020a61038a3660046112f2565b60056020526000908152604090205481565b6006546103af906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b610225610be6565b61028b6103dd36600461135d565b610bf3565b61028b6103f0366004611468565b610c55565b61024561040336600461135d565b610cb7565b610245610416366004611514565b610d1d565b6007546103af906001600160a01b031681565b6103af61043c3660046112f2565b6008602052600090815260409020546001600160a01b031681565b61028b61046536600461155b565b610e1b565b61020a6104783660046114e6565b600460209081526000928352604080842090915290825290205481565b6102456104a33660046115c9565b6001600160e01b0319166000908152600b602052604090205460ff919091161c600116151590565b6102456104d93660046115fc565b6001600160a01b0391909116600090815260096020526040902054600160ff9092161c16151590565b61020a6105103660046113a6565b600b6020526000908152604090205481565b61028b6105303660046112f2565b61105f565b6000805461054290611628565b80601f016020809104026020016040519081016040528092919081815260200182805461056e90611628565b80156105bb5780601f10610590576101008083540402835291602001916105bb565b820191906000526020600020905b81548152906001019060200180831161059e57829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061061e9086815260200190565b60405180910390a35060015b92915050565b610646336000356001600160e01b0319166110dd565b61066b5760405162461bcd60e51b815260040161066290611662565b60405180910390fd5b801561069b576001600160e01b031982166000908152600b602052604090208054600160ff86161b1790556106c2565b6001600160e01b031982166000908152600b602052604090208054600160ff86161b191690555b816001600160e01b0319168360ff167fbfe16b2c35ce23dfd1ab0e7b5d086a10060c9b52d1574e1680c881b3b3a2b15183604051610704911515815260200190565b60405180910390a3505050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019811461076d57610748838261169e565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b0385166000908152600360205260408120805485929061079590849061169e565b90915550506001600160a01b03808516600081815260036020526040908190208054870190555190918716906000805160206117e5833981519152906107de9087815260200190565b60405180910390a360019150505b9392505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461082957610824611187565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b7f0000000000000000000000000000000000000000000000000000000000000000156108a65761088a336000356001600160e01b0319166110dd565b6108a65760405162461bcd60e51b8152600401610662906116b1565b6108b08282611221565b5050565b7f00000000000000000000000000000000000000000000000000000000000000001561090c576108f0336000356001600160e01b0319166110dd565b61090c5760405162461bcd60e51b8152600401610662906116b1565b610916338261127b565b50565b61092f336000356001600160e01b0319166110dd565b61094b5760405162461bcd60e51b815260040161066290611662565b6001600160e01b031982166000818152600a6020908152604091829020805460ff191685151590811790915591519182527f36d28126bef21a4f3765d7fcb7c45cead463ae4c41094ef3b771ede598544103910160405180910390a25050565b6109c1336000356001600160e01b0319166110dd565b6109dd5760405162461bcd60e51b815260040161066290611662565b8015610a0c576001600160a01b03831660009081526009602052604090208054600160ff85161b179055610a32565b6001600160a01b03831660009081526009602052604090208054600160ff85161b191690555b8160ff16836001600160a01b03167f4c9bdd0c8e073eb5eda2250b18d8e5121ff27b62064fbeeeed4869bb99bc5bf283604051610704911515815260200190565b610a89336000356001600160e01b0319166110dd565b610aa55760405162461bcd60e51b815260040161066290611662565b6001600160a01b0382811660008181526008602052604080822080546001600160a01b0319169486169485179055517fa4908e11a5f895b13d51526c331ac93cdd30e59772361c5d07874eb36bff20659190a35050565b6006546001600160a01b0316331480610b91575060075460405163b700961360e01b81526001600160a01b039091169063b700961390610b5090339030906001600160e01b031960003516906004016116e8565b602060405180830381865afa158015610b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b919190611715565b610b9a57600080fd5b600780546001600160a01b0319166001600160a01b03831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b7638998019890600090a350565b6001805461054290611628565b7f000000000000000000000000000000000000000000000000000000000000000015610c4b57610c2f336000356001600160e01b0319166110dd565b610c4b5760405162461bcd60e51b8152600401610662906116b1565b6108b0828261127b565b7f000000000000000000000000000000000000000000000000000000000000000015610cad57610c91336000356001600160e01b0319166110dd565b610cad5760405162461bcd60e51b8152600401610662906116b1565b6109163382611221565b33600090815260036020526040812080548391908390610cd890849061169e565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133906000805160206117e58339815191529061061e9086815260200190565b6001600160a01b038083166000908152600860205260408120549091168015610db95760405163b700961360e01b81526001600160a01b0382169063b700961390610d70908890889088906004016116e8565b602060405180830381865afa158015610d8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db19190611715565b9150506107ec565b6001600160e01b031983166000908152600a602052604090205460ff1680610e1257506001600160e01b031983166000908152600b60209081526040808320546001600160a01b03891684526009909252909120541615155b95945050505050565b42841015610e6b5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610662565b60006001610e776107f3565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610f83573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610fb95750876001600160a01b0316816001600160a01b0316145b610ff65760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606401610662565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b611075336000356001600160e01b0319166110dd565b6110915760405162461bcd60e51b815260040161066290611662565b600680546001600160a01b0319166001600160a01b03831690811790915560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b6007546000906001600160a01b03168015801590611167575060405163b700961360e01b81526001600160a01b0382169063b700961390611126908790309088906004016116e8565b602060405180830381865afa158015611143573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111679190611715565b8061117f57506006546001600160a01b038581169116145b949350505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516111b99190611732565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b806002600082825461123391906117d1565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481526000805160206117e583398151915291015b60405180910390a35050565b6001600160a01b038216600090815260036020526040812080548392906112a390849061169e565b90915550506002805482900390556040518181526000906001600160a01b038416906000805160206117e58339815191529060200161126f565b6001600160a01b038116811461091657600080fd5b60006020828403121561130457600080fd5b81356107ec816112dd565b600060208083528351808285015260005b8181101561133c57858101830151858201604001528201611320565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561137057600080fd5b823561137b816112dd565b946020939093013593505050565b80356001600160e01b0319811681146113a157600080fd5b919050565b6000602082840312156113b857600080fd5b6107ec82611389565b803560ff811681146113a157600080fd5b801515811461091657600080fd5b6000806000606084860312156113f557600080fd5b6113fe846113c1565b925061140c60208501611389565b9150604084013561141c816113d2565b809150509250925092565b60008060006060848603121561143c57600080fd5b8335611447816112dd565b92506020840135611457816112dd565b929592945050506040919091013590565b60006020828403121561147a57600080fd5b5035919050565b6000806040838503121561149457600080fd5b61149d83611389565b915060208301356114ad816113d2565b809150509250929050565b6000806000606084860312156114cd57600080fd5b83356114d8816112dd565b925061140c602085016113c1565b600080604083850312156114f957600080fd5b8235611504816112dd565b915060208301356114ad816112dd565b60008060006060848603121561152957600080fd5b8335611534816112dd565b92506020840135611544816112dd565b915061155260408501611389565b90509250925092565b600080600080600080600060e0888a03121561157657600080fd5b8735611581816112dd565b96506020880135611591816112dd565b955060408801359450606088013593506115ad608089016113c1565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156115dc57600080fd5b6115e5836113c1565b91506115f360208401611389565b90509250929050565b6000806040838503121561160f57600080fd5b823561161a816112dd565b91506115f3602084016113c1565b600181811c9082168061163c57607f821691505b60208210810361165c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561062a5761062a611688565b6020808252601d908201527f45524332304d696e7461626c653a206e6f7420617574686f72697a6564000000604082015260600190565b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b60006020828403121561172757600080fd5b81516107ec816113d2565b600080835481600182811c91508083168061174e57607f831692505b6020808410820361176d57634e487b7160e01b86526022600452602486fd5b8180156117815760018114611796576117c3565b60ff19861689528415158502890196506117c3565b60008a81526020902060005b868110156117bb5781548b8201529085019083016117a2565b505084890196505b509498975050505050505050565b8082018082111561062a5761062a61168856feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212200fb93212c30cec26541b947d6a2a8c4de830fd7d3797c3cc21d1860aaaa658bc64736f6c63430008130033", + "sourceMap": "254:1232:38:-:0;;;362:322;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;583:5;616:4;583:5;616:4;531;537:6;545:8;2094:4:87;:12;531:4:38;2094::87;:12;:::i;:::-;-1:-1:-1;2116:6:87;:16;2125:7;2116:6;:16;:::i;:::-;-1:-1:-1;2142:20:87;;;;;2192:13;2173:32;;2242:24;:22;:24::i;:::-;2215:51;;-1:-1:-1;;682:5:84;:14;;-1:-1:-1;;;;;682:14:84;;;-1:-1:-1;;;;;;682:14:84;;;;;;;;706:9;:22;;;;;;;;;;;;744:40;;682:14;;-1:-1:-1;765:10:84;;744:40;;682:5;;744:40;799;;-1:-1:-1;;;;;799:40:84;;;816:10;;799:40;;;;;-1:-1:-1;;;;639:38:38::2;;;::::0;-1:-1:-1;254:1232:38;;-1:-1:-1;;;254:1232:38;5510:446:87;5575:7;5672:95;5805:4;5789:22;;;;;;:::i;:::-;;;;;;;;;;5640:295;;;5830:25:149;;;;5871:18;;5864:34;;;;5833:14:87;5914:18:149;;;5907:34;5869:13:87;5957:18:149;;;5950:34;5912:4:87;6000:19:149;;;5993:61;5802:19;;5640:295:87;;;;;;;;;;;;5613:336;;;;;;5594:355;;5510:446;:::o;14:127:149:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:149;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:149;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:149:o;991:164::-;1067:13;;1116;;1109:21;1099:32;;1089:60;;1145:1;1142;1135:12;1089:60;991:164;;;:::o;1160:968::-;1281:6;1289;1297;1305;1313;1366:3;1354:9;1345:7;1341:23;1337:33;1334:53;;;1383:1;1380;1373:12;1334:53;1410:16;;-1:-1:-1;;;;;1475:14:149;;;1472:34;;;1502:1;1499;1492:12;1472:34;1525:61;1578:7;1569:6;1558:9;1554:22;1525:61;:::i;:::-;1515:71;;1632:2;1621:9;1617:18;1611:25;1595:41;;1661:2;1651:8;1648:16;1645:36;;;1677:1;1674;1667:12;1645:36;;1700:63;1755:7;1744:8;1733:9;1729:24;1700:63;:::i;:::-;1690:73;;;1806:2;1795:9;1791:18;1785:25;1850:4;1843:5;1839:16;1832:5;1829:27;1819:55;;1870:1;1867;1860:12;1819:55;1943:2;1928:18;;1922:25;1893:5;;-1:-1:-1;;;;;;1978:33:149;;1966:46;;1956:74;;2026:1;2023;2016:12;1956:74;2049:7;-1:-1:-1;2075:47:149;2117:3;2102:19;;2075:47;:::i;:::-;2065:57;;1160:968;;;;;;;;:::o;2133:380::-;2212:1;2208:12;;;;2255;;;2276:61;;2330:4;2322:6;2318:17;2308:27;;2276:61;2383:2;2375:6;2372:14;2352:18;2349:38;2346:161;;2429:10;2424:3;2420:20;2417:1;2410:31;2464:4;2461:1;2454:15;2492:4;2489:1;2482:15;2346:161;;2133:380;;;:::o;2644:545::-;2746:2;2741:3;2738:11;2735:448;;;2782:1;2807:5;2803:2;2796:17;2852:4;2848:2;2838:19;2922:2;2910:10;2906:19;2903:1;2899:27;2893:4;2889:38;2958:4;2946:10;2943:20;2940:47;;;-1:-1:-1;2981:4:149;2940:47;3036:2;3031:3;3027:12;3024:1;3020:20;3014:4;3010:31;3000:41;;3091:82;3109:2;3102:5;3099:13;3091:82;;;3154:17;;;3135:1;3124:13;3091:82;;;3095:3;;;2735:448;2644:545;;;:::o;3365:1352::-;3485:10;;-1:-1:-1;;;;;3507:30:149;;3504:56;;;3540:18;;:::i;:::-;3569:97;3659:6;3619:38;3651:4;3645:11;3619:38;:::i;:::-;3613:4;3569:97;:::i;:::-;3721:4;;3785:2;3774:14;;3802:1;3797:663;;;;4504:1;4521:6;4518:89;;;-1:-1:-1;4573:19:149;;;4567:26;4518:89;-1:-1:-1;;3322:1:149;3318:11;;;3314:24;3310:29;3300:40;3346:1;3342:11;;;3297:57;4620:81;;3767:944;;3797:663;2591:1;2584:14;;;2628:4;2615:18;;-1:-1:-1;;3833:20:149;;;3951:236;3965:7;3962:1;3959:14;3951:236;;;4054:19;;;4048:26;4033:42;;4146:27;;;;4114:1;4102:14;;;;3981:19;;3951:236;;;3955:3;4215:6;4206:7;4203:19;4200:201;;;4276:19;;;4270:26;-1:-1:-1;;4359:1:149;4355:14;;;4371:3;4351:24;4347:37;4343:42;4328:58;4313:74;;4200:201;-1:-1:-1;;;;;4447:1:149;4431:14;;;4427:22;4414:36;;-1:-1:-1;3365:1352:149:o;4722:844::-;4852:3;4881:1;4914:6;4908:13;4944:36;4970:9;4944:36;:::i;:::-;4999:1;5016:18;;;5043:133;;;;5190:1;5185:356;;;;5009:532;;5043:133;-1:-1:-1;;5076:24:149;;5064:37;;5149:14;;5142:22;5130:35;;5121:45;;;-1:-1:-1;5043:133:149;;5185:356;5216:6;5213:1;5206:17;5246:4;5291:2;5288:1;5278:16;5316:1;5330:165;5344:6;5341:1;5338:13;5330:165;;;5422:14;;5409:11;;;5402:35;5465:16;;;;5359:10;;5330:165;;;5334:3;;;5524:6;5519:3;5515:16;5508:23;;5009:532;-1:-1:-1;5557:3:149;;4722:844;-1:-1:-1;;;;;;4722:844:149:o;5571:489::-;254:1232:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806342966c6811610097578063a0712d6811610066578063a0712d68146101ee578063a457c2d714610201578063a9059cbb14610214578063dd62ed3e1461022757600080fd5b806342966c681461019757806370a08231146101aa57806395d89b41146101d35780639dc29fac146101db57600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461016f57806340c10f191461018257600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b61010261023a565b60405161010f919061094f565b60405180910390f35b61012b6101263660046109b9565b6102cc565b604051901515815260200161010f565b6002545b60405190815260200161010f565b61012b61015b3660046109e3565b6102e6565b6040516012815260200161010f565b61012b61017d3660046109b9565b61030a565b6101956101903660046109b9565b61032c565b005b6101956101a5366004610a1f565b61033a565b61013f6101b8366004610a38565b6001600160a01b031660009081526020819052604090205490565b610102610347565b6101956101e93660046109b9565b610356565b6101956101fc366004610a1f565b610360565b61012b61020f3660046109b9565b61036a565b61012b6102223660046109b9565b6103ea565b61013f610235366004610a5a565b6103f8565b60606003805461024990610a8d565b80601f016020809104026020016040519081016040528092919081815260200182805461027590610a8d565b80156102c25780601f10610297576101008083540402835291602001916102c2565b820191906000526020600020905b8154815290600101906020018083116102a557829003601f168201915b5050505050905090565b6000336102da818585610423565b60019150505b92915050565b6000336102f4858285610548565b6102ff8585856105c2565b506001949350505050565b6000336102da81858561031d83836103f8565b6103279190610ac7565b610423565b6103368282610766565b5050565b6103443382610825565b50565b60606004805461024990610a8d565b6103368282610825565b6103443382610766565b6000338161037882866103f8565b9050838110156103dd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102ff8286868403610423565b6000336102da8185856105c2565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104855760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103d4565b6001600160a01b0382166104e65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103d4565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061055484846103f8565b905060001981146105bc57818110156105af5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103d4565b6105bc8484848403610423565b50505050565b6001600160a01b0383166106265760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103d4565b6001600160a01b0382166106885760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103d4565b6001600160a01b038316600090815260208190526040902054818110156107005760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103d4565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105bc565b6001600160a01b0382166107bc5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103d4565b80600260008282546107ce9190610ac7565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b0382166108855760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103d4565b6001600160a01b038216600090815260208190526040902054818110156108f95760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103d4565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161053b565b600060208083528351808285015260005b8181101561097c57858101830151858201604001528201610960565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146109b457600080fd5b919050565b600080604083850312156109cc57600080fd5b6109d58361099d565b946020939093013593505050565b6000806000606084860312156109f857600080fd5b610a018461099d565b9250610a0f6020850161099d565b9150604084013590509250925092565b600060208284031215610a3157600080fd5b5035919050565b600060208284031215610a4a57600080fd5b610a538261099d565b9392505050565b60008060408385031215610a6d57600080fd5b610a768361099d565b9150610a846020840161099d565b90509250929050565b600181811c90821680610aa157607f821691505b602082108103610ac157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e057634e487b7160e01b600052601160045260246000fdfea2646970667358221220f57185fcfa454cd1da42f03b63a56ee658acb08bb0d9065c39aa97d081dc011564736f6c63430008130033", - "sourceMap": "252:470:41:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98:73;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4444:197;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:162;;1162:22;1144:41;;1132:2;1117:18;4444:197:73;1004:187:162;3255:106:73;3342:12;;3255:106;;;1342:25:162;;;1330:2;1315:18;3255:106:73;1196:177:162;5203:256:73;;;;;;:::i;:::-;;:::i;3104:91::-;;;3186:2;1853:36:162;;1841:2;1826:18;3104:91:73;1711:184:162;5854:234:73;;;;;;:::i;:::-;;:::i;421:103:41:-;;;;;;:::i;:::-;;:::i;:::-;;530:81;;;;;;:::i;:::-;;:::i;3419:125:73:-;;;;;;:::i;:::-;-1:-1:-1;;;;;3519:18:73;3493:7;3519:18;;;;;;;;;;;;3419:125;2369:102;;;:::i;617:103:41:-;;;;;;:::i;:::-;;:::i;334:81::-;;;;;;:::i;:::-;;:::i;6575:427:73:-;;;;;;:::i;:::-;;:::i;3740:189::-;;;;;;:::i;:::-;;:::i;3987:149::-;;;;;;:::i;:::-;;:::i;2158:98::-;2212:13;2244:5;2237:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98;:::o;4444:197::-;4527:4;719:10:83;4581:32:73;719:10:83;4597:7:73;4606:6;4581:8;:32::i;:::-;4630:4;4623:11;;;4444:197;;;;;:::o;5203:256::-;5300:4;719:10:83;5356:38:73;5372:4;719:10:83;5387:6:73;5356:15;:38::i;:::-;5404:27;5414:4;5420:2;5424:6;5404:9;:27::i;:::-;-1:-1:-1;5448:4:73;;5203:256;-1:-1:-1;;;;5203:256:73:o;5854:234::-;5942:4;719:10:83;5996:64:73;719:10:83;6012:7:73;6049:10;6021:25;719:10:83;6012:7:73;6021:9;:25::i;:::-;:38;;;;:::i;:::-;5996:8;:64::i;421:103:41:-;491:26;497:11;510:6;491:5;:26::i;:::-;421:103;;:::o;530:81::-;579:25;585:10;597:6;579:5;:25::i;:::-;530:81;:::o;2369:102:73:-;2425:13;2457:7;2450:14;;;;;:::i;617:103:41:-;687:26;693:11;706:6;687:5;:26::i;334:81::-;383:25;389:10;401:6;383:5;:25::i;6575:427:73:-;6668:4;719:10:83;6668:4:73;6749:25;719:10:83;6766:7:73;6749:9;:25::i;:::-;6722:52;;6812:15;6792:16;:35;;6784:85;;;;-1:-1:-1;;;6784:85:73;;3355:2:162;6784:85:73;;;3337:21:162;3394:2;3374:18;;;3367:30;3433:34;3413:18;;;3406:62;-1:-1:-1;;;3484:18:162;;;3477:35;3529:19;;6784:85:73;;;;;;;;;6903:60;6912:5;6919:7;6947:15;6928:16;:34;6903:8;:60::i;3740:189::-;3819:4;719:10:83;3873:28:73;719:10:83;3890:2:73;3894:6;3873:9;:28::i;3987:149::-;-1:-1:-1;;;;;4102:18:73;;;4076:7;4102:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3987:149::o;10457:340::-;-1:-1:-1;;;;;10558:19:73;;10550:68;;;;-1:-1:-1;;;10550:68:73;;3761:2:162;10550:68:73;;;3743:21:162;3800:2;3780:18;;;3773:30;3839:34;3819:18;;;3812:62;-1:-1:-1;;;3890:18:162;;;3883:34;3934:19;;10550:68:73;3559:400:162;10550:68:73;-1:-1:-1;;;;;10636:21:73;;10628:68;;;;-1:-1:-1;;;10628:68:73;;4166:2:162;10628:68:73;;;4148:21:162;4205:2;4185:18;;;4178:30;4244:34;4224:18;;;4217:62;-1:-1:-1;;;4295:18:162;;;4288:32;4337:19;;10628:68:73;3964:398:162;10628:68:73;-1:-1:-1;;;;;10707:18:73;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10758:32;;1342:25:162;;;10758:32:73;;1315:18:162;10758:32:73;;;;;;;;10457:340;;;:::o;11078:411::-;11178:24;11205:25;11215:5;11222:7;11205:9;:25::i;:::-;11178:52;;-1:-1:-1;;11244:16:73;:37;11240:243;;11325:6;11305:16;:26;;11297:68;;;;-1:-1:-1;;;11297:68:73;;4569:2:162;11297:68:73;;;4551:21:162;4608:2;4588:18;;;4581:30;4647:31;4627:18;;;4620:59;4696:18;;11297:68:73;4367:353:162;11297:68:73;11407:51;11416:5;11423:7;11451:6;11432:16;:25;11407:8;:51::i;:::-;11168:321;11078:411;;;:::o;7456:788::-;-1:-1:-1;;;;;7552:18:73;;7544:68;;;;-1:-1:-1;;;7544:68:73;;4927:2:162;7544:68:73;;;4909:21:162;4966:2;4946:18;;;4939:30;5005:34;4985:18;;;4978:62;-1:-1:-1;;;5056:18:162;;;5049:35;5101:19;;7544:68:73;4725:401:162;7544:68:73;-1:-1:-1;;;;;7630:16:73;;7622:64;;;;-1:-1:-1;;;7622:64:73;;5333:2:162;7622:64:73;;;5315:21:162;5372:2;5352:18;;;5345:30;5411:34;5391:18;;;5384:62;-1:-1:-1;;;5462:18:162;;;5455:33;5505:19;;7622:64:73;5131:399:162;7622:64:73;-1:-1:-1;;;;;7768:15:73;;7746:19;7768:15;;;;;;;;;;;7801:21;;;;7793:72;;;;-1:-1:-1;;;7793:72:73;;5737:2:162;7793:72:73;;;5719:21:162;5776:2;5756:18;;;5749:30;5815:34;5795:18;;;5788:62;-1:-1:-1;;;5866:18:162;;;5859:36;5912:19;;7793:72:73;5535:402:162;7793:72:73;-1:-1:-1;;;;;7899:15:73;;;:9;:15;;;;;;;;;;;7917:20;;;7899:38;;8114:13;;;;;;;;;;:23;;;;;;8163:26;;1342:25:162;;;8114:13:73;;8163:26;;1315:18:162;8163:26:73;;;;;;;8200:37;9375:659;8520:535;-1:-1:-1;;;;;8603:21:73;;8595:65;;;;-1:-1:-1;;;8595:65:73;;6144:2:162;8595:65:73;;;6126:21:162;6183:2;6163:18;;;6156:30;6222:33;6202:18;;;6195:61;6273:18;;8595:65:73;5942:355:162;8595:65:73;8747:6;8731:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8899:18:73;;:9;:18;;;;;;;;;;;:28;;;;;;8952:37;1342:25:162;;;8952:37:73;;1315:18:162;8952:37:73;;;;;;;421:103:41;;:::o;9375:659:73:-;-1:-1:-1;;;;;9458:21:73;;9450:67;;;;-1:-1:-1;;;9450:67:73;;6504:2:162;9450:67:73;;;6486:21:162;6543:2;6523:18;;;6516:30;6582:34;6562:18;;;6555:62;-1:-1:-1;;;6633:18:162;;;6626:31;6674:19;;9450:67:73;6302:397:162;9450:67:73;-1:-1:-1;;;;;9613:18:73;;9588:22;9613:18;;;;;;;;;;;9649:24;;;;9641:71;;;;-1:-1:-1;;;9641:71:73;;6906:2:162;9641:71:73;;;6888:21:162;6945:2;6925:18;;;6918:30;6984:34;6964:18;;;6957:62;-1:-1:-1;;;7035:18:162;;;7028:32;7077:19;;9641:71:73;6704:398:162;9641:71:73;-1:-1:-1;;;;;9746:18:73;;:9;:18;;;;;;;;;;;9767:23;;;9746:44;;9883:12;:22;;;;;;;9931:37;1342:25:162;;;9746:9:73;;:18;9931:37;;1315:18:162;9931:37:73;1196:177:162;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:162;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:162:o;1378:328::-;1455:6;1463;1471;1524:2;1512:9;1503:7;1499:23;1495:32;1492:52;;;1540:1;1537;1530:12;1492:52;1563:29;1582:9;1563:29;:::i;:::-;1553:39;;1611:38;1645:2;1634:9;1630:18;1611:38;:::i;:::-;1601:48;;1696:2;1685:9;1681:18;1668:32;1658:42;;1378:328;;;;;:::o;1900:180::-;1959:6;2012:2;2000:9;1991:7;1987:23;1983:32;1980:52;;;2028:1;2025;2018:12;1980:52;-1:-1:-1;2051:23:162;;1900:180;-1:-1:-1;1900:180:162:o;2085:186::-;2144:6;2197:2;2185:9;2176:7;2172:23;2168:32;2165:52;;;2213:1;2210;2203:12;2165:52;2236:29;2255:9;2236:29;:::i;:::-;2226:39;2085:186;-1:-1:-1;;;2085:186:162:o;2276:260::-;2344:6;2352;2405:2;2393:9;2384:7;2380:23;2376:32;2373:52;;;2421:1;2418;2411:12;2373:52;2444:29;2463:9;2444:29;:::i;:::-;2434:39;;2492:38;2526:2;2515:9;2511:18;2492:38;:::i;:::-;2482:48;;2276:260;;;;;:::o;2541:380::-;2620:1;2616:12;;;;2663;;;2684:61;;2738:4;2730:6;2726:17;2716:27;;2684:61;2791:2;2783:6;2780:14;2760:18;2757:38;2754:161;;2837:10;2832:3;2828:20;2825:1;2818:31;2872:4;2869:1;2862:15;2900:4;2897:1;2890:15;2754:161;;2541:380;;;:::o;2926:222::-;2991:9;;;3012:10;;;3009:133;;;3064:10;3059:3;3055:20;3052:1;3045:31;3099:4;3096:1;3089:15;3127:4;3124:1;3117:15", - "linkReferences": {} - }, - "methodIdentifiers": { - "allowance(address,address)": "dd62ed3e", - "approve(address,uint256)": "095ea7b3", - "balanceOf(address)": "70a08231", - "burn(address,uint256)": "9dc29fac", - "burn(uint256)": "42966c68", - "decimals()": "313ce567", - "decreaseAllowance(address,uint256)": "a457c2d7", - "increaseAllowance(address,uint256)": "39509351", - "mint(address,uint256)": "40c10f19", - "mint(uint256)": "a0712d68", - "name()": "06fdde03", - "symbol()": "95d89b41", - "totalSupply()": "18160ddd", + "object": "0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80637a9e5e4b1161010f578063bf7e214f116100a2578063e688747b11610071578063e688747b14610495578063ea7ca276146104cb578063ed0d0efb14610502578063f2fde38b1461052257600080fd5b8063bf7e214f1461041b578063c53a39851461042e578063d505accf14610457578063dd62ed3e1461046a57600080fd5b80639dc29fac116100de5780639dc29fac146103cf578063a0712d68146103e2578063a9059cbb146103f5578063b70096131461040857600080fd5b80637a9e5e4b146103695780637ecebe001461037c5780638da5cb5b1461039c57806395d89b41146103c757600080fd5b8063313ce567116101875780634b5159da116101565780634b5159da1461031057806367aff4841461032357806370a0823114610336578063728b952b1461035657600080fd5b8063313ce567146102a95780633644e515146102e257806340c10f19146102ea57806342966c68146102fd57600080fd5b80630bade8a4116101c35780630bade8a4146102555780630ea9b75b1461027857806318160ddd1461028d57806323b872dd1461029657600080fd5b806306a36aee146101ea57806306fdde031461021d578063095ea7b314610232575b600080fd5b61020a6101f83660046112f2565b60096020526000908152604090205481565b6040519081526020015b60405180910390f35b610225610535565b604051610214919061130f565b61024561024036600461135d565b6105c3565b6040519015158152602001610214565b6102456102633660046113a6565b600a6020526000908152604090205460ff1681565b61028b6102863660046113e0565b610630565b005b61020a60025481565b6102456102a4366004611427565b610711565b6102d07f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610214565b61020a6107f3565b61028b6102f836600461135d565b61084e565b61028b61030b366004611468565b6108b4565b61028b61031e366004611481565b610919565b61028b6103313660046114b8565b6109ab565b61020a6103443660046112f2565b60036020526000908152604090205481565b61028b6103643660046114e6565b610a73565b61028b6103773660046112f2565b610afc565b61020a61038a3660046112f2565b60056020526000908152604090205481565b6006546103af906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b610225610be6565b61028b6103dd36600461135d565b610bf3565b61028b6103f0366004611468565b610c55565b61024561040336600461135d565b610cb7565b610245610416366004611514565b610d1d565b6007546103af906001600160a01b031681565b6103af61043c3660046112f2565b6008602052600090815260409020546001600160a01b031681565b61028b61046536600461155b565b610e1b565b61020a6104783660046114e6565b600460209081526000928352604080842090915290825290205481565b6102456104a33660046115c9565b6001600160e01b0319166000908152600b602052604090205460ff919091161c600116151590565b6102456104d93660046115fc565b6001600160a01b0391909116600090815260096020526040902054600160ff9092161c16151590565b61020a6105103660046113a6565b600b6020526000908152604090205481565b61028b6105303660046112f2565b61105f565b6000805461054290611628565b80601f016020809104026020016040519081016040528092919081815260200182805461056e90611628565b80156105bb5780601f10610590576101008083540402835291602001916105bb565b820191906000526020600020905b81548152906001019060200180831161059e57829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061061e9086815260200190565b60405180910390a35060015b92915050565b610646336000356001600160e01b0319166110dd565b61066b5760405162461bcd60e51b815260040161066290611662565b60405180910390fd5b801561069b576001600160e01b031982166000908152600b602052604090208054600160ff86161b1790556106c2565b6001600160e01b031982166000908152600b602052604090208054600160ff86161b191690555b816001600160e01b0319168360ff167fbfe16b2c35ce23dfd1ab0e7b5d086a10060c9b52d1574e1680c881b3b3a2b15183604051610704911515815260200190565b60405180910390a3505050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019811461076d57610748838261169e565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b0385166000908152600360205260408120805485929061079590849061169e565b90915550506001600160a01b03808516600081815260036020526040908190208054870190555190918716906000805160206117e5833981519152906107de9087815260200190565b60405180910390a360019150505b9392505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461082957610824611187565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b7f0000000000000000000000000000000000000000000000000000000000000000156108a65761088a336000356001600160e01b0319166110dd565b6108a65760405162461bcd60e51b8152600401610662906116b1565b6108b08282611221565b5050565b7f00000000000000000000000000000000000000000000000000000000000000001561090c576108f0336000356001600160e01b0319166110dd565b61090c5760405162461bcd60e51b8152600401610662906116b1565b610916338261127b565b50565b61092f336000356001600160e01b0319166110dd565b61094b5760405162461bcd60e51b815260040161066290611662565b6001600160e01b031982166000818152600a6020908152604091829020805460ff191685151590811790915591519182527f36d28126bef21a4f3765d7fcb7c45cead463ae4c41094ef3b771ede598544103910160405180910390a25050565b6109c1336000356001600160e01b0319166110dd565b6109dd5760405162461bcd60e51b815260040161066290611662565b8015610a0c576001600160a01b03831660009081526009602052604090208054600160ff85161b179055610a32565b6001600160a01b03831660009081526009602052604090208054600160ff85161b191690555b8160ff16836001600160a01b03167f4c9bdd0c8e073eb5eda2250b18d8e5121ff27b62064fbeeeed4869bb99bc5bf283604051610704911515815260200190565b610a89336000356001600160e01b0319166110dd565b610aa55760405162461bcd60e51b815260040161066290611662565b6001600160a01b0382811660008181526008602052604080822080546001600160a01b0319169486169485179055517fa4908e11a5f895b13d51526c331ac93cdd30e59772361c5d07874eb36bff20659190a35050565b6006546001600160a01b0316331480610b91575060075460405163b700961360e01b81526001600160a01b039091169063b700961390610b5090339030906001600160e01b031960003516906004016116e8565b602060405180830381865afa158015610b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b919190611715565b610b9a57600080fd5b600780546001600160a01b0319166001600160a01b03831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b7638998019890600090a350565b6001805461054290611628565b7f000000000000000000000000000000000000000000000000000000000000000015610c4b57610c2f336000356001600160e01b0319166110dd565b610c4b5760405162461bcd60e51b8152600401610662906116b1565b6108b0828261127b565b7f000000000000000000000000000000000000000000000000000000000000000015610cad57610c91336000356001600160e01b0319166110dd565b610cad5760405162461bcd60e51b8152600401610662906116b1565b6109163382611221565b33600090815260036020526040812080548391908390610cd890849061169e565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133906000805160206117e58339815191529061061e9086815260200190565b6001600160a01b038083166000908152600860205260408120549091168015610db95760405163b700961360e01b81526001600160a01b0382169063b700961390610d70908890889088906004016116e8565b602060405180830381865afa158015610d8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db19190611715565b9150506107ec565b6001600160e01b031983166000908152600a602052604090205460ff1680610e1257506001600160e01b031983166000908152600b60209081526040808320546001600160a01b03891684526009909252909120541615155b95945050505050565b42841015610e6b5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610662565b60006001610e776107f3565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610f83573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610fb95750876001600160a01b0316816001600160a01b0316145b610ff65760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606401610662565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b611075336000356001600160e01b0319166110dd565b6110915760405162461bcd60e51b815260040161066290611662565b600680546001600160a01b0319166001600160a01b03831690811790915560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b6007546000906001600160a01b03168015801590611167575060405163b700961360e01b81526001600160a01b0382169063b700961390611126908790309088906004016116e8565b602060405180830381865afa158015611143573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111679190611715565b8061117f57506006546001600160a01b038581169116145b949350505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516111b99190611732565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b806002600082825461123391906117d1565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481526000805160206117e583398151915291015b60405180910390a35050565b6001600160a01b038216600090815260036020526040812080548392906112a390849061169e565b90915550506002805482900390556040518181526000906001600160a01b038416906000805160206117e58339815191529060200161126f565b6001600160a01b038116811461091657600080fd5b60006020828403121561130457600080fd5b81356107ec816112dd565b600060208083528351808285015260005b8181101561133c57858101830151858201604001528201611320565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561137057600080fd5b823561137b816112dd565b946020939093013593505050565b80356001600160e01b0319811681146113a157600080fd5b919050565b6000602082840312156113b857600080fd5b6107ec82611389565b803560ff811681146113a157600080fd5b801515811461091657600080fd5b6000806000606084860312156113f557600080fd5b6113fe846113c1565b925061140c60208501611389565b9150604084013561141c816113d2565b809150509250925092565b60008060006060848603121561143c57600080fd5b8335611447816112dd565b92506020840135611457816112dd565b929592945050506040919091013590565b60006020828403121561147a57600080fd5b5035919050565b6000806040838503121561149457600080fd5b61149d83611389565b915060208301356114ad816113d2565b809150509250929050565b6000806000606084860312156114cd57600080fd5b83356114d8816112dd565b925061140c602085016113c1565b600080604083850312156114f957600080fd5b8235611504816112dd565b915060208301356114ad816112dd565b60008060006060848603121561152957600080fd5b8335611534816112dd565b92506020840135611544816112dd565b915061155260408501611389565b90509250925092565b600080600080600080600060e0888a03121561157657600080fd5b8735611581816112dd565b96506020880135611591816112dd565b955060408801359450606088013593506115ad608089016113c1565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156115dc57600080fd5b6115e5836113c1565b91506115f360208401611389565b90509250929050565b6000806040838503121561160f57600080fd5b823561161a816112dd565b91506115f3602084016113c1565b600181811c9082168061163c57607f821691505b60208210810361165c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561062a5761062a611688565b6020808252601d908201527f45524332304d696e7461626c653a206e6f7420617574686f72697a6564000000604082015260600190565b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b60006020828403121561172757600080fd5b81516107ec816113d2565b600080835481600182811c91508083168061174e57607f831692505b6020808410820361176d57634e487b7160e01b86526022600452602486fd5b8180156117815760018114611796576117c3565b60ff19861689528415158502890196506117c3565b60008a81526020902060005b868110156117bb5781548b8201529085019083016117a2565b505084890196505b509498975050505050505050565b8082018082111561062a5761062a61168856feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212200fb93212c30cec26541b947d6a2a8c4de830fd7d3797c3cc21d1860aaaa658bc64736f6c63430008130033", + "sourceMap": "254:1232:38:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1622:47:85;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;548:25:149;;;536:2;521:18;1622:47:85;;;;;;;;1031:18:87;;;:::i;:::-;;;;;;;:::i;2461:211::-;;;;;;:::i;:::-;;:::i;:::-;;;1622:14:149;;1615:22;1597:41;;1585:2;1570:18;2461:211:87;1457:187:149;1676:49:85;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4390:396;;;;;;:::i;:::-;;:::i;:::-;;1304:26:87;;;;;;3057:592;;;;;;:::i;:::-;;:::i;1083:31::-;;;;;;;;3503:4:149;3491:17;;;3473:36;;3461:2;3446:18;1083:31:87;3331:184:149;5327:177:87;;;:::i;1051:155:38:-;;;;;;:::i;:::-;;:::i;1212:111::-;;;;;;:::i;:::-;;:::i;3448:210:85:-;;;;;;:::i;:::-;;:::i;3853:337::-;;;;;;:::i;:::-;;:::i;1337:44:87:-;;;;;;:::i;:::-;;;;;;;;;;;;;;3006:241:85;;;;;;:::i;:::-;;:::i;1523:434:84:-;;;;;;:::i;:::-;;:::i;1751:41:87:-;;;;;;:::i;:::-;;;;;;;;;;;;;;562:20:84;;;;;-1:-1:-1;;;;;562:20:84;;;;;;-1:-1:-1;;;;;5327:32:149;;;5309:51;;5297:2;5282:18;562:20:84;5163:203:149;1056:20:87;;;:::i;1329:155:38:-;;;;;;:::i;:::-;;:::i;934:111::-;;;;;;:::i;:::-;;:::i;2678:373:87:-;;;;;;:::i;:::-;;:::i;2336:465:85:-;;;;;;:::i;:::-;;:::i;589:26:84:-;;;;;-1:-1:-1;;;;;589:26:84;;;1369:61:85;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1369:61:85;;;3838:1483:87;;;;;;:::i;:::-;;:::i;1388:64::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1958:186:85;;;;;;:::i;:::-;-1:-1:-1;;;;;;2083:35:85;2051:4;2083:35;;;:22;:35;;;;;;2075:52;;;;;;2131:1;2074:58;:63;;;1958:186;1795:157;;;;;;:::i;:::-;-1:-1:-1;;;;;1908:18:85;;;;1876:4;1908:18;;;:12;:18;;;;;;1939:1;1900:35;;;;;1899:41;:46;;;1795:157;1732:56;;;;;;:::i;:::-;;;;;;;;;;;;;;1963:164:84;;;;;;:::i;:::-;;:::i;1031:18:87:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2461:211::-;2561:10;2535:4;2551:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;2551:30:87;;;;;;;;;;:39;;;2606:37;2535:4;;2551:30;;2606:37;;;;2584:6;548:25:149;;536:2;521:18;;402:177;2606:37:87;;;;;;;;-1:-1:-1;2661:4:87;2461:211;;;;;:::o;4390:396:85:-;902:33:84;915:10;927:7;;-1:-1:-1;;;;;;927:7:84;902:12;:33::i;:::-;894:58;;;;-1:-1:-1;;;894:58:84;;;;;;;:::i;:::-;;;;;;;;;4535:7:85::1;4531:184;;;-1:-1:-1::0;;;;;;4558:35:85;::::1;4597:18;4558:35:::0;;;:22:::1;:35;::::0;;;;:57;;4605:1:::1;:9;::::0;::::1;;4558:57;::::0;;4531:184:::1;;;-1:-1:-1::0;;;;;;4646:35:85;::::1;4686:18;4646:35:::0;;;:22:::1;:35;::::0;;;;:58;;4694:1:::1;:9;::::0;::::1;;4685:19;4646:58;::::0;;4531:184:::1;4758:11;-1:-1:-1::0;;;;;4730:49:85::1;;4752:4;4730:49;;;4771:7;4730:49;;;;1622:14:149::0;1615:22;1597:41;;1585:2;1570:18;;1457:187;4730:49:85::1;;;;;;;;4390:396:::0;;;:::o;3057:592:87:-;-1:-1:-1;;;;;3209:15:87;;3175:4;3209:15;;;:9;:15;;;;;;;;3225:10;3209:27;;;;;;;;-1:-1:-1;;3287:28:87;;3283:80;;3347:16;3357:6;3347:7;:16;:::i;:::-;-1:-1:-1;;;;;3317:15:87;;;;;;:9;:15;;;;;;;;3333:10;3317:27;;;;;;;:46;3283:80;-1:-1:-1;;;;;3374:15:87;;;;;;:9;:15;;;;;:25;;3393:6;;3374:15;:25;;3393:6;;3374:25;:::i;:::-;;;;-1:-1:-1;;;;;;;3545:13:87;;;;;;;:9;:13;;;;;;;:23;;;;;;3594:26;3545:13;;3594:26;;;-1:-1:-1;;;;;;;;;;;3594:26:87;;;3562:6;548:25:149;;536:2;521:18;;402:177;3594:26:87;;;;;;;;3638:4;3631:11;;;3057:592;;;;;;:::o;5327:177::-;5384:7;5427:16;5410:13;:33;:87;;5473:24;:22;:24::i;:::-;5403:94;;5327:177;:::o;5410:87::-;-1:-1:-1;5446:24:87;;5327:177::o;1051:155:38:-;745:18;741:170;;;804:33;817:10;829:7;;-1:-1:-1;;;;;;829:7:38;804:12;:33::i;:::-;779:121;;;;-1:-1:-1;;;779:121:38;;;;;;;:::i;:::-;1173:26:::1;1179:11;1192:6;1173:5;:26::i;:::-;1051:155:::0;;:::o;1212:111::-;745:18;741:170;;;804:33;817:10;829:7;;-1:-1:-1;;;;;;829:7:38;804:12;:33::i;:::-;779:121;;;;-1:-1:-1;;;779:121:38;;;;;;;:::i;:::-;1291:25:::1;1297:10;1309:6;1291:5;:25::i;:::-;1212:111:::0;:::o;3448:210:85:-;902:33:84;915:10;927:7;;-1:-1:-1;;;;;;927:7:84;902:12;:33::i;:::-;894:58;;;;-1:-1:-1;;;894:58:84;;;;;;;:::i;:::-;-1:-1:-1;;;;;;3549:31:85;::::1;;::::0;;;:18:::1;:31;::::0;;;;;;;;:41;;-1:-1:-1;;3549:41:85::1;::::0;::::1;;::::0;;::::1;::::0;;;3606:45;;1597:41:149;;;3606:45:85::1;::::0;1570:18:149;3606:45:85::1;;;;;;;3448:210:::0;;:::o;3853:337::-;902:33:84;915:10;927:7;;-1:-1:-1;;;;;;927:7:84;902:12;:33::i;:::-;894:58;;;;-1:-1:-1;;;894:58:84;;;;;;;:::i;:::-;3986:7:85::1;3982:150;;;-1:-1:-1::0;;;;;4009:18:85;::::1;4031;4009::::0;;;:12:::1;:18;::::0;;;;:40;;4039:1:::1;:9;::::0;::::1;;4009:40;::::0;;3982:150:::1;;;-1:-1:-1::0;;;;;4080:18:85;::::1;4103;4080::::0;;;:12:::1;:18;::::0;;;;:41;;4111:1:::1;:9;::::0;::::1;;4102:19;4080:41;::::0;;3982:150:::1;4169:4;4147:36;;4163:4;-1:-1:-1::0;;;;;4147:36:85::1;;4175:7;4147:36;;;;1622:14:149::0;1615:22;1597:41;;1585:2;1570:18;;1457:187;3006:241:85;902:33:84;915:10;927:7;;-1:-1:-1;;;;;;927:7:84;902:12;:33::i;:::-;894:58;;;;-1:-1:-1;;;894:58:84;;;;;;;:::i;:::-;-1:-1:-1;;;;;3121:32:85;;::::1;;::::0;;;:24:::1;:32;::::0;;;;;:50;;-1:-1:-1;;;;;;3121:50:85::1;::::0;;::::1;::::0;;::::1;::::0;;3187:53;::::1;::::0;3121:32;3187:53:::1;3006:241:::0;;:::o;1523:434:84:-;1794:5;;-1:-1:-1;;;;;1794:5:84;1780:10;:19;;:76;;-1:-1:-1;1803:9:84;;:53;;-1:-1:-1;;;1803:53:84;;-1:-1:-1;;;;;1803:9:84;;;;:17;;:53;;1821:10;;1841:4;;-1:-1:-1;;;;;;1803:9:84;1848:7;;;1803:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1772:85;;;;;;1868:9;:24;;-1:-1:-1;;;;;;1868:24:84;-1:-1:-1;;;;;1868:24:84;;;;;;;;1908:42;;1925:10;;1908:42;;-1:-1:-1;;1908:42:84;1523:434;:::o;1056:20:87:-;;;;;;;:::i;1329:155:38:-;745:18;741:170;;;804:33;817:10;829:7;;-1:-1:-1;;;;;;829:7:38;804:12;:33::i;:::-;779:121;;;;-1:-1:-1;;;779:121:38;;;;;;;:::i;:::-;1451:26:::1;1457:11;1470:6;1451:5;:26::i;934:111::-:0;745:18;741:170;;;804:33;817:10;829:7;;-1:-1:-1;;;;;;829:7:38;804:12;:33::i;:::-;779:121;;;;-1:-1:-1;;;779:121:38;;;;;;;:::i;:::-;1013:25:::1;1019:10;1031:6;1013:5;:25::i;2678:373:87:-:0;2774:10;2748:4;2764:21;;;:9;:21;;;;;:31;;2789:6;;2764:21;2748:4;;2764:31;;2789:6;;2764:31;:::i;:::-;;;;-1:-1:-1;;;;;;;2941:13:87;;;;;;:9;:13;;;;;;;:23;;;;;;2990:32;2999:10;;-1:-1:-1;;;;;;;;;;;2990:32:87;;;2958:6;548:25:149;;536:2;521:18;;402:177;2336:465:85;-1:-1:-1;;;;;2515:32:85;;;2471:4;2515:32;;;:24;:32;;;;;;2471:4;;2515:32;2562:38;;2558:101;;2609:50;;-1:-1:-1;;;2609:50:85;;-1:-1:-1;;;;;2609:23:85;;;;;:50;;2633:4;;2639:6;;2647:11;;2609:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2602:57;;;;;2558:101;-1:-1:-1;;;;;;2689:31:85;;;;;;:18;:31;;;;;;;;;:105;;-1:-1:-1;;;;;;;2759:35:85;;;;;;:22;:35;;;;;;;;;-1:-1:-1;;;;;2738:18:85;;;;:12;:18;;;;;;;:56;2724:70;;2689:105;2670:124;2336:465;-1:-1:-1;;;;;2336:465:85:o;3838:1483:87:-;4057:15;4045:8;:27;;4037:63;;;;-1:-1:-1;;;4037:63:87;;9982:2:149;4037:63:87;;;9964:21:149;10021:2;10001:18;;;9994:30;10060:25;10040:18;;;10033:53;10103:18;;4037:63:87;9780:347:149;4037:63:87;4265:24;4292:805;4428:18;:16;:18::i;:::-;-1:-1:-1;;;;;4873:13:87;;;;;;;:6;:13;;;;;;;;;:15;;;;;;;;4511:449;;4555:165;4511:449;;;10419:25:149;10498:18;;;10491:43;;;;10570:15;;;10550:18;;;10543:43;10602:18;;;10595:34;;;10645:19;;;10638:35;;;;10689:19;;;;10682:35;;;4511:449:87;;;;;;;;;;10391:19:149;;;4511:449:87;;;4472:514;;;;;;;;-1:-1:-1;;;4350:658:87;;;10986:27:149;11029:11;;;11022:27;;;;11065:12;;;11058:28;;;;11102:12;;4350:658:87;;;-1:-1:-1;;4350:658:87;;;;;;;;;4319:707;;4350:658;4319:707;;;;4292:805;;;;;;;;;11352:25:149;11425:4;11413:17;;11393:18;;;11386:45;11447:18;;;11440:34;;;11490:18;;;11483:34;;;11324:19;;4292:805:87;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4292:805:87;;-1:-1:-1;;4292:805:87;;;-1:-1:-1;;;;;;;5120:30:87;;;;;;:59;;;5174:5;-1:-1:-1;;;;;5154:25:87;:16;-1:-1:-1;;;;;5154:25:87;;5120:59;5112:86;;;;-1:-1:-1;;;5112:86:87;;11730:2:149;5112:86:87;;;11712:21:149;11769:2;11749:18;;;11742:30;-1:-1:-1;;;11788:18:149;;;11781:44;11842:18;;5112:86:87;11528:338:149;5112:86:87;-1:-1:-1;;;;;5213:27:87;;;;;;;:9;:27;;;;;;;;:36;;;;;;;;;;;;;:44;;;5283:31;548:25:149;;;5213:36:87;;5283:31;;;;;521:18:149;5283:31:87;;;;;;;3838:1483;;;;;;;:::o;1963:164:84:-;902:33;915:10;927:7;;-1:-1:-1;;;;;;927:7:84;902:12;:33::i;:::-;894:58;;;;-1:-1:-1;;;894:58:84;;;;;;;:::i;:::-;2046:5:::1;:16:::0;;-1:-1:-1;;;;;;2046:16:84::1;-1:-1:-1::0;;;;;2046:16:84;::::1;::::0;;::::1;::::0;;;2078:42:::1;::::0;2099:10:::1;::::0;2078:42:::1;::::0;-1:-1:-1;;2078:42:84::1;1963:164:::0;:::o;977:540::-;1097:9;;1064:4;;-1:-1:-1;;;;;1097:9:84;1415:27;;;;;:77;;-1:-1:-1;1446:46:84;;-1:-1:-1;;;1446:46:84;;-1:-1:-1;;;;;1446:12:84;;;;;:46;;1459:4;;1473;;1480:11;;1446:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1414:96;;;-1:-1:-1;1505:5:84;;-1:-1:-1;;;;;1497:13:84;;;1505:5;;1497:13;1414:96;1407:103;977:540;-1:-1:-1;;;;977:540:84:o;5510:446:87:-;5575:7;5672:95;5805:4;5789:22;;;;;;:::i;:::-;;;;;;;;;;5640:295;;;13397:25:149;;;;13438:18;;13431:34;;;;5833:14:87;13481:18:149;;;13474:34;5869:13:87;13524:18:149;;;13517:34;5912:4:87;13567:19:149;;;13560:61;13369:19;;5640:295:87;;;;;;;;;;;;5613:336;;;;;;5594:355;;5510:446;:::o;6150:325::-;6235:6;6220:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;6387:13:87;;;;;;:9;:13;;;;;;;;:23;;;;;;6436:32;548:25:149;;;-1:-1:-1;;;;;;;;;;;6436:32:87;521:18:149;6436:32:87;;;;;;;;6150:325;;:::o;6481:328::-;-1:-1:-1;;;;;6553:15:87;;;;;;:9;:15;;;;;:25;;6572:6;;6553:15;:25;;6572:6;;6553:25;:::i;:::-;;;;-1:-1:-1;;6721:11:87;:21;;;;;;;6768:34;;548:25:149;;;-1:-1:-1;;;;;;;6768:34:87;;;-1:-1:-1;;;;;;;;;;;6768:34:87;536:2:149;521:18;6768:34:87;402:177:149;14:131;-1:-1:-1;;;;;89:31:149;;79:42;;69:70;;135:1;132;125:12;150:247;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;584:548::-;696:4;725:2;754;743:9;736:21;786:6;780:13;829:6;824:2;813:9;809:18;802:34;854:1;864:140;878:6;875:1;872:13;864:140;;;973:14;;;969:23;;963:30;939:17;;;958:2;935:26;928:66;893:10;;864:140;;;868:3;1053:1;1048:2;1039:6;1028:9;1024:22;1020:31;1013:42;1123:2;1116;1112:7;1107:2;1099:6;1095:15;1091:29;1080:9;1076:45;1072:54;1064:62;;;;584:548;;;;:::o;1137:315::-;1205:6;1213;1266:2;1254:9;1245:7;1241:23;1237:32;1234:52;;;1282:1;1279;1272:12;1234:52;1321:9;1308:23;1340:31;1365:5;1340:31;:::i;:::-;1390:5;1442:2;1427:18;;;;1414:32;;-1:-1:-1;;;1137:315:149:o;1649:173::-;1716:20;;-1:-1:-1;;;;;;1765:32:149;;1755:43;;1745:71;;1812:1;1809;1802:12;1745:71;1649:173;;;:::o;1827:184::-;1885:6;1938:2;1926:9;1917:7;1913:23;1909:32;1906:52;;;1954:1;1951;1944:12;1906:52;1977:28;1995:9;1977:28;:::i;2016:156::-;2082:20;;2142:4;2131:16;;2121:27;;2111:55;;2162:1;2159;2152:12;2177:118;2263:5;2256:13;2249:21;2242:5;2239:32;2229:60;;2285:1;2282;2275:12;2300:383;2371:6;2379;2387;2440:2;2428:9;2419:7;2415:23;2411:32;2408:52;;;2456:1;2453;2446:12;2408:52;2479:27;2496:9;2479:27;:::i;:::-;2469:37;;2525;2558:2;2547:9;2543:18;2525:37;:::i;:::-;2515:47;;2612:2;2601:9;2597:18;2584:32;2625:28;2647:5;2625:28;:::i;:::-;2672:5;2662:15;;;2300:383;;;;;:::o;2870:456::-;2947:6;2955;2963;3016:2;3004:9;2995:7;2991:23;2987:32;2984:52;;;3032:1;3029;3022:12;2984:52;3071:9;3058:23;3090:31;3115:5;3090:31;:::i;:::-;3140:5;-1:-1:-1;3197:2:149;3182:18;;3169:32;3210:33;3169:32;3210:33;:::i;:::-;2870:456;;3262:7;;-1:-1:-1;;;3316:2:149;3301:18;;;;3288:32;;2870:456::o;3520:180::-;3579:6;3632:2;3620:9;3611:7;3607:23;3603:32;3600:52;;;3648:1;3645;3638:12;3600:52;-1:-1:-1;3671:23:149;;3520:180;-1:-1:-1;3520:180:149:o;3705:313::-;3769:6;3777;3830:2;3818:9;3809:7;3805:23;3801:32;3798:52;;;3846:1;3843;3836:12;3798:52;3869:28;3887:9;3869:28;:::i;:::-;3859:38;;3947:2;3936:9;3932:18;3919:32;3960:28;3982:5;3960:28;:::i;:::-;4007:5;3997:15;;;3705:313;;;;;:::o;4023:452::-;4095:6;4103;4111;4164:2;4152:9;4143:7;4139:23;4135:32;4132:52;;;4180:1;4177;4170:12;4132:52;4219:9;4206:23;4238:31;4263:5;4238:31;:::i;:::-;4288:5;-1:-1:-1;4312:36:149;4344:2;4329:18;;4312:36;:::i;4480:407::-;4567:6;4575;4628:2;4616:9;4607:7;4603:23;4599:32;4596:52;;;4644:1;4641;4634:12;4596:52;4683:9;4670:23;4702:31;4727:5;4702:31;:::i;:::-;4752:5;-1:-1:-1;4809:2:149;4794:18;;4781:32;4822:33;4781:32;4822:33;:::i;5371:460::-;5447:6;5455;5463;5516:2;5504:9;5495:7;5491:23;5487:32;5484:52;;;5532:1;5529;5522:12;5484:52;5571:9;5558:23;5590:31;5615:5;5590:31;:::i;:::-;5640:5;-1:-1:-1;5697:2:149;5682:18;;5669:32;5710:33;5669:32;5710:33;:::i;:::-;5762:7;-1:-1:-1;5788:37:149;5821:2;5806:18;;5788:37;:::i;:::-;5778:47;;5371:460;;;;;:::o;6063:734::-;6174:6;6182;6190;6198;6206;6214;6222;6275:3;6263:9;6254:7;6250:23;6246:33;6243:53;;;6292:1;6289;6282:12;6243:53;6331:9;6318:23;6350:31;6375:5;6350:31;:::i;:::-;6400:5;-1:-1:-1;6457:2:149;6442:18;;6429:32;6470:33;6429:32;6470:33;:::i;:::-;6522:7;-1:-1:-1;6576:2:149;6561:18;;6548:32;;-1:-1:-1;6627:2:149;6612:18;;6599:32;;-1:-1:-1;6650:37:149;6682:3;6667:19;;6650:37;:::i;:::-;6640:47;;6734:3;6723:9;6719:19;6706:33;6696:43;;6786:3;6775:9;6771:19;6758:33;6748:43;;6063:734;;;;;;;;;;:::o;7195:254::-;7260:6;7268;7321:2;7309:9;7300:7;7296:23;7292:32;7289:52;;;7337:1;7334;7327:12;7289:52;7360:27;7377:9;7360:27;:::i;:::-;7350:37;;7406;7439:2;7428:9;7424:18;7406:37;:::i;:::-;7396:47;;7195:254;;;;;:::o;7454:317::-;7520:6;7528;7581:2;7569:9;7560:7;7556:23;7552:32;7549:52;;;7597:1;7594;7587:12;7549:52;7636:9;7623:23;7655:31;7680:5;7655:31;:::i;:::-;7705:5;-1:-1:-1;7729:36:149;7761:2;7746:18;;7729:36;:::i;7776:380::-;7855:1;7851:12;;;;7898;;;7919:61;;7973:4;7965:6;7961:17;7951:27;;7919:61;8026:2;8018:6;8015:14;7995:18;7992:38;7989:161;;8072:10;8067:3;8063:20;8060:1;8053:31;8107:4;8104:1;8097:15;8135:4;8132:1;8125:15;7989:161;;7776:380;;;:::o;8161:336::-;8363:2;8345:21;;;8402:2;8382:18;;;8375:30;-1:-1:-1;;;8436:2:149;8421:18;;8414:42;8488:2;8473:18;;8161:336::o;8502:127::-;8563:10;8558:3;8554:20;8551:1;8544:31;8594:4;8591:1;8584:15;8618:4;8615:1;8608:15;8634:128;8701:9;;;8722:11;;;8719:37;;;8736:18;;:::i;8767:353::-;8969:2;8951:21;;;9008:2;8988:18;;;8981:30;9047:31;9042:2;9027:18;;9020:59;9111:2;9096:18;;8767:353::o;9125:400::-;-1:-1:-1;;;;;9381:15:149;;;9363:34;;9433:15;;;;9428:2;9413:18;;9406:43;-1:-1:-1;;;;;;9485:33:149;;;9480:2;9465:18;;9458:61;9313:2;9298:18;;9125:400::o;9530:245::-;9597:6;9650:2;9638:9;9629:7;9625:23;9621:32;9618:52;;;9666:1;9663;9656:12;9618:52;9698:9;9692:16;9717:28;9739:5;9717:28;:::i;12000:1133::-;12130:3;12159:1;12192:6;12186:13;12222:3;12244:1;12272:9;12268:2;12264:18;12254:28;;12332:2;12321:9;12317:18;12354;12344:61;;12398:4;12390:6;12386:17;12376:27;;12344:61;12424:2;12472;12464:6;12461:14;12441:18;12438:38;12435:165;;-1:-1:-1;;;12499:33:149;;12555:4;12552:1;12545:15;12585:4;12506:3;12573:17;12435:165;12616:18;12643:133;;;;12790:1;12785:323;;;;12609:499;;12643:133;-1:-1:-1;;12676:24:149;;12664:37;;12749:14;;12742:22;12730:35;;12721:45;;;-1:-1:-1;12643:133:149;;12785:323;11947:1;11940:14;;;11984:4;11971:18;;12883:1;12897:165;12911:6;12908:1;12905:13;12897:165;;;12989:14;;12976:11;;;12969:35;13032:16;;;;12926:10;;12897:165;;;12901:3;;13091:6;13086:3;13082:16;13075:23;;12609:499;-1:-1:-1;13124:3:149;;12000:1133;-1:-1:-1;;;;;;;;12000:1133:149:o;13632:125::-;13697:9;;;13718:10;;;13715:36;;;13731:18;;:::i", + "linkReferences": {}, + "immutableReferences": { + "13074": [ + { + "start": 2128, + "length": 32 + }, + { + "start": 2230, + "length": 32 + }, + { + "start": 3061, + "length": 32 + }, + { + "start": 3159, + "length": 32 + } + ], + "62350": [ + { + "start": 686, + "length": 32 + } + ], + "62364": [ + { + "start": 2039, + "length": 32 + } + ], + "62366": [ + { + "start": 2092, + "length": 32 + } + ] + } + }, + "methodIdentifiers": { + "DOMAIN_SEPARATOR()": "3644e515", + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "authority()": "bf7e214f", + "balanceOf(address)": "70a08231", + "burn(address,uint256)": "9dc29fac", + "burn(uint256)": "42966c68", + "canCall(address,address,bytes4)": "b7009613", + "decimals()": "313ce567", + "doesRoleHaveCapability(uint8,bytes4)": "e688747b", + "doesUserHaveRole(address,uint8)": "ea7ca276", + "getRolesWithCapability(bytes4)": "ed0d0efb", + "getTargetCustomAuthority(address)": "c53a3985", + "getUserRoles(address)": "06a36aee", + "isCapabilityPublic(bytes4)": "0bade8a4", + "mint(address,uint256)": "40c10f19", + "mint(uint256)": "a0712d68", + "name()": "06fdde03", + "nonces(address)": "7ecebe00", + "owner()": "8da5cb5b", + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf", + "setAuthority(address)": "7a9e5e4b", + "setPublicCapability(bytes4,bool)": "4b5159da", + "setRoleCapability(uint8,bytes4,bool)": "0ea9b75b", + "setTargetCustomAuthority(address,address)": "728b952b", + "setUserRole(address,uint8,bool)": "67aff484", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", "transfer(address,uint256)": "a9059cbb", - "transferFrom(address,address,uint256)": "23b872dd" + "transferFrom(address,address,uint256)": "23b872dd", + "transferOwnership(address)": "f2fde38b" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/ERC20Mintable.sol\":\"ERC20Mintable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@aave/=lib/aave-v3-core/contracts/\",\":aave-v3-core/=lib/aave-v3-core/\",\":create3-factory/=lib/yield-daddy/lib/create3-factory/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":yield-daddy/=lib/yield-daddy/\"]},\"sources\":{\"contracts/test/ERC20Mintable.sol\":{\"keccak256\":\"0x6b711c69de04598e0cb9579dd1dbd445793963a7c2999fee9db70b6ff3548612\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6ab89c2a83f6bbfa87055a302aeeee51f7693fb6715ef3bd484e996308789071\",\"dweb:/ipfs/QmXdHzQ6ymLpUaVQihD1PoCyiArioSLSfLaXMuevXmcngB\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xb62681ccbf84aef125665cfdfc0bf13b532925b1a520d6c935913560f539a31b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://21dbc5b8aede7dee8f0e3bf296a58270f376f8e40d6f8becccde5b3cf34bc8df\",\"dweb:/ipfs/QmfHPWrtGiMNhTtLDYtqSd1eVd35Zqgd4PW9bR3i23oJgg\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol\":{\"keccak256\":\"0x0d19410453cda55960a818e02bd7c18952a5c8fe7a3036e81f0d599f34487a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c0f62d3d5bef22b5ca00cc3903e7de6152cb68d2d22401a463f373cda54c00f\",\"dweb:/ipfs/QmSfzjZux7LC7NW2f7rjCXTHeFMUCWERqDkhpCTBy7kxTe\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isCompetitionMode\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract Authority\",\"name\":\"newAuthority\",\"type\":\"address\"}],\"name\":\"AuthorityUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"functionSig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"PublicCapabilityUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"role\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"functionSig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"RoleCapabilityUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract Authority\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"TargetCustomAuthorityUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"role\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"UserRoleUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"authority\",\"outputs\":[{\"internalType\":\"contract Authority\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"functionSig\",\"type\":\"bytes4\"}],\"name\":\"canCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"role\",\"type\":\"uint8\"},{\"internalType\":\"bytes4\",\"name\":\"functionSig\",\"type\":\"bytes4\"}],\"name\":\"doesRoleHaveCapability\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"role\",\"type\":\"uint8\"}],\"name\":\"doesUserHaveRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"name\":\"getRolesWithCapability\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getTargetCustomAuthority\",\"outputs\":[{\"internalType\":\"contract Authority\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getUserRoles\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"name\":\"isCapabilityPublic\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract Authority\",\"name\":\"newAuthority\",\"type\":\"address\"}],\"name\":\"setAuthority\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"functionSig\",\"type\":\"bytes4\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setPublicCapability\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"role\",\"type\":\"uint8\"},{\"internalType\":\"bytes4\",\"name\":\"functionSig\",\"type\":\"bytes4\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setRoleCapability\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"contract Authority\",\"name\":\"customAuthority\",\"type\":\"address\"}],\"name\":\"setTargetCustomAuthority\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"role\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setUserRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/ERC20Mintable.sol\":\"ERC20Mintable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@aave/=lib/aave-v3-core/contracts/\",\":aave-v3-core/=lib/aave-v3-core/\",\":create3-factory/=lib/yield-daddy/lib/create3-factory/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":yield-daddy/=lib/yield-daddy/\"]},\"sources\":{\"contracts/test/ERC20Mintable.sol\":{\"keccak256\":\"0x43aae73d059561cab83b67044a3602c1899f584fda312edc1640c575a6a04389\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8eac46f31959bc5111826cc457473b1b3f0257588607c98c7adbe376f9365f65\",\"dweb:/ipfs/QmQjWWRgve9Cc8Fs96QPekK1gVJNwSdqEjmMaYxy8mw7ui\"]},\"lib/solmate/src/auth/Auth.sol\":{\"keccak256\":\"0x6e05238d59cd40172c04c1974eb8f1f6cef4fdc4b6553ef7844a7302b885f76c\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://a9743c21ca0470d9082e4cf00aea53786868c977d40775e6954463658ebb50ac\",\"dweb:/ipfs/QmPFdyrLHUX1zSipTC2tcJ58EzxxPp2TTvCZx9KCgqZn2W\"]},\"lib/solmate/src/auth/authorities/MultiRolesAuthority.sol\":{\"keccak256\":\"0x5544e61f98c0e80a8c4b9b691952122d3547ade0c0ad830ae6d5fd65f2d0dbe3\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://232d9054e5c087e0f416d995753051d352b9f24c5bd823be69a6061757fd1fef\",\"dweb:/ipfs/QmZTwcv8YycBRUWX3NLrxNyKud2SCGtfZJiCasTXpjKM4B\"]},\"lib/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.19+commit.7dd6d404" @@ -374,7 +894,33 @@ "output": { "abi": [ { - "inputs": [], + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals", + "type": "uint8" + }, + { + "internalType": "address", + "name": "admin", + "type": "address" + }, + { + "internalType": "bool", + "name": "isCompetitionMode", + "type": "bool" + } + ], "stateMutability": "nonpayable", "type": "constructor" }, @@ -394,7 +940,7 @@ }, { "internalType": "uint256", - "name": "value", + "name": "amount", "type": "uint256", "indexed": false } @@ -407,48 +953,381 @@ "inputs": [ { "internalType": "address", - "name": "from", - "type": "address", - "indexed": true - }, - { - "internalType": "address", - "name": "to", - "type": "address", - "indexed": true + "name": "user", + "type": "address", + "indexed": true + }, + { + "internalType": "contract Authority", + "name": "newAuthority", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "AuthorityUpdated", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "newOwner", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "OwnershipTransferred", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4", + "indexed": true + }, + { + "internalType": "bool", + "name": "enabled", + "type": "bool", + "indexed": false + } + ], + "type": "event", + "name": "PublicCapabilityUpdated", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "role", + "type": "uint8", + "indexed": true + }, + { + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4", + "indexed": true + }, + { + "internalType": "bool", + "name": "enabled", + "type": "bool", + "indexed": false + } + ], + "type": "event", + "name": "RoleCapabilityUpdated", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address", + "indexed": true + }, + { + "internalType": "contract Authority", + "name": "authority", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "TargetCustomAuthorityUpdated", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "to", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "Transfer", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address", + "indexed": true + }, + { + "internalType": "uint8", + "name": "role", + "type": "uint8", + "indexed": true + }, + { + "internalType": "bool", + "name": "enabled", + "type": "bool", + "indexed": false + } + ], + "type": "event", + "name": "UserRoleUpdated", + "anonymous": false + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "authority", + "outputs": [ + { + "internalType": "contract Authority", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "burn" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "destination", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "burn" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function", + "name": "canCall", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "role", + "type": "uint8" + }, + { + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function", + "name": "doesRoleHaveCapability", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" }, { - "internalType": "uint256", - "name": "value", - "type": "uint256", - "indexed": false + "internalType": "uint8", + "name": "role", + "type": "uint8" } ], - "type": "event", - "name": "Transfer", - "anonymous": false + "stateMutability": "view", + "type": "function", + "name": "doesUserHaveRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] }, { "inputs": [ { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" + "internalType": "bytes4", + "name": "", + "type": "bytes4" } ], "stateMutability": "view", "type": "function", - "name": "allowance", + "name": "getRolesWithCapability", "outputs": [ { - "internalType": "uint256", + "internalType": "bytes32", "name": "", - "type": "uint256" + "type": "bytes32" } ] }, @@ -456,23 +1335,18 @@ "inputs": [ { "internalType": "address", - "name": "spender", + "name": "", "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" } ], - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "name": "approve", + "name": "getTargetCustomAuthority", "outputs": [ { - "internalType": "bool", + "internalType": "contract Authority", "name": "", - "type": "bool" + "type": "address" } ] }, @@ -480,32 +1354,39 @@ "inputs": [ { "internalType": "address", - "name": "account", + "name": "", "type": "address" } ], "stateMutability": "view", "type": "function", - "name": "balanceOf", + "name": "getUserRoles", "outputs": [ { - "internalType": "uint256", + "internalType": "bytes32", "name": "", - "type": "uint256" + "type": "bytes32" } ] }, { "inputs": [ { - "internalType": "uint256", - "name": "amount", - "type": "uint256" + "internalType": "bytes4", + "name": "", + "type": "bytes4" } ], - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "name": "burn" + "name": "isCapabilityPublic", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] }, { "inputs": [ @@ -522,18 +1403,30 @@ ], "stateMutability": "nonpayable", "type": "function", - "name": "burn" + "name": "mint" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "mint" }, { "inputs": [], "stateMutability": "view", "type": "function", - "name": "decimals", + "name": "name", "outputs": [ { - "internalType": "uint8", + "internalType": "string", "name": "", - "type": "uint8" + "type": "string" } ] }, @@ -541,28 +1434,41 @@ "inputs": [ { "internalType": "address", - "name": "spender", + "name": "", "type": "address" - }, + } + ], + "stateMutability": "view", + "type": "function", + "name": "nonces", + "outputs": [ { "internalType": "uint256", - "name": "subtractedValue", + "name": "", "type": "uint256" } - ], - "stateMutability": "nonpayable", + ] + }, + { + "inputs": [], + "stateMutability": "view", "type": "function", - "name": "decreaseAllowance", + "name": "owner", "outputs": [ { - "internalType": "bool", + "internalType": "address", "name": "", - "type": "bool" + "type": "address" } ] }, { "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, { "internalType": "address", "name": "spender", @@ -570,62 +1476,123 @@ }, { "internalType": "uint256", - "name": "addedValue", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" } ], "stateMutability": "nonpayable", "type": "function", - "name": "increaseAllowance", - "outputs": [ + "name": "permit" + }, + { + "inputs": [ + { + "internalType": "contract Authority", + "name": "newAuthority", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setAuthority" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4" + }, { "internalType": "bool", - "name": "", + "name": "enabled", "type": "bool" } - ] + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setPublicCapability" }, { "inputs": [ { - "internalType": "address", - "name": "destination", - "type": "address" + "internalType": "uint8", + "name": "role", + "type": "uint8" }, { - "internalType": "uint256", - "name": "amount", - "type": "uint256" + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "enabled", + "type": "bool" } ], "stateMutability": "nonpayable", "type": "function", - "name": "mint" + "name": "setRoleCapability" }, { "inputs": [ { - "internalType": "uint256", - "name": "amount", - "type": "uint256" + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "contract Authority", + "name": "customAuthority", + "type": "address" } ], "stateMutability": "nonpayable", "type": "function", - "name": "mint" + "name": "setTargetCustomAuthority" }, { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "name", - "outputs": [ + "inputs": [ { - "internalType": "string", - "name": "", - "type": "string" + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint8", + "name": "role", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "enabled", + "type": "bool" } - ] + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setUserRole" }, { "inputs": [], @@ -705,45 +1672,23 @@ "type": "bool" } ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "transferOwnership" } ], "devdoc": { "kind": "dev", - "methods": { - "allowance(address,address)": { - "details": "See {IERC20-allowance}." - }, - "approve(address,uint256)": { - "details": "See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address." - }, - "balanceOf(address)": { - "details": "See {IERC20-balanceOf}." - }, - "decimals()": { - "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}." - }, - "decreaseAllowance(address,uint256)": { - "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`." - }, - "increaseAllowance(address,uint256)": { - "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address." - }, - "name()": { - "details": "Returns the name of the token." - }, - "symbol()": { - "details": "Returns the symbol of the token, usually a shorter version of the name." - }, - "totalSupply()": { - "details": "See {IERC20-totalSupply}." - }, - "transfer(address,uint256)": { - "details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`." - }, - "transferFrom(address,address,uint256)": { - "details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`." - } - }, + "methods": {}, "version": 1 }, "userdoc": { @@ -779,77 +1724,64 @@ }, "sources": { "contracts/test/ERC20Mintable.sol": { - "keccak256": "0x6b711c69de04598e0cb9579dd1dbd445793963a7c2999fee9db70b6ff3548612", + "keccak256": "0x43aae73d059561cab83b67044a3602c1899f584fda312edc1640c575a6a04389", "urls": [ - "bzz-raw://6ab89c2a83f6bbfa87055a302aeeee51f7693fb6715ef3bd484e996308789071", - "dweb:/ipfs/QmXdHzQ6ymLpUaVQihD1PoCyiArioSLSfLaXMuevXmcngB" + "bzz-raw://8eac46f31959bc5111826cc457473b1b3f0257588607c98c7adbe376f9365f65", + "dweb:/ipfs/QmQjWWRgve9Cc8Fs96QPekK1gVJNwSdqEjmMaYxy8mw7ui" ], "license": "Apache-2.0" }, - "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol": { - "keccak256": "0xb62681ccbf84aef125665cfdfc0bf13b532925b1a520d6c935913560f539a31b", - "urls": [ - "bzz-raw://21dbc5b8aede7dee8f0e3bf296a58270f376f8e40d6f8becccde5b3cf34bc8df", - "dweb:/ipfs/QmfHPWrtGiMNhTtLDYtqSd1eVd35Zqgd4PW9bR3i23oJgg" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { - "keccak256": "0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0", + "lib/solmate/src/auth/Auth.sol": { + "keccak256": "0x6e05238d59cd40172c04c1974eb8f1f6cef4fdc4b6553ef7844a7302b885f76c", "urls": [ - "bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1", - "dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ" + "bzz-raw://a9743c21ca0470d9082e4cf00aea53786868c977d40775e6954463658ebb50ac", + "dweb:/ipfs/QmPFdyrLHUX1zSipTC2tcJ58EzxxPp2TTvCZx9KCgqZn2W" ], - "license": "MIT" + "license": "AGPL-3.0-only" }, - "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol": { - "keccak256": "0x0d19410453cda55960a818e02bd7c18952a5c8fe7a3036e81f0d599f34487a7b", + "lib/solmate/src/auth/authorities/MultiRolesAuthority.sol": { + "keccak256": "0x5544e61f98c0e80a8c4b9b691952122d3547ade0c0ad830ae6d5fd65f2d0dbe3", "urls": [ - "bzz-raw://4c0f62d3d5bef22b5ca00cc3903e7de6152cb68d2d22401a463f373cda54c00f", - "dweb:/ipfs/QmSfzjZux7LC7NW2f7rjCXTHeFMUCWERqDkhpCTBy7kxTe" + "bzz-raw://232d9054e5c087e0f416d995753051d352b9f24c5bd823be69a6061757fd1fef", + "dweb:/ipfs/QmZTwcv8YycBRUWX3NLrxNyKud2SCGtfZJiCasTXpjKM4B" ], - "license": "MIT" + "license": "AGPL-3.0-only" }, - "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol": { - "keccak256": "0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca", + "lib/solmate/src/tokens/ERC20.sol": { + "keccak256": "0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10", "urls": [ - "bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd", - "dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8" + "bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35", + "dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97" ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/Context.sol": { - "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", - "urls": [ - "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", - "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" - ], - "license": "MIT" + "license": "AGPL-3.0-only" } }, "version": 1 }, "ast": { "absolutePath": "contracts/test/ERC20Mintable.sol", - "id": 13231, + "id": 13186, "exportedSymbols": { - "ERC20": [ - 58767 + "Authority": [ + 61499 ], - "ERC20Burnable": [ - 58889 + "ERC20": [ + 62713 ], "ERC20Mintable": [ - 13230 + 13185 + ], + "MultiRolesAuthority": [ + 61804 ] }, "nodeType": "SourceUnit", - "src": "39:684:41", + "src": "39:1448:38", "nodes": [ { - "id": 13165, + "id": 13062, "nodeType": "PragmaDirective", - "src": "39:23:41", + "src": "39:23:38", "nodes": [], "literals": [ "solidity", @@ -858,24 +1790,24 @@ ] }, { - "id": 13167, + "id": 13064, "nodeType": "ImportDirective", - "src": "64:79:41", + "src": "64:50:38", "nodes": [], - "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol", - "file": "openzeppelin-contracts/contracts/token/ERC20/ERC20.sol", + "absolutePath": "lib/solmate/src/auth/Auth.sol", + "file": "solmate/auth/Auth.sol", "nameLocation": "-1:-1:-1", - "scope": 13231, - "sourceUnit": 58768, + "scope": 13186, + "sourceUnit": 61500, "symbolAliases": [ { "foreign": { - "id": 13166, - "name": "ERC20", + "id": 13063, + "name": "Authority", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 58767, - "src": "73:5:41", + "referencedDeclaration": 61499, + "src": "73:9:38", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -884,24 +1816,50 @@ "unitAlias": "" }, { - "id": 13169, + "id": 13066, "nodeType": "ImportDirective", - "src": "144:106:41", + "src": "115:87:38", "nodes": [], - "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol", - "file": "openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol", + "absolutePath": "lib/solmate/src/auth/authorities/MultiRolesAuthority.sol", + "file": "solmate/auth/authorities/MultiRolesAuthority.sol", "nameLocation": "-1:-1:-1", - "scope": 13231, - "sourceUnit": 58890, + "scope": 13186, + "sourceUnit": 61805, "symbolAliases": [ { "foreign": { - "id": 13168, - "name": "ERC20Burnable", + "id": 13065, + "name": "MultiRolesAuthority", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61804, + "src": "124:19:38", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 13068, + "nodeType": "ImportDirective", + "src": "203:49:38", + "nodes": [], + "absolutePath": "lib/solmate/src/tokens/ERC20.sol", + "file": "solmate/tokens/ERC20.sol", + "nameLocation": "-1:-1:-1", + "scope": 13186, + "sourceUnit": 62714, + "symbolAliases": [ + { + "foreign": { + "id": 13067, + "name": "ERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 58889, - "src": "153:13:41", + "referencedDeclaration": 62713, + "src": "212:5:38", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -910,21 +1868,93 @@ "unitAlias": "" }, { - "id": 13230, + "id": 13185, "nodeType": "ContractDefinition", - "src": "252:470:41", + "src": "254:1232:38", "nodes": [ { - "id": 13179, + "id": 13074, + "nodeType": "VariableDeclaration", + "src": "313:42:38", + "nodes": [], + "constant": false, + "mutability": "immutable", + "name": "_isCompetitionMode", + "nameLocation": "337:18:38", + "scope": 13185, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13073, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "313:4:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "id": 13109, "nodeType": "FunctionDefinition", - "src": "290:38:41", + "src": "362:322:38", "nodes": [], "body": { - "id": 13178, + "id": 13108, "nodeType": "Block", - "src": "326:2:41", + "src": "629:55:38", "nodes": [], - "statements": [] + "statements": [ + { + "expression": { + "id": 13106, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 13104, + "name": "_isCompetitionMode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13074, + "src": "639:18:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 13105, + "name": "isCompetitionMode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13084, + "src": "660:17:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "639:38:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13107, + "nodeType": "ExpressionStatement", + "src": "639:38:38" + } + ] }, "implemented": true, "kind": "constructor", @@ -932,82 +1962,605 @@ { "arguments": [ { - "hexValue": "42617365", - "id": 13174, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "310:6:41", + "id": 13087, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13076, + "src": "531:4:38", "typeDescriptions": { - "typeIdentifier": "t_stringliteral_0ae0ac2f852a779a7f563e86fd9f7493133d36d105b67aa4ae634de521805c78", - "typeString": "literal_string \"Base\"" - }, - "value": "Base" + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 13088, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13078, + "src": "537:6:38", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 13089, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13080, + "src": "545:8:38", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "id": 13090, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 13086, + "name": "ERC20", + "nameLocations": [ + "525:5:38" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 62713, + "src": "525:5:38" + }, + "nodeType": "ModifierInvocation", + "src": "525:29:38" + }, + { + "arguments": [ + { + "id": 13092, + "name": "admin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13082, + "src": "583:5:38", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "hexValue": "42415345", - "id": 13175, + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 13098, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "616:4:38", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$13185", + "typeString": "contract ERC20Mintable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20Mintable_$13185", + "typeString": "contract ERC20Mintable" + } + ], + "id": 13097, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "608:7:38", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 13096, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "608:7:38", + "typeDescriptions": {} + } + }, + "id": 13099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "608:13:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13095, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "600:7:38", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 13094, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "600:7:38", + "typeDescriptions": {} + } + }, + "id": 13100, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "600:22:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13093, + "name": "Authority", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61499, + "src": "590:9:38", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Authority_$61499_$", + "typeString": "type(contract Authority)" + } + }, + "id": 13101, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "string", + "isPure": false, + "kind": "typeConversion", "lValueRequested": false, - "nodeType": "Literal", - "src": "318:6:41", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "590:33:38", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_stringliteral_a96b772a8c17d9c8cf2c92a171b3dcdcf9453b286b3b47d988d07a79acc72567", - "typeString": "literal_string \"BASE\"" - }, - "value": "BASE" + "typeIdentifier": "t_contract$_Authority_$61499", + "typeString": "contract Authority" + } } ], - "id": 13176, + "id": 13102, "kind": "baseConstructorSpecifier", "modifierName": { - "id": 13173, - "name": "ERC20", + "id": 13091, + "name": "MultiRolesAuthority", "nameLocations": [ - "304:5:41" + "563:19:38" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 58767, - "src": "304:5:41" + "referencedDeclaration": 61804, + "src": "563:19:38" }, "nodeType": "ModifierInvocation", - "src": "304:21:41" + "src": "563:61:38" } ], "name": "", "nameLocation": "-1:-1:-1", "parameters": { - "id": 13172, + "id": 13085, "nodeType": "ParameterList", - "parameters": [], - "src": "301:2:41" + "parameters": [ + { + "constant": false, + "id": 13076, + "mutability": "mutable", + "name": "name", + "nameLocation": "397:4:38", + "nodeType": "VariableDeclaration", + "scope": 13109, + "src": "383:18:38", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 13075, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "383:6:38", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13078, + "mutability": "mutable", + "name": "symbol", + "nameLocation": "425:6:38", + "nodeType": "VariableDeclaration", + "scope": 13109, + "src": "411:20:38", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 13077, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "411:6:38", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13080, + "mutability": "mutable", + "name": "decimals", + "nameLocation": "447:8:38", + "nodeType": "VariableDeclaration", + "scope": 13109, + "src": "441:14:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 13079, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "441:5:38", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13082, + "mutability": "mutable", + "name": "admin", + "nameLocation": "473:5:38", + "nodeType": "VariableDeclaration", + "scope": 13109, + "src": "465:13:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13081, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "465:7:38", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13084, + "mutability": "mutable", + "name": "isCompetitionMode", + "nameLocation": "493:17:38", + "nodeType": "VariableDeclaration", + "scope": 13109, + "src": "488:22:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13083, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "488:4:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "373:143:38" }, "returnParameters": { - "id": 13177, + "id": 13103, "nodeType": "ParameterList", "parameters": [], - "src": "326:0:41" + "src": "629:0:38" }, - "scope": 13230, + "scope": 13185, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 13191, + "id": 13126, + "nodeType": "ModifierDefinition", + "src": "690:238:38", + "nodes": [], + "body": { + "id": 13125, + "nodeType": "Block", + "src": "731:197:38", + "nodes": [], + "statements": [ + { + "condition": { + "id": 13111, + "name": "_isCompetitionMode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13074, + "src": "745:18:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13123, + "nodeType": "IfStatement", + "src": "741:170:38", + "trueBody": { + "id": 13122, + "nodeType": "Block", + "src": "765:146:38", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 13114, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "817:3:38", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 13115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "821:6:38", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "817:10:38", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 13116, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "829:3:38", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 13117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "833:3:38", + "memberName": "sig", + "nodeType": "MemberAccess", + "src": "829:7:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 13113, + "name": "isAuthorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61431, + "src": "804:12:38", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (address,bytes4) view returns (bool)" + } + }, + "id": 13118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "804:33:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "45524332304d696e7461626c653a206e6f7420617574686f72697a6564", + "id": 13119, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "855:31:38", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_42a18f8e269f112c172999b74d139a2658536f1cd904b7baf70214b5f3a50457", + "typeString": "literal_string \"ERC20Mintable: not authorized\"" + }, + "value": "ERC20Mintable: not authorized" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_42a18f8e269f112c172999b74d139a2658536f1cd904b7baf70214b5f3a50457", + "typeString": "literal_string \"ERC20Mintable: not authorized\"" + } + ], + "id": 13112, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "779:7:38", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 13120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "779:121:38", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13121, + "nodeType": "ExpressionStatement", + "src": "779:121:38" + } + ] + } + }, + { + "id": 13124, + "nodeType": "PlaceholderStatement", + "src": "920:1:38" + } + ] + }, + "name": "requiresAuthDuringCompetition", + "nameLocation": "699:29:38", + "parameters": { + "id": 13110, + "nodeType": "ParameterList", + "parameters": [], + "src": "728:2:38" + }, + "virtual": false, + "visibility": "internal" + }, + { + "id": 13140, "nodeType": "FunctionDefinition", - "src": "334:81:41", + "src": "934:111:38", "nodes": [], "body": { - "id": 13190, + "id": 13139, "nodeType": "Block", - "src": "373:42:41", + "src": "1003:42:38", "nodes": [], "statements": [ { @@ -1015,38 +2568,38 @@ "arguments": [ { "expression": { - "id": 13185, + "id": 13134, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, - "src": "389:3:41", + "src": "1019:3:38", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 13186, + "id": 13135, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "393:6:41", + "memberLocation": "1023:6:38", "memberName": "sender", "nodeType": "MemberAccess", - "src": "389:10:41", + "src": "1019:10:38", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 13187, + "id": 13136, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13181, - "src": "401:6:41", + "referencedDeclaration": 13128, + "src": "1031:6:38", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1064,18 +2617,18 @@ "typeString": "uint256" } ], - "id": 13184, + "id": 13133, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 58584, - "src": "383:5:41", + "referencedDeclaration": 62684, + "src": "1013:5:38", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 13188, + "id": 13137, "isConstant": false, "isLValue": false, "isPure": false, @@ -1084,38 +2637,55 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "383:25:41", + "src": "1013:25:38", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 13189, + "id": 13138, "nodeType": "ExpressionStatement", - "src": "383:25:41" + "src": "1013:25:38" } ] }, "functionSelector": "a0712d68", "implemented": true, "kind": "function", - "modifiers": [], + "modifiers": [ + { + "id": 13131, + "kind": "modifierInvocation", + "modifierName": { + "id": 13130, + "name": "requiresAuthDuringCompetition", + "nameLocations": [ + "973:29:38" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13126, + "src": "973:29:38" + }, + "nodeType": "ModifierInvocation", + "src": "973:29:38" + } + ], "name": "mint", - "nameLocation": "343:4:41", + "nameLocation": "943:4:38", "parameters": { - "id": 13182, + "id": 13129, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 13181, + "id": 13128, "mutability": "mutable", "name": "amount", - "nameLocation": "356:6:41", + "nameLocation": "956:6:38", "nodeType": "VariableDeclaration", - "scope": 13191, - "src": "348:14:41", + "scope": 13140, + "src": "948:14:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1123,10 +2693,10 @@ "typeString": "uint256" }, "typeName": { - "id": 13180, + "id": 13127, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "348:7:41", + "src": "948:7:38", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1135,52 +2705,52 @@ "visibility": "internal" } ], - "src": "347:16:41" + "src": "947:16:38" }, "returnParameters": { - "id": 13183, + "id": 13132, "nodeType": "ParameterList", "parameters": [], - "src": "373:0:41" + "src": "1003:0:38" }, - "scope": 13230, + "scope": 13185, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 13204, + "id": 13155, "nodeType": "FunctionDefinition", - "src": "421:103:41", + "src": "1051:155:38", "nodes": [], "body": { - "id": 13203, + "id": 13154, "nodeType": "Block", - "src": "481:43:41", + "src": "1163:43:38", "nodes": [], "statements": [ { "expression": { "arguments": [ { - "id": 13199, + "id": 13150, "name": "destination", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13193, - "src": "497:11:41", + "referencedDeclaration": 13142, + "src": "1179:11:38", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 13200, + "id": 13151, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13195, - "src": "510:6:41", + "referencedDeclaration": 13144, + "src": "1192:6:38", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1198,18 +2768,18 @@ "typeString": "uint256" } ], - "id": 13198, + "id": 13149, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 58584, - "src": "491:5:41", + "referencedDeclaration": 62684, + "src": "1173:5:38", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 13201, + "id": 13152, "isConstant": false, "isLValue": false, "isPure": false, @@ -1218,38 +2788,55 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "491:26:41", + "src": "1173:26:38", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 13202, + "id": 13153, "nodeType": "ExpressionStatement", - "src": "491:26:41" + "src": "1173:26:38" } ] }, "functionSelector": "40c10f19", "implemented": true, "kind": "function", - "modifiers": [], + "modifiers": [ + { + "id": 13147, + "kind": "modifierInvocation", + "modifierName": { + "id": 13146, + "name": "requiresAuthDuringCompetition", + "nameLocations": [ + "1133:29:38" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13126, + "src": "1133:29:38" + }, + "nodeType": "ModifierInvocation", + "src": "1133:29:38" + } + ], "name": "mint", - "nameLocation": "430:4:41", + "nameLocation": "1060:4:38", "parameters": { - "id": 13196, + "id": 13145, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 13193, + "id": 13142, "mutability": "mutable", "name": "destination", - "nameLocation": "443:11:41", + "nameLocation": "1082:11:38", "nodeType": "VariableDeclaration", - "scope": 13204, - "src": "435:19:41", + "scope": 13155, + "src": "1074:19:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1257,10 +2844,10 @@ "typeString": "address" }, "typeName": { - "id": 13192, + "id": 13141, "name": "address", "nodeType": "ElementaryTypeName", - "src": "435:7:41", + "src": "1074:7:38", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1271,13 +2858,13 @@ }, { "constant": false, - "id": 13195, + "id": 13144, "mutability": "mutable", "name": "amount", - "nameLocation": "464:6:41", + "nameLocation": "1111:6:38", "nodeType": "VariableDeclaration", - "scope": 13204, - "src": "456:14:41", + "scope": 13155, + "src": "1103:14:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1285,10 +2872,10 @@ "typeString": "uint256" }, "typeName": { - "id": 13194, + "id": 13143, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "456:7:41", + "src": "1103:7:38", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1297,28 +2884,28 @@ "visibility": "internal" } ], - "src": "434:37:41" + "src": "1064:59:38" }, "returnParameters": { - "id": 13197, + "id": 13148, "nodeType": "ParameterList", "parameters": [], - "src": "481:0:41" + "src": "1163:0:38" }, - "scope": 13230, + "scope": 13185, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 13216, + "id": 13169, "nodeType": "FunctionDefinition", - "src": "530:81:41", + "src": "1212:111:38", "nodes": [], "body": { - "id": 13215, + "id": 13168, "nodeType": "Block", - "src": "569:42:41", + "src": "1281:42:38", "nodes": [], "statements": [ { @@ -1326,38 +2913,38 @@ "arguments": [ { "expression": { - "id": 13210, + "id": 13163, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, - "src": "585:3:41", + "src": "1297:3:38", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 13211, + "id": 13164, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "589:6:41", + "memberLocation": "1301:6:38", "memberName": "sender", "nodeType": "MemberAccess", - "src": "585:10:41", + "src": "1297:10:38", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 13212, + "id": 13165, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13206, - "src": "597:6:41", + "referencedDeclaration": 13157, + "src": "1309:6:38", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1375,18 +2962,18 @@ "typeString": "uint256" } ], - "id": 13209, + "id": 13162, "name": "_burn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 58656, - "src": "579:5:41", + "referencedDeclaration": 62712, + "src": "1291:5:38", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 13213, + "id": 13166, "isConstant": false, "isLValue": false, "isPure": false, @@ -1395,38 +2982,55 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "579:25:41", + "src": "1291:25:38", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 13214, + "id": 13167, "nodeType": "ExpressionStatement", - "src": "579:25:41" + "src": "1291:25:38" } ] }, "functionSelector": "42966c68", "implemented": true, "kind": "function", - "modifiers": [], + "modifiers": [ + { + "id": 13160, + "kind": "modifierInvocation", + "modifierName": { + "id": 13159, + "name": "requiresAuthDuringCompetition", + "nameLocations": [ + "1251:29:38" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13126, + "src": "1251:29:38" + }, + "nodeType": "ModifierInvocation", + "src": "1251:29:38" + } + ], "name": "burn", - "nameLocation": "539:4:41", + "nameLocation": "1221:4:38", "parameters": { - "id": 13207, + "id": 13158, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 13206, + "id": 13157, "mutability": "mutable", "name": "amount", - "nameLocation": "552:6:41", + "nameLocation": "1234:6:38", "nodeType": "VariableDeclaration", - "scope": 13216, - "src": "544:14:41", + "scope": 13169, + "src": "1226:14:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1434,10 +3038,10 @@ "typeString": "uint256" }, "typeName": { - "id": 13205, + "id": 13156, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "544:7:41", + "src": "1226:7:38", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1446,52 +3050,52 @@ "visibility": "internal" } ], - "src": "543:16:41" + "src": "1225:16:38" }, "returnParameters": { - "id": 13208, + "id": 13161, "nodeType": "ParameterList", "parameters": [], - "src": "569:0:41" + "src": "1281:0:38" }, - "scope": 13230, + "scope": 13185, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 13229, + "id": 13184, "nodeType": "FunctionDefinition", - "src": "617:103:41", + "src": "1329:155:38", "nodes": [], "body": { - "id": 13228, + "id": 13183, "nodeType": "Block", - "src": "677:43:41", + "src": "1441:43:38", "nodes": [], "statements": [ { "expression": { "arguments": [ { - "id": 13224, + "id": 13179, "name": "destination", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13218, - "src": "693:11:41", + "referencedDeclaration": 13171, + "src": "1457:11:38", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 13225, + "id": 13180, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13220, - "src": "706:6:41", + "referencedDeclaration": 13173, + "src": "1470:6:38", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1509,18 +3113,18 @@ "typeString": "uint256" } ], - "id": 13223, + "id": 13178, "name": "_burn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 58656, - "src": "687:5:41", + "referencedDeclaration": 62712, + "src": "1451:5:38", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 13226, + "id": 13181, "isConstant": false, "isLValue": false, "isPure": false, @@ -1529,38 +3133,55 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "687:26:41", + "src": "1451:26:38", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 13227, + "id": 13182, "nodeType": "ExpressionStatement", - "src": "687:26:41" + "src": "1451:26:38" } ] }, "functionSelector": "9dc29fac", "implemented": true, "kind": "function", - "modifiers": [], + "modifiers": [ + { + "id": 13176, + "kind": "modifierInvocation", + "modifierName": { + "id": 13175, + "name": "requiresAuthDuringCompetition", + "nameLocations": [ + "1411:29:38" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13126, + "src": "1411:29:38" + }, + "nodeType": "ModifierInvocation", + "src": "1411:29:38" + } + ], "name": "burn", - "nameLocation": "626:4:41", + "nameLocation": "1338:4:38", "parameters": { - "id": 13221, + "id": 13174, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 13218, + "id": 13171, "mutability": "mutable", "name": "destination", - "nameLocation": "639:11:41", + "nameLocation": "1360:11:38", "nodeType": "VariableDeclaration", - "scope": 13229, - "src": "631:19:41", + "scope": 13184, + "src": "1352:19:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1568,10 +3189,10 @@ "typeString": "address" }, "typeName": { - "id": 13217, + "id": 13170, "name": "address", "nodeType": "ElementaryTypeName", - "src": "631:7:41", + "src": "1352:7:38", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1582,13 +3203,13 @@ }, { "constant": false, - "id": 13220, + "id": 13173, "mutability": "mutable", "name": "amount", - "nameLocation": "660:6:41", + "nameLocation": "1389:6:38", "nodeType": "VariableDeclaration", - "scope": 13229, - "src": "652:14:41", + "scope": 13184, + "src": "1381:14:38", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1596,10 +3217,10 @@ "typeString": "uint256" }, "typeName": { - "id": 13219, + "id": 13172, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "652:7:41", + "src": "1381:7:38", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1608,15 +3229,15 @@ "visibility": "internal" } ], - "src": "630:37:41" + "src": "1342:59:38" }, "returnParameters": { - "id": 13222, + "id": 13177, "nodeType": "ParameterList", "parameters": [], - "src": "677:0:41" + "src": "1441:0:38" }, - "scope": 13230, + "scope": 13185, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" @@ -1626,18 +3247,33 @@ "baseContracts": [ { "baseName": { - "id": 13170, + "id": 13069, "name": "ERC20", "nameLocations": [ - "278:5:41" + "280:5:38" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 62713, + "src": "280:5:38" + }, + "id": 13070, + "nodeType": "InheritanceSpecifier", + "src": "280:5:38" + }, + { + "baseName": { + "id": 13071, + "name": "MultiRolesAuthority", + "nameLocations": [ + "287:19:38" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 58767, - "src": "278:5:41" + "referencedDeclaration": 61804, + "src": "287:19:38" }, - "id": 13171, + "id": 13072, "nodeType": "InheritanceSpecifier", - "src": "278:5:41" + "src": "287:19:38" } ], "canonicalName": "ERC20Mintable", @@ -1645,19 +3281,19 @@ "contractKind": "contract", "fullyImplemented": true, "linearizedBaseContracts": [ - 13230, - 58767, - 58951, - 58845, - 59880 + 13185, + 61804, + 61499, + 61486, + 62713 ], "name": "ERC20Mintable", - "nameLocation": "261:13:41", - "scope": 13231, + "nameLocation": "263:13:38", + "scope": 13186, "usedErrors": [] } ], "license": "Apache-2.0" }, - "id": 41 + "id": 38 } \ No newline at end of file diff --git a/packages/hyperdrive/src/abis/ERC4626HyperdriveDeployer.sol/ERC4626HyperdriveDeployer.json b/packages/hyperdrive/src/abis/ERC4626HyperdriveDeployer.sol/ERC4626HyperdriveDeployer.json index d59fca1c50..115bfc167f 100644 --- a/packages/hyperdrive/src/abis/ERC4626HyperdriveDeployer.sol/ERC4626HyperdriveDeployer.json +++ b/packages/hyperdrive/src/abis/ERC4626HyperdriveDeployer.sol/ERC4626HyperdriveDeployer.json @@ -131,16 +131,16 @@ } ], "bytecode": { - "object": "0x60a060405234801561001057600080fd5b506040516170b53803806170b583398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161702b61008a60003960006073015261702b6000f3fe60806040523480156200001157600080fd5b50600436106200002e5760003560e01c8063e3420f4f1462000033575b600080fd5b6200004a620000443660046200024e565b62000066565b6040516001600160a01b03909116815260200160405180910390f35b60006060829050868686867f000000000000000000000000000000000000000000000000000000000000000085604051620000a190620000db565b620000b296959493929190620003ce565b604051809103906000f080158015620000cf573d6000803e3d6000fd5b50979650505050505050565b616b0980620004ed83390190565b634e487b7160e01b600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715620001265762000126620000e9565b60405290565b80356001600160a01b03811681146200014457600080fd5b919050565b6000606082840312156200015c57600080fd5b6040516060810181811067ffffffffffffffff82111715620001825762000182620000e9565b80604052508091508235815260208301356020820152604083013560408201525092915050565b600082601f830112620001bb57600080fd5b8135602067ffffffffffffffff80831115620001db57620001db620000e9565b8260051b604051601f19603f83011681018181108482111715620002035762000203620000e9565b6040529384528581018301938381019250878511156200022257600080fd5b83870191505b84821015620002435781358352918301919083019062000228565b979650505050505050565b60008060008060008587036102408112156200026957600080fd5b6101c0808212156200027a57600080fd5b62000284620000ff565b915062000291886200012c565b82526020880135602083015260408801356040830152606088013560608301526080880135608083015260a088013560a083015260c088013560c0830152620002dd60e089016200012c565b60e0830152610100620002f2818a016200012c565b90830152610120620003078a8a830162000149565b81840152506101808801356101408301526101a0880135610160830152819650620003348189016200012c565b955050506101e086013592506200034f61020087016200012c565b915061022086013567ffffffffffffffff8111156200036d57600080fd5b6200037b88828901620001a9565b9150509295509295909350565b600081518084526020808501945080840160005b83811015620003c35781516001600160a01b0316875295820195908201906001016200039c565b509495945050505050565b86516001600160a01b0316815260006102606020890151602084015260408901516040840152606089015160608401526080890151608084015260a089015160a084015260c089015160c084015260e08901516200043760e08501826001600160a01b03169052565b50610100898101516001600160a01b038116858301525050610120898101518051858301526020810151610140860152604081015161016086015250506101408901516101808401526101608901516101a08401526001600160a01b0388166101c0840152866101e0840152620004ba6102008401876001600160a01b03169052565b6001600160a01b03851661022084015280610240840152620004df8184018562000388565b999850505050505050505056fe6102a060405260016000553480156200001757600080fd5b5060405162006b0938038062006b098339810160408190526200003a916200076f565b6001600160a01b03808616608052831660a05260c084905260408051808201825260018152603160f81b6020918201529051879187918791879185918591859185918591859185918591620000f6917f2aef22f9d7df5f9d21c56d14029233f3fdaa91917727e1eb68e504d27072d6cd917fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6914691309101938452602084019290925260408301526001600160a01b0316606082015260800190565b60408051601f19818403018152918152815160209092019190912060e05284516001600160a01b0316610100528401516103e8111592506200014e915050576040516349db44f560e01b815260040160405180910390fd5b60408101516101a05260608101516101c05260a08101516000036200018657604051635428734d60e01b815260040160405180910390fd5b60a081018051610120525160808201511080620001b757508060a001518160800151620001b49190620008bb565b15155b15620001d65760405163253fffcf60e11b815260040160405180910390fd5b60808101516101405260c08101516101605260208101516101805260e0810151601180546001600160a01b0319166001600160a01b03928316179055610100820151166102405261012081015151670de0b6b3a764000010806200024a5750670de0b6b3a764000081610120015160200151115b80620002665750670de0b6b3a764000081610120015160400151115b1562000285576040516322f72cc360e11b815260040160405180910390fd5b61012081018051516101e0528051602001516102005251604001516102205261016001516102605260005b84610140015181101562000330576040805180820190915263ffffffff4281168252600060208301818152601280546001818101835591909352935190516001600160e01b0316640100000000029216919091177fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec34449091015501620002b0565b5050506001600160a01b0388166102805250620003539450506200057692505050565b86602001511462000377576040516355f2a42f60e01b815260040160405180910390fd5b816001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003dc9190620008de565b6001600160a01b031686600001516001600160a01b0316146200041257604051630722152560e11b815260040160405180910390fd5b85516102805160405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562000469573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200048f919062000905565b620004ad576040516340b27c2160e11b815260040160405180910390fd5b60005b815181101562000569576000828281518110620004d157620004d162000929565b60200260200101519050610280516001600160a01b0316816001600160a01b03161480620005135750610100516001600160a01b0316816001600160a01b0316145b15620005325760405163350b944160e11b815260040160405180910390fd5b6001600160a01b03166000908152601460205260409020805460ff191660011790558062000560816200093f565b915050620004b0565b5050505050505062000981565b610280516040516303d1689d60e11b8152670de0b6b3a764000060048201526000916001600160a01b0316906307a2d13a90602401602060405180830381865afa158015620005c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005ef919062000967565b905090565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b0381118282101715620006305762000630620005f4565b60405290565b6001600160a01b03811681146200064c57600080fd5b50565b80516200065c8162000636565b919050565b6000606082840312156200067457600080fd5b604051606081016001600160401b0381118282101715620006995762000699620005f4565b80604052508091508251815260208301516020820152604083015160408201525092915050565b600082601f830112620006d257600080fd5b815160206001600160401b0380831115620006f157620006f1620005f4565b8260051b604051601f19603f83011681018181108482111715620007195762000719620005f4565b6040529384528581018301938381019250878511156200073857600080fd5b83870191505b8482101562000764578151620007548162000636565b835291830191908301906200073e565b979650505050505050565b6000806000806000808688036102608112156200078b57600080fd5b6101c0808212156200079c57600080fd5b620007a66200060a565b9150620007b3896200064f565b82526020890151602083015260408901516040830152606089015160608301526080890151608083015260a089015160a083015260c089015160c0830152620007ff60e08a016200064f565b60e083015261010062000814818b016200064f565b90830152610120620008298b8b830162000661565b81840152506101808901516101408301526101a089015161016083015281975062000856818a016200064f565b965050506101e087015193506200087161020088016200064f565b92506200088261022088016200064f565b6102408801519092506001600160401b03811115620008a057600080fd5b620008ae89828a01620006c0565b9150509295509295509295565b600082620008d957634e487b7160e01b600052601260045260246000fd5b500690565b600060208284031215620008f157600080fd5b8151620008fe8162000636565b9392505050565b6000602082840312156200091857600080fd5b81518015158114620008fe57600080fd5b634e487b7160e01b600052603260045260246000fd5b6000600182016200096057634e487b7160e01b600052601160045260246000fd5b5060010190565b6000602082840312156200097a57600080fd5b5051919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e0516102005161022051610240516102605161028051615eff62000c0a60003960008181612055015281816120f40152818161217601528181612acc01528181612b4d01528181612b8d0152612c20015260006144e60152600081816105590152818161066901528181610cc90152610d2f0152600081816144020152818161467601528181614ad801528181614b5101528181614d280152614d990152600081816130d10152818161366c015281816143d601528181614b250152614d6d01526000818161463201528181614aac0152614cfc01526000818161074101528181610fa801528181611521015281816117c9015281816119af0152611d96015260008181610a9201528181610add01528181610bf101528181613ad701528181613e0501528181613e54015281816142510152818161474201528181614857015261489301526000818161081a01528181610b6001528181611a10015281816124460152818161248e01528181612faf015281816135ba01528181613ab10152613fc8015260008181610ba301528181611a5201528181612424015281816124af01528181612f8d0152818161359801528181613afd0152613fa601526000818161089c01528181610b82015281816110b6015281816115ac01528181611a3101528181611e53015281816122580152818161237d01528181613057015281816132aa01528181614060015281816149f00152614e8b015260008181611c9701528181611d4001526121bb01526000612011015260008181610386015261133e01526000612ea601526000612e69015260006101570152615eff6000f3fe6080604052600436106101405760003560e01c80636f8c3a5b116100b6578063ab033ea91161006f578063ab033ea91461049b578063c23632a7146104bb578063c326a903146104db578063e44808bc146104ee578063ed64bab21461050e578063fa3fcea71461052e57610140565b80636f8c3a5b146103e85780637180c8ca146104085780639032c726146104285780639cd241af14610448578063a179403b14610468578063a22cb4651461047b57610140565b80632002b333116101085780632002b333146102ff5780632787d5951461032057806330adf81f146103405780633644e515146103745780634536ee2f146103a85780634ed2d6ac146103c857610140565b806301681a621461025057806302329a291461027257806306dae82a1461029257806317fad7fc146102bf5780631c0f12b6146102df575b34801561014c57600080fd5b5060003660606000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316858560405161018f929190615742565b600060405180830381855af49150503d80600081146101ca576040519150601f19603f3d011682016040523d82523d6000602084013e6101cf565b606091505b509150915081156101f357604051638bb0a34b60e01b815260040160405180910390fd5b60006101fe82615752565b90506001600160e01b03198116636e64089360e11b1461022057815160208301fd5b815160031981016004840190815292610241918101602001906024016157c3565b80519650602001945050505050f35b34801561025c57600080fd5b5061027061026b36600461587d565b61054e565b005b34801561027e57600080fd5b5061027061028d3660046158a8565b610692565b6102a56102a03660046158c5565b6106db565b604080519283526020830191909152015b60405180910390f35b3480156102cb57600080fd5b506102706102da366004615960565b610960565b3480156102eb57600080fd5b506102706102fa3660046159f5565b610a14565b61031261030d366004615a3d565b610a27565b6040519081526020016102b6565b34801561032c57600080fd5b5061031261033b3660046158a8565b610c7c565b34801561034c57600080fd5b506103127f65619c8664d6db8aae8c236ad19598696159942a4245b23b45565cc18e97367381565b34801561038057600080fd5b506103127f000000000000000000000000000000000000000000000000000000000000000081565b3480156103b457600080fd5b506102a56103c3366004615a3d565b610d60565b3480156103d457600080fd5b506102706103e3366004615a87565b610f30565b3480156103f457600080fd5b506103126104033660046158c5565b610f7e565b34801561041457600080fd5b50610270610423366004615ac6565b6111ec565b34801561043457600080fd5b50610270610443366004615aff565b611264565b34801561045457600080fd5b50610270610463366004615b7f565b6114b3565b6102a56104763660046158c5565b6114c4565b34801561048757600080fd5b50610270610496366004615ac6565b6116bd565b3480156104a757600080fd5b506102706104b636600461587d565b611729565b3480156104c757600080fd5b506102a56104d6366004615a3d565b61179d565b6103126104e93660046158c5565b611954565b3480156104fa57600080fd5b50610270610509366004615bb7565b611c16565b34801561051a57600080fd5b50610270610529366004615c08565b611c66565b34801561053a57600080fd5b506103126105493660046158c5565b611d6c565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906105975750336000908152600f602052604090205460ff16155b156105b4576040516282b42960e81b815260040160405180910390fd5b6001600160a01b03811660009081526014602052604090205460ff166105ed5760405163350b944160e11b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190615c21565b905061068e6001600160a01b0383167f000000000000000000000000000000000000000000000000000000000000000083611f77565b5050565b336000908152600f602052604090205460ff166106c1576040516282b42960e81b815260040160405180910390fd5b600c80549115156101000261ff0019909216919091179055565b6000806000546001146107095760405162461bcd60e51b815260040161070090615c3a565b60405180910390fd5b6002600055600c54610100900460ff1615610737576040516313d0ff5960e31b815260040160405180910390fd5b61073f611fda565b7f00000000000000000000000000000000000000000000000000000000000000008710156107805760405163211ddda360e11b815260040160405180910390fd5b60008061078d8986611ffb565b91509150868110156107b2576040516342af972b60e01b815260040160405180910390fd5b60006107bc6121b4565b90506107c881836121ef565b5060008060006107d886866123fd565b600854919a50929550909350909150610802908390600160801b90046001600160801b0316615c74565b61083f8461080e61252e565b6108189190615c87565b7f00000000000000000000000000000000000000000000000000000000000000009061254f565b111561085e5760405163512095c760e01b815260040160405180910390fd5b868c111561087f5760405163c972651760e01b815260040160405180910390fd5b80601060008282546108919190615c87565b909155506108c190507f000000000000000000000000000000000000000000000000000000000000000085615c87565b97506108d183888488888d61256b565b60006108de60018a612765565b90506108eb818c8a61279a565b60008e9050818c6001600160a01b03167f7b7d51ee23746cf6ef2078de2a5b53073226b516a1c892a1e882c581026bf4b38c848d60405161093f939291909283526020830191909152604082015260600190565b60405180910390a35050505050505050600160005590969095509350505050565b6001600160a01b038616158061097d57506001600160a01b038516155b1561099b5760405163f0dd15fd60e01b815260040160405180910390fd5b8281146109bb5760405163174861a760e31b815260040160405180910390fd5b60005b83811015610a0b57610a038585838181106109db576109db615c9a565b9050602002013588888686868181106109f6576109f6615c9a565b9050602002013533612843565b6001016109be565b50505050505050565b610a218484848433612843565b50505050565b60008054600114610a4a5760405162461bcd60e51b815260040161070090615c3a565b6002600055610a57611fda565b600c5460ff1615610a7b57604051637983c05160e01b815260040160405180910390fd5b600080610a888785611ffb565b9092509050610ab87f00000000000000000000000000000000000000000000000000000000000000006002615cb0565b821015610ad857604051632afb507160e21b815260040160405180910390fd5b610b037f00000000000000000000000000000000000000000000000000000000000000006002615cb0565b610b0d9083615c74565b9250610b20610b1a6121b4565b826121ef565b50600c805460ff19166001179055610b3782612a04565b600880546001600160801b0319166001600160801b0392909216919091179055610bcc610bc7837f0000000000000000000000000000000000000000000000000000000000000000897f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000612a2e565b612a04565b600880546001600160801b03928316600160801b029216919091179055610c156000807f000000000000000000000000000000000000000000000000000000000000000061279a565b610c216000868561279a565b60408051848152602081018990529081018790526001600160a01b038616907f60c26087830ee0ee6d86bdb3a10e19f3fd49af366c77421d7fe4596811d6274e9060600160405180910390a250506001600055949350505050565b60008054600114610c9f5760405162461bcd60e51b815260040161070090615c3a565b60026000908155338152600f602052604090205460ff16158015610cec5750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b8015610d0357506011546001600160a01b03163314155b15610d20576040516282b42960e81b815260040160405180910390fd5b601080546000909155610d54817f000000000000000000000000000000000000000000000000000000000000000085612a98565b60016000559392505050565b600080600054600114610d855760405162461bcd60e51b815260040161070090615c3a565b60026000908155610d94612c00565b9050610da1610b1a6121b4565b50610dab81612c93565b600d548792506001600160801b031680831115610dcf57806001600160801b031692505b82600003610de557600080935093505050610f20565b610df4600360f81b3385612d6d565b600d546001600160801b03600160801b909104811690600090610e1c90869084908616612e0d565b9050610e2785612a04565b610e319084615cc7565b600d80546001600160801b0319166001600160801b0392909216919091179055610e5a81612a04565b600d8054601090610e7c908490600160801b90046001600160801b0316615cc7565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550610eab818989612a98565b955085610eb88a8761254f565b1115610ed75760405163c972651760e01b815260040160405180910390fd5b60408051868152602081018890526001600160a01b038a16917f07cd0949bbc0d60ad35053a0459db413c148f758b7781aaf6b258018d18ad0ac910160405180910390a2505050505b6001600055909590945092505050565b83610f3a81612e2b565b6001600160a01b0316336001600160a01b031614610f6b57604051632aab8bd360e01b815260040160405180910390fd5b610f7785858585612ee8565b5050505050565b60008054600114610fa15760405162461bcd60e51b815260040161070090615c3a565b60026000557f0000000000000000000000000000000000000000000000000000000000000000851015610fe75760405163211ddda360e11b815260040160405180910390fd5b6000610ff1612c00565b9050610ffd87826121ef565b5061101361100c600289612765565b3388612d6d565b6000806000806000806110278c888f612f55565b600854959b50939950919750955093509150611054908790600160801b90046001600160801b0316615c74565b6110608461080e61252e565b111561107f5760405163512095c760e01b815260040160405180910390fd5b8b8d884282111561114157836010600082825461109c9190615c87565b909155506110af9050838a898886613129565b60006110db7f000000000000000000000000000000000000000000000000000000000000000084615c74565b6000818152600e6020526040812054919250600160801b909104600f0b9061110e9086908a908e908d90899089906132a3565b6000828152600e602052604090205461113590600f83810b91600160801b9004900b61344b565b61113e8c612c93565b50505b600061114e898f8f612a98565b90508e8110156111715760405163c972651760e01b815260040160405180910390fd5b61117c600284612765565b8e6001600160a01b03167f39d1403e56c69205ef368007a55ee1304b0f388631dca237a1710d04e3e8950f8584886040516111ca939291909283526020830191909152604082015260600190565b60405180910390a39a5050505050505050505050600160005595945050505050565b6011546001600160a01b03163314611216576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0382166000818152600f6020526040808220805460ff1916851515179055517fa4336c0cb1e245b95ad204faed7e940d6dc999684fd8b5e1ff597a0c4efca8ab9190a25050565b834211156112855760405163f87d927160e01b815260040160405180910390fd5b6001600160a01b0387166112ac5760405163f0dd15fd60e01b815260040160405180910390fd5b6001600160a01b0387811660008181526007602090815260408083205481517f65619c8664d6db8aae8c236ad19598696159942a4245b23b45565cc18e9736738185015280830195909552948b166060850152891515608085015260a084019490945260c08084018990528451808503909101815260e08401909452835193019290922061190160f01b6101008301527f00000000000000000000000000000000000000000000000000000000000000006101028301526101228201526101420160408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156113d8573d6000803e3d6000fd5b505050602060405103519050886001600160a01b0316816001600160a01b03161461141657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0389166000908152600760205260408120805490919061143c90615cee565b909155506001600160a01b038981166000818152600360209081526040808320948d1680845294825291829020805460ff19168c151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050505050505050565b6114bf83838333612ee8565b505050565b6000806000546001146114e95760405162461bcd60e51b815260040161070090615c3a565b6002600055600c54610100900460ff1615611517576040516313d0ff5960e31b815260040160405180910390fd5b61151f611fda565b7f00000000000000000000000000000000000000000000000000000000000000008710156115605760405163211ddda360e11b815260040160405180910390fd5b600061156a612c00565b90508581101561158d576040516342af972b60e01b815260040160405180910390fd5b60006115976121b4565b905060006115a582846121ef565b90506115d17f000000000000000000000000000000000000000000000000000000000000000083615c87565b94506000806115e18c8685613572565b60108054939950919450925082916000906115fd908490615c87565b909155505050848a10156116245760405163c972651760e01b815260040160405180910390fd5b61162e8588611ffb565b505061163c8b82868961369d565b6000611649600288612765565b9050611656818a8e61279a565b60408051888152602081018890529081018d90528c9082906001600160a01b038c16907f851bac68873b7adb346bcf4bff36324c6f322b58f9f0f50c1d3a8568242ca66b9060600160405180910390a3505050505050600160005590969095509350505050565b3360008181526003602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6011546001600160a01b03163314611753576040516282b42960e81b815260040160405180910390fd5b601180546001600160a01b0319166001600160a01b0383169081179091556040517f9d3e522e1e47a2f6009739342b9cc7b252a1888154e843ab55ee1c81745795ab90600090a250565b6000806000546001146117c25760405162461bcd60e51b815260040161070090615c3a565b60026000557f00000000000000000000000000000000000000000000000000000000000000008610156118085760405163211ddda360e11b815260040160405180910390fd5b6000611812612c00565b905061181f610b1a6121b4565b5061182981612c93565b6002602052600080516020615eaa83398151915254600d54600360f81b60009081527f3ccfbaf375b4885450e3887dab0704e32e03acfeaf0442976372f6750e322c1f549091611884916001600160801b0390911690615c74565b905060006118928284615c87565b90506118a06000338c612d6d565b60006118af8b868487876138db565b965090506118c2600360f81b8a8861279a565b6118cd818a8a612a98565b9650868a11156118f05760405163c972651760e01b815260040160405180910390fd5b604080518c8152602081018990529081018790528b906001600160a01b038b16907f59c3a0b60c6ab7deb62e1440c9e72441db6db7dfe514dba8cb18e60c0d896efa9060600160405180910390a25050505050506001600055909590945092505050565b600080546001146119775760405162461bcd60e51b815260040161070090615c3a565b6002600055600c54610100900460ff16156119a5576040516313d0ff5960e31b815260040160405180910390fd5b6119ad611fda565b7f00000000000000000000000000000000000000000000000000000000000000008610156119ee5760405163211ddda360e11b815260040160405180910390fd5b6000611a766119fb61252e565b600854600160801b90046001600160801b03167f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006139d9565b905085811080611a8557508481115b15611aa357604051633b61151160e11b815260040160405180910390fd5b600080611ab08986611ffb565b91509150611abf610b1a6121b4565b50600d54600360f81b600090815260026020527f3ccfbaf375b4885450e3887dab0704e32e03acfeaf0442976372f6750e322c1f549091611b0b916001600160801b0390911690615c74565b60008080526002602052600080516020615eaa8339815191525491925090611b34908390615c87565b9050600080611b4285613a14565b90506000611b4f82613b7a565b9050611b5a87613dec565b6008546001600160801b038082168452600954600f0b6020850152600160801b909104166040830152611b8c82613b7a565b9250611ba48482611b9d8187615c74565b9190612e0d565b98505050611bb460008a8961279a565b611bbd84612c93565b60408051888152602081018e90526001600160a01b038b16917f06239653922ac7bea6aa2b19dc486b9361821d37712eb796adfd38d81de278ca910160405180910390a250506001600055509298975050505050505050565b84611c2081612e2b565b6001600160a01b0316336001600160a01b031614611c5157604051632aab8bd360e01b815260040160405180910390fd5b611c5e8686868686612843565b505050505050565b6000818152600e60205260409020546001600160801b031615611c865750565b6000611c906121b4565b9050611cbc7f000000000000000000000000000000000000000000000000000000000000000083615d1d565b151580611cc857508181105b15611ce65760405163ecd29e8160e01b815260040160405180910390fd5b808203611cfe576114bf81611cf9612c00565b6121ef565b815b6000818152600e60205260409020546001600160801b0316828203611d2a57611d27612c00565b90505b8015611d3a57610f7784826121ef565b50611d657f000000000000000000000000000000000000000000000000000000000000000082615c87565b9050611d00565b60008054600114611d8f5760405162461bcd60e51b815260040161070090615c3a565b60026000557f0000000000000000000000000000000000000000000000000000000000000000851015611dd55760405163211ddda360e11b815260040160405180910390fd5b6000611ddf612c00565b9050611deb87826121ef565b50611dfa61100c600189612765565b600080600080600080611e0e8c888f613f6e565b95509550955095509550955060008d90508d421015611ed7578160106000828254611e399190615c87565b90915550611e4c90508d888786856140e5565b6000611e787f000000000000000000000000000000000000000000000000000000000000000083615c74565b6000818152600e6020526040902054909150600160801b9004600f0b611ea48f878b8a878f60016132a3565b6000828152600e6020526040902054611ecb90600f83810b91600160801b9004900b61344b565b611ed48a612c93565b50505b6000611ee4878d8d612a98565b9050808d1115611f075760405163c972651760e01b815260040160405180910390fd5b8d611f13600184612765565b60408051858152602081018590529081018390526001600160a01b038f16907fe8c2c201cc00307ad7ec0d92d7ee5f89a796b4b1134d1672b08939eaf504d68c9060600160405180910390a35060016000559e9d5050505050505050505050505050565b6040516001600160a01b0383166024820152604481018290526114bf90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526142b2565b3415611ff957604051631574f9f360e01b815260040160405180910390fd5b565b60008082156120db576120396001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333087614387565b604051636e553f6560e01b8152600481018590523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f65906044016020604051808303816000875af11580156120a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ca9190615c21565b91506120d4612c00565b90506121ad565b6040516363737ac960e11b8152600481018590526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c6e6f59290602401602060405180830381865afa158015612143573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121679190615c21565b905061219e6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084614387565b8092506121a9612c00565b9150505b9250929050565b60006121e07f000000000000000000000000000000000000000000000000000000000000000042615d1d565b6121ea9042615c74565b905090565b6000828152600e6020526040812080546001600160801b031615158061221457504284115b1561222a57546001600160801b031690506123f7565b61223383612a04565b81546001600160801b0319166001600160801b03919091161781556000600e8161227d7f000000000000000000000000000000000000000000000000000000000000000088615c74565b815260208101919091526040016000908120546001600160801b031691506002816122a88289612765565b8152602001908152602001600020549050600080821115612304576000806122d384898760006143bf565b9150915080601060008282546122e99190615c87565b909155506122fd905084600084808d613129565b6001925050505b60006002600061231560018b612765565b815260200190815260200160002054905060008111156123705760008061233f838a8860016143bf565b9150915080601060008282546123559190615c87565b90915550612369905083600084808e6140e5565b6001935050505b81156123ee5760006123a27f00000000000000000000000000000000000000000000000000000000000000008a615c74565b6000818152600e6020526040902080546001600160801b03811691829055919250600160801b91829004600f90810b926123e2928492919004900b61344b565b6123eb89612c93565b50505b86955050505050505b92915050565b60008060008061246a61240e61252e565b600854600160801b90046001600160801b0316887f0000000000000000000000000000000000000000000000000000000000000000897f000000000000000000000000000000000000000000000000000000000000000061448d565b925060006124d361247961252e565b600854600160801b90046001600160801b03167f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006144b9565b90506124de816144ca565b6000806124ec89848a614624565b90925090506124fb8287615c74565b94506125078186615c87565b955061251481848a612e0d565b9350612520848a615c74565b965050505092959194509250565b6008546009546000916121ea916001600160801b0390911690600f0b6146a4565b60006125648383670de0b6b3a7640000612e0d565b9392505050565b600a546001600160801b03166125a6610bc78261259085670de0b6b3a7640000615cb0565b600b546001600160801b031691908a60016146c1565b600b80546001600160801b0319166001600160801b03929092169190911790556125cf87612a04565b600880546000906125ea9084906001600160801b0316615d31565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061261785612a04565b60088054601090612639908490600160801b90046001600160801b0316615cc7565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061266686612a04565b6126709082615d31565b600a80546001600160801b0319166001600160801b0383161790556000848152600e60205260408120805492935091600160801b9004600f0b906126cc6126b78b8961254f565b6126c28b6002615cb0565b610bc79190615c74565b8354909150819084906010906126ed908490600160801b9004600f0b615d51565b82546001600160801b039182166101009390930a928302919092021990911617905550825461272a90600f84810b91600160801b9004900b61344b565b6127338761473b565b612750576040516318846de960e01b815260040160405180910390fd5b61275987612c93565b50505050505050505050565b60006001600160f81b0382111561278f5760405163b7d0949760e01b815260040160405180910390fd5b5060f89190911b1790565b60008381526001602090815260408083206001600160a01b0386168452909152812080548392906127cc908490615c87565b9091555050600083815260026020526040812080548392906127ef908490615c87565b909155505060408051848152602081018390526001600160a01b0384169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291015b60405180910390a4505050565b6001600160a01b038416158061286057506001600160a01b038316155b1561287e5760405163f0dd15fd60e01b815260040160405180910390fd5b836001600160a01b0316816001600160a01b031614612942576001600160a01b0380851660009081526003602090815260408083209385168352929052205460ff166129425760008581526004602090815260408083206001600160a01b038089168552908352818420908516845290915290205460001981146129405760008681526004602090815260408083206001600160a01b03808a16855290835281842090861684529091528120805485929061293a908490615c74565b90915550505b505b60008581526001602090815260408083206001600160a01b038816845290915281208054849290612974908490615c74565b909155505060008581526001602090815260408083206001600160a01b0387168452909152812080548492906129ab908490615c87565b909155505060408051868152602081018490526001600160a01b038086169287821692918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a45050505050565b6000600160801b8210612a2a57604051630f0af95160e11b815260040160405180910390fd5b5090565b600080612a3f846301e133806147ad565b9050612a8b612a7b612a59670de0b6b3a7640000866147c2565b612a63888561254f565b612a7590670de0b6b3a7640000615c87565b906147d7565b612a85888a61254f565b9061254f565b9150505b95945050505050565b60008115612b4057604051635d043b2960e11b8152600481018590526001600160a01b0384811660248301523060448301527f0000000000000000000000000000000000000000000000000000000000000000169063ba087652906064016020604051808303816000875af1158015612b15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b399190615c21565b9050612564565b612b746001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168486611f77565b6040516303d1689d60e11b8152600481018590526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a90602401602060405180830381865afa158015612bdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8f9190615c21565b6040516303d1689d60e11b8152670de0b6b3a764000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a90602401602060405180830381865afa158015612c6f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ea9190615c21565b6002602052600080516020615eaa83398151915254600d54600360f81b60009081527f3ccfbaf375b4885450e3887dab0704e32e03acfeaf0442976372f6750e322c1f549091612cee916001600160801b0390911690615c74565b90506000612cfc8284615c87565b90506000612d11612d0c86613a14565b613b7a565b90506000612d20858385612e0d565b9050600080612d2e8861482e565b905082811115612d4557612d428382615c74565b91505b6000821180612d52575083155b15612d6357612d63828587896148da565b5050505050505050565b60008381526001602090815260408083206001600160a01b038616845290915281208054839290612d9f908490615c74565b909155505060008381526002602052604081208054839290612dc2908490615c74565b909155505060408051848152602081018390526000916001600160a01b0385169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629101612836565b6000826000190484118302158202612e2457600080fd5b5091020490565b604080513060208083019190915281830193909352815180820383018152606080830184528151918501919091206001600160f81b031960808401527f000000000000000000000000000000000000000000000000000000000000000090911b6bffffffffffffffffffffffff1916608183015260958201527f000000000000000000000000000000000000000000000000000000000000000060b5808301919091528251808303909101815260d5909101909152805191012090565b60008481526004602090815260408083206001600160a01b0385811680865291845282852090881680865290845293829020869055905185815290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050565b6000806000806000806000612f69886149c3565b9050612fd3612f7661252e565b600854600160801b90046001600160801b03168c847f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000614a14565b909850955093506000612fe761247961252e565b9050612ff2816144ca565b8a8a600080808061300586898988614a84565b935093509350935080826130199190615c87565b98506130258285615c74565b61302f908c615c87565b9a5061303b8385615c87565b613045908d615c87565b9b5050505050505050506000600e60007f00000000000000000000000000000000000000000000000000000000000000008a6130819190615c74565b815260208101919091526040016000908120546001600160801b031691504289116130c3576000898152600e60205260409020546001600160801b03166130c5565b895b90506130f58b8784848e7f0000000000000000000000000000000000000000000000000000000000000000614b83565b96506131018387615c74565b95506131138787878686866000614bd5565b9b9f939e50919c509a5098975095505050505050565b600a54600160801b90046001600160801b0316613172610bc78261315585670de0b6b3a7640000615cb0565b600b54600160801b90046001600160801b031691908a60006146c1565b600b80546001600160801b03928316600160801b02921691909117905561319886612a04565b6131a29082615cc7565b600a80546001600160801b03928316600160801b029216919091179055506131c983612a04565b600880546000906131e49084906001600160801b0316615d31565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061321182614c50565b60098054600090613226908490600f0b615d51565b92506101000a8154816001600160801b030219169083600f0b6001600160801b0316021790555061325684612a04565b60088054601090613278908490600160801b90046001600160801b0316615cc7565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505050505050565b60006132cf7f000000000000000000000000000000000000000000000000000000000000000085615c74565b90506000600260006132e2600188612765565b8152602001908152602001600020549050600060026000613304600289612765565b8152602001908152602001600020549050816000148015613323575080155b15613348576000838152600e6020526040902080546001600160801b03169055612759565b600061338c8b6133588c8961254f565b613363906002615cb0565b8b61336e8c8b61254f565b6133789190615c87565b6133829190615c74565b610bc79190615c87565b905084156133eb576000848152600e6020526040902080548291906010906133bf908490600160801b9004600f0b615d7e565b92506101000a8154816001600160801b030219169083600f0b6001600160801b0316021790555061343e565b6000848152600e602052604090208054829190601090613416908490600160801b9004600f0b615d51565b92506101000a8154816001600160801b030219169083600f0b6001600160801b031602179055505b5050505050505050505050565b808213801561345b575060008212155b156134ee57600061346c8282614c8e565b6134769084615dab565b6009549091506134a39061349e908390600160801b90046001600160801b0316600f0b614ca4565b614c50565b600980546010906134c5908490600160801b90046001600160801b0316615cc7565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550505050565b8181131561068e57600082126135645761350782614c50565b61351082614c50565b61351a9190615d7e565b6009805460109061353c908490600160801b90046001600160801b0316615d31565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505050565b61351a61349e826000614c8e565b60008060006135de61358261252e565b600854600160801b90046001600160801b0316887f0000000000000000000000000000000000000000000000000000000000000000897f0000000000000000000000000000000000000000000000000000000000000000614cb3565b9150856135eb838761254f565b111561360a5760405163512095c760e01b815260040160405180910390fd5b600061361761247961252e565b9050613622816144ca565b600061363888670de0b6b3a7640000848a614cd4565b945090915061364990508382615c74565b6136539085615c74565b935061369087612a858a6136678789615c74565b8a8c8d7f0000000000000000000000000000000000000000000000000000000000000000614b83565b9450505093509350939050565b600a546136e790610bc790600160801b90046001600160801b03166136ca84670de0b6b3a7640000615cb0565b600b54600160801b90046001600160801b031691908860016146c1565b600b80546001600160801b03928316600160801b029216919091179055600061370f84612a04565b60085461372591906001600160801b0316615cc7565b600880546001600160801b0319166001600160801b038316179055905061374b85612a04565b6008805460109061376d908490600160801b90046001600160801b0316615d31565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061379a85612a04565b600a80546010906137bc908490600160801b90046001600160801b0316615d31565b82546101009290920a6001600160801b03818102199093169183160217909155600954600854600f9190910b91161215905061380b5760405163585fe6df60e11b815260040160405180910390fd5b60006138156121b4565b6000818152600e6020526040902054909150600160801b9004600f0b61383a87612a04565b6000838152600e602052604090208054601090613862908490600160801b9004600f0b615d7e565b82546001600160801b039182166101009390930a9283029190920219909116179055506000828152600e60205260409020546138ac90600f83810b91600160801b9004900b61344b565b6138b58561473b565b6138d2576040516318846de960e01b815260040160405180910390fd5b610a0b85612c93565b60008060006138e987613a14565b905060006138f682613b7a565b9050613908613903612c00565b61482e565b9350613915848a88612e0d565b935061392861392385615dcb565b613dec565b6008546001600160801b038082168452600954600f0b6020850152600160801b909104166040830152600061395c83613b7a565b9050600061396b898385612e0d565b90506139778b8a615dab565b6139819082615dab565b905060008112156139ca5760006139a261399a83615dcb565b85908c612e0d565b90506139ae8188615c74565b96506139b981613dec565b6139c481898d614dd5565b60009150505b93505050509550959350505050565b6000806139e8878787866144b9565b9050612a8b6139fc82866301e13380614e1a565b613a0e83670de0b6b3a7640000615c74565b906147ad565b613a7160405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60408051610160810182526008546001600160801b038082168352600954600f0b6020840152600160801b909104811692820192909252606081018490527f000000000000000000000000000000000000000000000000000000000000000060808201527f000000000000000000000000000000000000000000000000000000000000000060a08201527f000000000000000000000000000000000000000000000000000000000000000060c0820152600a54821660e0820152600b549091610100830191613b409116614e40565b8152600a546001600160801b03600160801b9182900481166020840152600b54604090930192613b7292900416614e40565b905292915050565b600080613b9a83610140015184610120015161254f90919063ffffffff16565b61010084015160e0850151613bae9161254f565b613bb89190615dab565b90506000613bce846000015185602001516146a4565b90506000821315613c70576000613c108286604001518760a001518860c00151670de0b6b3a7640000613c019190615c74565b89606001518a60800151614eb6565b9150613c1e90508184614f39565b90508015613c6a57613c57828660400151838860c00151670de0b6b3a7640000613c489190615c74565b89606001518a60800151614f48565b85518690613c66908390615c74565b9052505b50613d2e565b6000821215613d2e57613c8282615dcb565b91506000613cb68286604001518760c00151670de0b6b3a7640000613ca79190615c74565b88606001518960800151614f7c565b9150613cc490508184614f39565b90508015613d1057613cfd828660400151838860c00151670de0b6b3a7640000613cee9190615c74565b89606001518a60800151615006565b85518690613d0c908390615c87565b9052505b613d1a8184615c74565b85518690613d29908390615c87565b905250505b6000613d5d856101000151670de0b6b3a7640000613d4c9190615c74565b606087015160e08801519190612e0d565b613d8b866101400151670de0b6b3a7640000613d799190615c74565b60608801516101208901519190612e0d565b613d959190615dab565b90506000818660000151613da99190615de7565b90508560a00151811215613dd05760405163aeeb825d60e01b815260040160405180910390fd5b80865260a0860151613de29082615c74565b9695505050505050565b80600003613df75750565b6008546001600160801b03167f0000000000000000000000000000000000000000000000000000000000000000811015613e445760405163585fe6df60e11b815260040160405180910390fd5b6000613e508383615de7565b90507f0000000000000000000000000000000000000000000000000000000000000000811215613e935760405163585fe6df60e11b815260040160405180910390fd5b613e9c81612a04565b600880546001600160801b0319166001600160801b0392909216919091179055600954600090600f0b818112613ede57613ed7838286612e0d565b9150613efe565b613ef2613eea82615dcb565b849086612e0d565b613efb90615dcb565b91505b613f0782614c50565b600980546001600160801b0319166001600160801b03928316179055600854613f4a91610bc791600160801b900416613f4087856146a4565b611b9d87876146a4565b600880546001600160801b03928316600160801b0292169190911790555050505050565b6000806000806000806000613f82886149c3565b9050613fec613f8f61252e565b600854600160801b90046001600160801b03168c847f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000615081565b90985096509350600061400061247961252e565b905061400b816144ca565b60008061401a8d85858f614cd4565b9650909250905061402b8288615c74565b96506140378183615c87565b614041908a615c74565b985061404d858a615c87565b9750505050506140d185858584600e60007f00000000000000000000000000000000000000000000000000000000000000008e61408a9190615c74565b81526020810191909152604001600020546001600160801b0316428d116140c85760008d8152600e60205260409020546001600160801b03166140ca565b8d5b6001614bd5565b999d939c50919a5098509695509350505050565b600a546001600160801b0316614120610bc78261410a85670de0b6b3a7640000615cb0565b600b546001600160801b031691908a60006146c1565b600b80546001600160801b0319166001600160801b039290921691909117905561414986612a04565b6141539082615cc7565b600a80546001600160801b0319166001600160801b03929092169190911790555061417d83612a04565b600880546000906141989084906001600160801b0316615cc7565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506141c582614c50565b600980546000906141da908490600f0b615d7e565b92506101000a8154816001600160801b030219169083600f0b6001600160801b0316021790555061420a84612a04565b6008805460109061422c908490600160801b90046001600160801b0316615d31565b82546101009290920a6001600160801b038181021990931691831602179091556008547f00000000000000000000000000000000000000000000000000000000000000009116109050806142945750600954600854600f9190910b6001600160801b03909116125b15610f775760405163585fe6df60e11b815260040160405180910390fd5b6000614307826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166150cd9092919063ffffffff16565b90508051600014806143285750808060200190518101906143289190615e0f565b6114bf5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610700565b6040516001600160a01b0380851660248301528316604482015260648101829052610a219085906323b872dd60e01b90608401611fa3565b6000806143cc86866147ad565b915060006143fa837f000000000000000000000000000000000000000000000000000000000000000061254f565b9050614426817f000000000000000000000000000000000000000000000000000000000000000061254f565b91508315614449576144388282615c74565b6144429084615c74565b9250614460565b6144538282615c74565b61445d9084615c87565b92505b8486101561448357614473838787612e0d565b9250614480828787612e0d565b91505b5094509492505050565b60006144ae8787876144a788670de0b6b3a7640000615c74565b87876150e4565b979650505050505050565b6000612a8f82612a75858888612e0d565b6013546001600160801b03600160801b8204811691164261450b7f000000000000000000000000000000000000000000000000000000000000000084615c87565b111561451657505050565b60006012828154811061452b5761452b615c9a565b60009182526020822001805490925063ffffffff8116916401000000009091046001600160e01b03169061455f8342615c74565b601254909150878202830190600090614579886001615c87565b6145839190615d1d565b905060405180604001604052804263ffffffff168152602001836001600160e01b0316815250601282815481106145bc576145bc615c9a565b60009182526020918290208351938301516001600160e01b03166401000000000263ffffffff90941693909317920191909155604080518082019091526001600160801b03928316808252429093169101819052600160801b02176013555050505050505050565b60008061466e85612a8585817f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a7640000614664818c6147ad565b612a859190615c74565b915061469a827f000000000000000000000000000000000000000000000000000000000000000061254f565b9050935093915050565b6000806146b18385615dab565b9050600081121561256457600080fd5b60008115614701576146fa6146d68487615c87565b6146e0858761254f565b6146ea888a61254f565b6146f49190615c87565b906147c2565b9050612a8f565b82850361471057506000612a8f565b613de261471d8487615c74565b614727858761254f565b614731888a61254f565b6146f49190615c74565b60006147677f00000000000000000000000000000000000000000000000000000000000000008361254f565b6009546008546147a5916000916001600160801b03600160801b9092048216600f0b9161479591168761254f565b61479f9190615dab565b90614c8e565b121592915050565b600061256483670de0b6b3a764000084612e0d565b600061256483670de0b6b3a764000084614e1a565b6000816000036147f05750670de0b6b3a76400006123f7565b82600003614800575060006123f7565b81600061480c85615157565b9050818102614823670de0b6b3a764000082615e2c565b9050613de28161536a565b600954600090819061485090600160801b90046001600160801b0316846147ad565b905061487c7f000000000000000000000000000000000000000000000000000000000000000082615c87565b6008546001600160801b031611156148d4576008547f0000000000000000000000000000000000000000000000000000000000000000906148c79083906001600160801b0316615c74565b6148d19190615c74565b91505b50919050565b60008084116148e957826148f4565b6148f4838686612e0d565b9050806000036149045750610a21565b80858382111561491f5783915061491c878385612e0d565b90505b61492882612a04565b600d80546000906149439084906001600160801b0316615d31565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061497081612a04565b600d8054601090614992908490600160801b90046001600160801b0316615d31565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550610a0b8161392390615dcb565b6000806149ce6121b4565b90508083116149de5760006149e8565b6149e88184615c74565b91506148d1827f00000000000000000000000000000000000000000000000000000000000000006147ad565b60008080614a35614a2d88670de0b6b3a7640000615c74565b899087612e0d565b9050614a41888861254f565b91508115614a7757614a688a8a84614a618a670de0b6b3a7640000615c74565b8989615006565b9250614a748382615c87565b90505b9750975097945050505050565b6000808080614a9b86670de0b6b3a7640000615c74565b9350614ad08786611b9d8b612a85897f000000000000000000000000000000000000000000000000000000000000000061254f565b9350614afc847f000000000000000000000000000000000000000000000000000000000000000061254f565b91506000614b1d614b1589670de0b6b3a7640000615c74565b8a9088612e0d565b9050614b49817f000000000000000000000000000000000000000000000000000000000000000061254f565b9350614b75847f000000000000000000000000000000000000000000000000000000000000000061254f565b915050945094509450949050565b600080614b9c85614b9488876154f5565b8a9190612e0d565b9050614ba9888486612e0d565b614bb39082615c87565b905086811115614bca57614bc78782615c74565b91505b509695505050505050565b60008060008060008088881015614c32578615614bfa57614bf78d898b612e0d565b9c505b614c058c898b612e0d565b9b50614c118b8d615dab565b9050614c1e8b898b612e0d565b9a50614c2b8a898b612e0d565b9950614c3f565b614c3c8b8d615dab565b90505b9b9c9a9b999a975050505050505050565b600060016001607f1b03198212801590614c71575060016001607f1b038213155b612a2a5760405163a5353be560e01b815260040160405180910390fd5b6000818313614c9d5781612564565b5090919050565b60008183136148d45782612564565b60006144ae878787614ccd88670de0b6b3a7640000615c74565b8787614f48565b6000808080614ceb86670de0b6b3a7640000615c74565b9050614d208786611b9d8b612a85867f000000000000000000000000000000000000000000000000000000000000000061254f565b9350614d4c847f000000000000000000000000000000000000000000000000000000000000000061254f565b91506000614d65614b1589670de0b6b3a7640000615c74565b9050614d91817f000000000000000000000000000000000000000000000000000000000000000061254f565b9350614dbd847f000000000000000000000000000000000000000000000000000000000000000061254f565b614dc79084615c87565b925050509450945094915050565b6000614de3612d0c83613a14565b60008080526002602052600080516020615eaa8339815191525491925090614e0c908590615c87565b9050610f77858383876148da565b6000826000190484118302158202614e3157600080fd5b50910281810615159190040190565b600080670de0b6b3a7640000614e546121b4565b614e5e9190615cb0565b9050808311614e6e576000614e78565b614e788184615c74565b91506148d1614eaf670de0b6b3a76400007f0000000000000000000000000000000000000000000000000000000000000000615cb0565b83906147ad565b60008080614ec485856147ad565b90506000614ed582868c8a8d61550a565b90506000614f10614eee670de0b6b3a76400008a6147ad565b614f06614eff8b612a758b8f61254f565b869061254f565b612a759085615c74565b9050614f1c898c615c74565b614f268b83615c74565b945094505050505b965096945050505050565b60008183116148d45782612564565b600080614f59888888888888615538565b909250905080614bca57604051637ac17d2560e01b815260040160405180910390fd5b60008080614f8a85856147ad565b90506000614f9b82868b8a8c61550a565b90506000614fd0614fb4670de0b6b3a76400008a6147ad565b612a75614fc9670de0b6b3a764000087615c87565b85906147ad565b90506000614fde82886147ad565b9050614fea8b82615c74565b614ff4838c615c74565b95509550505050509550959350505050565b60008061501384846147ad565b9050600061502482858b898c61550a565b905061503486612a75898b615c74565b9750600061505b61504d670de0b6b3a7640000896147c2565b612a7585613a0e8d87615c74565b905061506781866147ad565b90506150738a82615c74565b9a9950505050505050505050565b6000808061509a614a2d88670de0b6b3a7640000615c74565b90508615614a77576150ac888861254f565b9150614a688a8a846150c68a670de0b6b3a7640000615c74565b8989614f48565b60606150dc84846000856155d9565b949350505050565b6000806150f184846147ad565b9050600061510282858b898c61550a565b905061511c86612a756151158a8d615c87565b879061254f565b9850615128828a61254f565b9850600061514b615141670de0b6b3a7640000896147c2565b612a758c85615c74565b9050615073818a615c74565b600080821361517957604051636838feed60e11b815260040160405180910390fd5b5060606001600160801b03821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110600190811b90911783811c90911017609f81810383019390931b90921c6c465772b2bbbb5f824b15207a3081018102821d6d0388eaa27412d5aca026815d636e018102821d6d0df99ac502031bf953eff472fdcc018102821d6d13cdffb29d51d99322bdff5f2211018102821d6d0a0f742023def783a307a986912e018102821d6d01920d8043ca89b5239253284e42018102821d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7882018202831d6d0139601a2efabe717e604cbb4894018202831d6d02247f7a7b6594320649aa03aba1018202831d6c8c3f38e95a6b1ff2ab1c3b343619018202831d6d02384773bdf1ac5676facced60901901820290921d6cb9a025d814b29c212b8b1a07cd190102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a550602605f19919091017d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b6000680248ce36a70cb26b3e19821361538557506000919050565b680755bf798b4a1bf1e582126153ae5760405163df92cc9d60e01b815260040160405180910390fd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b60006125648383670de0b6b3a7640000614e1a565b600061551682846147d7565b61552e61552785612a75898961254f565b889061254f565b613de29190615c87565b6000808061554685856147ad565b9050600061555782868c8a8d61550a565b905061556787612a758a8c615c87565b98508881101561557f57600080935093505050614f2e565b60006155a4615596670de0b6b3a76400008a6147c2565b612a7585613a0e8e87615c74565b90506155b081876147ad565b9050808b11156155c7576155c4818c615c74565b94505b60019350505050965096945050505050565b60608247101561563a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610700565b600080866001600160a01b031685876040516156569190615e5a565b60006040518083038185875af1925050503d8060008114615693576040519150601f19603f3d011682016040523d82523d6000602084013e615698565b606091505b50915091506144ae878383876060831561571357825160000361570c576001600160a01b0385163b61570c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610700565b50816150dc565b6150dc83838151156157285781518083602001fd5b8060405162461bcd60e51b81526004016107009190615e76565b8183823760009101908152919050565b805160208201516001600160e01b031980821692919060048310156157815780818460040360031b1b83161693505b505050919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156157ba5781810151838201526020016157a2565b50506000910152565b6000602082840312156157d557600080fd5b815167ffffffffffffffff808211156157ed57600080fd5b818401915084601f83011261580157600080fd5b81518181111561581357615813615789565b604051601f8201601f19908116603f0116810190838211818310171561583b5761583b615789565b8160405282815287602084870101111561585457600080fd5b6144ae83602083016020880161579f565b6001600160a01b038116811461587a57600080fd5b50565b60006020828403121561588f57600080fd5b813561256481615865565b801515811461587a57600080fd5b6000602082840312156158ba57600080fd5b81356125648161589a565b600080600080600060a086880312156158dd57600080fd5b85359450602086013593506040860135925060608601356158fd81615865565b9150608086013561590d8161589a565b809150509295509295909350565b60008083601f84011261592d57600080fd5b50813567ffffffffffffffff81111561594557600080fd5b6020830191508360208260051b85010111156121ad57600080fd5b6000806000806000806080878903121561597957600080fd5b863561598481615865565b9550602087013561599481615865565b9450604087013567ffffffffffffffff808211156159b157600080fd5b6159bd8a838b0161591b565b909650945060608901359150808211156159d657600080fd5b506159e389828a0161591b565b979a9699509497509295939492505050565b60008060008060808587031215615a0b57600080fd5b843593506020850135615a1d81615865565b92506040850135615a2d81615865565b9396929550929360600135925050565b60008060008060808587031215615a5357600080fd5b84359350602085013592506040850135615a6c81615865565b91506060850135615a7c8161589a565b939692955090935050565b60008060008060808587031215615a9d57600080fd5b843593506020850135615aaf81615865565b9250604085013591506060850135615a7c81615865565b60008060408385031215615ad957600080fd5b8235615ae481615865565b91506020830135615af48161589a565b809150509250929050565b600080600080600080600060e0888a031215615b1a57600080fd5b8735615b2581615865565b96506020880135615b3581615865565b95506040880135615b458161589a565b945060608801359350608088013560ff81168114615b6257600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080600060608486031215615b9457600080fd5b833592506020840135615ba681615865565b929592945050506040919091013590565b600080600080600060a08688031215615bcf57600080fd5b853594506020860135615be181615865565b93506040860135615bf181615865565b925060608601359150608086013561590d81615865565b600060208284031215615c1a57600080fd5b5035919050565b600060208284031215615c3357600080fd5b5051919050565b6020808252600a90820152695245454e5452414e435960b01b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156123f7576123f7615c5e565b808201808211156123f7576123f7615c5e565b634e487b7160e01b600052603260045260246000fd5b80820281158282048414176123f7576123f7615c5e565b6001600160801b03828116828216039080821115615ce757615ce7615c5e565b5092915050565b600060018201615d0057615d00615c5e565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082615d2c57615d2c615d07565b500690565b6001600160801b03818116838216019080821115615ce757615ce7615c5e565b600f81810b9083900b0160016001607f1b03811360016001607f1b0319821217156123f7576123f7615c5e565b600f82810b9082900b0360016001607f1b0319811260016001607f1b03821317156123f7576123f7615c5e565b8181036000831280158383131683831282161715615ce757615ce7615c5e565b6000600160ff1b8201615de057615de0615c5e565b5060000390565b8082018281126000831280158216821582161715615e0757615e07615c5e565b505092915050565b600060208284031215615e2157600080fd5b81516125648161589a565b600082615e3b57615e3b615d07565b600160ff1b821460001984141615615e5557615e55615c5e565b500590565b60008251615e6c81846020870161579f565b9190910192915050565b6020815260008251806020840152615e9581604085016020870161579f565b601f01601f1916919091016040019291505056feac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077ba2646970667358221220949045d4a6c763245e0b0067f6b8383c2eab88c7f59a4ad67e4a80149bc7412e64736f6c63430008130033a264697066735822122022c4de84d5431ccf50665b997b41e1fd9ef4f8fc3fc3295053ff18a91e9fcb5664736f6c63430008130033", - "sourceMap": "910:1538:9:-:0;;;1013:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1051:12:9;;;910:1538;;14:307:162;101:6;154:2;142:9;133:7;129:23;125:32;122:52;;;170:1;167;160:12;122:52;196:16;;-1:-1:-1;;;;;241:31:162;;231:42;;221:70;;287:1;284;277:12;221:70;310:5;14:307;-1:-1:-1;;;14:307:162:o;:::-;910:1538:9;;;;;;;;;;;;", + "object": "0x60a060405234801561001057600080fd5b506040516170cd3803806170cd83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161704361008a6000396000607301526170436000f3fe60806040523480156200001157600080fd5b50600436106200002e5760003560e01c8063e3420f4f1462000033575b600080fd5b6200004a620000443660046200024e565b62000066565b6040516001600160a01b03909116815260200160405180910390f35b60006060829050868686867f000000000000000000000000000000000000000000000000000000000000000085604051620000a190620000db565b620000b296959493929190620003ce565b604051809103906000f080158015620000cf573d6000803e3d6000fd5b50979650505050505050565b616b2180620004ed83390190565b634e487b7160e01b600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715620001265762000126620000e9565b60405290565b80356001600160a01b03811681146200014457600080fd5b919050565b6000606082840312156200015c57600080fd5b6040516060810181811067ffffffffffffffff82111715620001825762000182620000e9565b80604052508091508235815260208301356020820152604083013560408201525092915050565b600082601f830112620001bb57600080fd5b8135602067ffffffffffffffff80831115620001db57620001db620000e9565b8260051b604051601f19603f83011681018181108482111715620002035762000203620000e9565b6040529384528581018301938381019250878511156200022257600080fd5b83870191505b84821015620002435781358352918301919083019062000228565b979650505050505050565b60008060008060008587036102408112156200026957600080fd5b6101c0808212156200027a57600080fd5b62000284620000ff565b915062000291886200012c565b82526020880135602083015260408801356040830152606088013560608301526080880135608083015260a088013560a083015260c088013560c0830152620002dd60e089016200012c565b60e0830152610100620002f2818a016200012c565b90830152610120620003078a8a830162000149565b81840152506101808801356101408301526101a0880135610160830152819650620003348189016200012c565b955050506101e086013592506200034f61020087016200012c565b915061022086013567ffffffffffffffff8111156200036d57600080fd5b6200037b88828901620001a9565b9150509295509295909350565b600081518084526020808501945080840160005b83811015620003c35781516001600160a01b0316875295820195908201906001016200039c565b509495945050505050565b86516001600160a01b0316815260006102606020890151602084015260408901516040840152606089015160608401526080890151608084015260a089015160a084015260c089015160c084015260e08901516200043760e08501826001600160a01b03169052565b50610100898101516001600160a01b038116858301525050610120898101518051858301526020810151610140860152604081015161016086015250506101408901516101808401526101608901516101a08401526001600160a01b0388166101c0840152866101e0840152620004ba6102008401876001600160a01b03169052565b6001600160a01b03851661022084015280610240840152620004df8184018562000388565b999850505050505050505056fe6102a060405260016000553480156200001757600080fd5b5060405162006b2138038062006b218339810160408190526200003a916200076f565b6001600160a01b03808616608052831660a05260c084905260408051808201825260018152603160f81b6020918201529051879187918791879185918591859185918591859185918591620000f6917f2aef22f9d7df5f9d21c56d14029233f3fdaa91917727e1eb68e504d27072d6cd917fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6914691309101938452602084019290925260408301526001600160a01b0316606082015260800190565b60408051601f19818403018152918152815160209092019190912060e05284516001600160a01b0316610100528401516103e8111592506200014e915050576040516349db44f560e01b815260040160405180910390fd5b60408101516101a05260608101516101c05260a08101516000036200018657604051635428734d60e01b815260040160405180910390fd5b60a081018051610120525160808201511080620001b757508060a001518160800151620001b49190620008bb565b15155b15620001d65760405163253fffcf60e11b815260040160405180910390fd5b60808101516101405260c08101516101605260208101516101805260e0810151601180546001600160a01b0319166001600160a01b03928316179055610100820151166102405261012081015151670de0b6b3a764000010806200024a5750670de0b6b3a764000081610120015160200151115b80620002665750670de0b6b3a764000081610120015160400151115b1562000285576040516322f72cc360e11b815260040160405180910390fd5b61012081018051516101e0528051602001516102005251604001516102205261016001516102605260005b84610140015181101562000330576040805180820190915263ffffffff4281168252600060208301818152601280546001818101835591909352935190516001600160e01b0316640100000000029216919091177fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec34449091015501620002b0565b5050506001600160a01b0388166102805250620003539450506200057692505050565b86602001511462000377576040516355f2a42f60e01b815260040160405180910390fd5b816001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003dc9190620008de565b6001600160a01b031686600001516001600160a01b0316146200041257604051630722152560e11b815260040160405180910390fd5b85516102805160405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562000469573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200048f919062000905565b620004ad576040516340b27c2160e11b815260040160405180910390fd5b60005b815181101562000569576000828281518110620004d157620004d162000929565b60200260200101519050610280516001600160a01b0316816001600160a01b03161480620005135750610100516001600160a01b0316816001600160a01b0316145b15620005325760405163350b944160e11b815260040160405180910390fd5b6001600160a01b03166000908152601460205260409020805460ff191660011790558062000560816200093f565b915050620004b0565b5050505050505062000981565b610280516040516303d1689d60e11b8152670de0b6b3a764000060048201526000916001600160a01b0316906307a2d13a90602401602060405180830381865afa158015620005c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005ef919062000967565b905090565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b0381118282101715620006305762000630620005f4565b60405290565b6001600160a01b03811681146200064c57600080fd5b50565b80516200065c8162000636565b919050565b6000606082840312156200067457600080fd5b604051606081016001600160401b0381118282101715620006995762000699620005f4565b80604052508091508251815260208301516020820152604083015160408201525092915050565b600082601f830112620006d257600080fd5b815160206001600160401b0380831115620006f157620006f1620005f4565b8260051b604051601f19603f83011681018181108482111715620007195762000719620005f4565b6040529384528581018301938381019250878511156200073857600080fd5b83870191505b8482101562000764578151620007548162000636565b835291830191908301906200073e565b979650505050505050565b6000806000806000808688036102608112156200078b57600080fd5b6101c0808212156200079c57600080fd5b620007a66200060a565b9150620007b3896200064f565b82526020890151602083015260408901516040830152606089015160608301526080890151608083015260a089015160a083015260c089015160c0830152620007ff60e08a016200064f565b60e083015261010062000814818b016200064f565b90830152610120620008298b8b830162000661565b81840152506101808901516101408301526101a089015161016083015281975062000856818a016200064f565b965050506101e087015193506200087161020088016200064f565b92506200088261022088016200064f565b6102408801519092506001600160401b03811115620008a057600080fd5b620008ae89828a01620006c0565b9150509295509295509295565b600082620008d957634e487b7160e01b600052601260045260246000fd5b500690565b600060208284031215620008f157600080fd5b8151620008fe8162000636565b9392505050565b6000602082840312156200091857600080fd5b81518015158114620008fe57600080fd5b634e487b7160e01b600052603260045260246000fd5b6000600182016200096057634e487b7160e01b600052601160045260246000fd5b5060010190565b6000602082840312156200097a57600080fd5b5051919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e0516102005161022051610240516102605161028051615f1762000c0a60003960008181612055015281816120f40152818161217601528181612acc01528181612b4d01528181612b8d0152612c20015260006144ef0152600081816105590152818161066901528181610cc90152610d2f01526000818161440b0152818161467f01528181614ae101528181614b5a01528181614d310152614da20152600081816130d101528181613675015281816143df01528181614b2e0152614d7601526000818161463b01528181614ab50152614d0501526000818161074101528181610fa801528181611521015281816117c9015281816119af0152611d96015260008181610a9201528181610add01528181610bf101528181613ae001528181613e0e01528181613e5d0152818161425a0152818161474b01528181614860015261489c01526000818161081a01528181610b6001528181611a10015281816124460152818161248e01528181612faf015281816135ba01528181613aba0152613fd1015260008181610ba301528181611a5201528181612424015281816124af01528181612f8d0152818161359801528181613b060152613faf01526000818161089c01528181610b82015281816110b6015281816115ac01528181611a3101528181611e53015281816122580152818161237d01528181613057015281816132aa01528181614069015281816149f90152614ea3015260008181611c9701528181611d4001526121bb01526000612011015260008181610386015261133e01526000612ea601526000612e69015260006101570152615f176000f3fe6080604052600436106101405760003560e01c80636f8c3a5b116100b6578063ab033ea91161006f578063ab033ea91461049b578063c23632a7146104bb578063c326a903146104db578063e44808bc146104ee578063ed64bab21461050e578063fa3fcea71461052e57610140565b80636f8c3a5b146103e85780637180c8ca146104085780639032c726146104285780639cd241af14610448578063a179403b14610468578063a22cb4651461047b57610140565b80632002b333116101085780632002b333146102ff5780632787d5951461032057806330adf81f146103405780633644e515146103745780634536ee2f146103a85780634ed2d6ac146103c857610140565b806301681a621461025057806302329a291461027257806306dae82a1461029257806317fad7fc146102bf5780631c0f12b6146102df575b34801561014c57600080fd5b5060003660606000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316858560405161018f92919061575a565b600060405180830381855af49150503d80600081146101ca576040519150601f19603f3d011682016040523d82523d6000602084013e6101cf565b606091505b509150915081156101f357604051638bb0a34b60e01b815260040160405180910390fd5b60006101fe8261576a565b90506001600160e01b03198116636e64089360e11b1461022057815160208301fd5b815160031981016004840190815292610241918101602001906024016157db565b80519650602001945050505050f35b34801561025c57600080fd5b5061027061026b366004615895565b61054e565b005b34801561027e57600080fd5b5061027061028d3660046158c0565b610692565b6102a56102a03660046158dd565b6106db565b604080519283526020830191909152015b60405180910390f35b3480156102cb57600080fd5b506102706102da366004615978565b610960565b3480156102eb57600080fd5b506102706102fa366004615a0d565b610a14565b61031261030d366004615a55565b610a27565b6040519081526020016102b6565b34801561032c57600080fd5b5061031261033b3660046158c0565b610c7c565b34801561034c57600080fd5b506103127f65619c8664d6db8aae8c236ad19598696159942a4245b23b45565cc18e97367381565b34801561038057600080fd5b506103127f000000000000000000000000000000000000000000000000000000000000000081565b3480156103b457600080fd5b506102a56103c3366004615a55565b610d60565b3480156103d457600080fd5b506102706103e3366004615a9f565b610f30565b3480156103f457600080fd5b506103126104033660046158dd565b610f7e565b34801561041457600080fd5b50610270610423366004615ade565b6111ec565b34801561043457600080fd5b50610270610443366004615b17565b611264565b34801561045457600080fd5b50610270610463366004615b97565b6114b3565b6102a56104763660046158dd565b6114c4565b34801561048757600080fd5b50610270610496366004615ade565b6116bd565b3480156104a757600080fd5b506102706104b6366004615895565b611729565b3480156104c757600080fd5b506102a56104d6366004615a55565b61179d565b6103126104e93660046158dd565b611954565b3480156104fa57600080fd5b50610270610509366004615bcf565b611c16565b34801561051a57600080fd5b50610270610529366004615c20565b611c66565b34801561053a57600080fd5b506103126105493660046158dd565b611d6c565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906105975750336000908152600f602052604090205460ff16155b156105b4576040516282b42960e81b815260040160405180910390fd5b6001600160a01b03811660009081526014602052604090205460ff166105ed5760405163350b944160e11b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190615c39565b905061068e6001600160a01b0383167f000000000000000000000000000000000000000000000000000000000000000083611f77565b5050565b336000908152600f602052604090205460ff166106c1576040516282b42960e81b815260040160405180910390fd5b600c80549115156101000261ff0019909216919091179055565b6000806000546001146107095760405162461bcd60e51b815260040161070090615c52565b60405180910390fd5b6002600055600c54610100900460ff1615610737576040516313d0ff5960e31b815260040160405180910390fd5b61073f611fda565b7f00000000000000000000000000000000000000000000000000000000000000008710156107805760405163211ddda360e11b815260040160405180910390fd5b60008061078d8986611ffb565b91509150868110156107b2576040516342af972b60e01b815260040160405180910390fd5b60006107bc6121b4565b90506107c881836121ef565b5060008060006107d886866123fd565b600854919a50929550909350909150610802908390600160801b90046001600160801b0316615c8c565b61083f8461080e61252e565b6108189190615c9f565b7f00000000000000000000000000000000000000000000000000000000000000009061254f565b111561085e5760405163512095c760e01b815260040160405180910390fd5b868c111561087f5760405163c972651760e01b815260040160405180910390fd5b80601060008282546108919190615c9f565b909155506108c190507f000000000000000000000000000000000000000000000000000000000000000085615c9f565b97506108d183888488888d61256b565b60006108de60018a612765565b90506108eb818c8a61279a565b60008e9050818c6001600160a01b03167f7b7d51ee23746cf6ef2078de2a5b53073226b516a1c892a1e882c581026bf4b38c848d60405161093f939291909283526020830191909152604082015260600190565b60405180910390a35050505050505050600160005590969095509350505050565b6001600160a01b038616158061097d57506001600160a01b038516155b1561099b5760405163f0dd15fd60e01b815260040160405180910390fd5b8281146109bb5760405163174861a760e31b815260040160405180910390fd5b60005b83811015610a0b57610a038585838181106109db576109db615cb2565b9050602002013588888686868181106109f6576109f6615cb2565b9050602002013533612843565b6001016109be565b50505050505050565b610a218484848433612843565b50505050565b60008054600114610a4a5760405162461bcd60e51b815260040161070090615c52565b6002600055610a57611fda565b600c5460ff1615610a7b57604051637983c05160e01b815260040160405180910390fd5b600080610a888785611ffb565b9092509050610ab87f00000000000000000000000000000000000000000000000000000000000000006002615cc8565b821015610ad857604051632afb507160e21b815260040160405180910390fd5b610b037f00000000000000000000000000000000000000000000000000000000000000006002615cc8565b610b0d9083615c8c565b9250610b20610b1a6121b4565b826121ef565b50600c805460ff19166001179055610b3782612a04565b600880546001600160801b0319166001600160801b0392909216919091179055610bcc610bc7837f0000000000000000000000000000000000000000000000000000000000000000897f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000612a2e565b612a04565b600880546001600160801b03928316600160801b029216919091179055610c156000807f000000000000000000000000000000000000000000000000000000000000000061279a565b610c216000868561279a565b60408051848152602081018990529081018790526001600160a01b038616907f60c26087830ee0ee6d86bdb3a10e19f3fd49af366c77421d7fe4596811d6274e9060600160405180910390a250506001600055949350505050565b60008054600114610c9f5760405162461bcd60e51b815260040161070090615c52565b60026000908155338152600f602052604090205460ff16158015610cec5750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b8015610d0357506011546001600160a01b03163314155b15610d20576040516282b42960e81b815260040160405180910390fd5b601080546000909155610d54817f000000000000000000000000000000000000000000000000000000000000000085612a98565b60016000559392505050565b600080600054600114610d855760405162461bcd60e51b815260040161070090615c52565b60026000908155610d94612c00565b9050610da1610b1a6121b4565b50610dab81612c93565b600d548792506001600160801b031680831115610dcf57806001600160801b031692505b82600003610de557600080935093505050610f20565b610df4600360f81b3385612d6d565b600d546001600160801b03600160801b909104811690600090610e1c90869084908616612e0d565b9050610e2785612a04565b610e319084615cdf565b600d80546001600160801b0319166001600160801b0392909216919091179055610e5a81612a04565b600d8054601090610e7c908490600160801b90046001600160801b0316615cdf565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550610eab818989612a98565b955085610eb88a8761254f565b1115610ed75760405163c972651760e01b815260040160405180910390fd5b60408051868152602081018890526001600160a01b038a16917f07cd0949bbc0d60ad35053a0459db413c148f758b7781aaf6b258018d18ad0ac910160405180910390a2505050505b6001600055909590945092505050565b83610f3a81612e2b565b6001600160a01b0316336001600160a01b031614610f6b57604051632aab8bd360e01b815260040160405180910390fd5b610f7785858585612ee8565b5050505050565b60008054600114610fa15760405162461bcd60e51b815260040161070090615c52565b60026000557f0000000000000000000000000000000000000000000000000000000000000000851015610fe75760405163211ddda360e11b815260040160405180910390fd5b6000610ff1612c00565b9050610ffd87826121ef565b5061101361100c600289612765565b3388612d6d565b6000806000806000806110278c888f612f55565b600854959b50939950919750955093509150611054908790600160801b90046001600160801b0316615c8c565b6110608461080e61252e565b111561107f5760405163512095c760e01b815260040160405180910390fd5b8b8d884282111561114157836010600082825461109c9190615c9f565b909155506110af9050838a898886613129565b60006110db7f000000000000000000000000000000000000000000000000000000000000000084615c8c565b6000818152600e6020526040812054919250600160801b909104600f0b9061110e9086908a908e908d90899089906132a3565b6000828152600e602052604090205461113590600f83810b91600160801b9004900b61344b565b61113e8c612c93565b50505b600061114e898f8f612a98565b90508e8110156111715760405163c972651760e01b815260040160405180910390fd5b61117c600284612765565b8e6001600160a01b03167f39d1403e56c69205ef368007a55ee1304b0f388631dca237a1710d04e3e8950f8584886040516111ca939291909283526020830191909152604082015260600190565b60405180910390a39a5050505050505050505050600160005595945050505050565b6011546001600160a01b03163314611216576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0382166000818152600f6020526040808220805460ff1916851515179055517fa4336c0cb1e245b95ad204faed7e940d6dc999684fd8b5e1ff597a0c4efca8ab9190a25050565b834211156112855760405163f87d927160e01b815260040160405180910390fd5b6001600160a01b0387166112ac5760405163f0dd15fd60e01b815260040160405180910390fd5b6001600160a01b0387811660008181526007602090815260408083205481517f65619c8664d6db8aae8c236ad19598696159942a4245b23b45565cc18e9736738185015280830195909552948b166060850152891515608085015260a084019490945260c08084018990528451808503909101815260e08401909452835193019290922061190160f01b6101008301527f00000000000000000000000000000000000000000000000000000000000000006101028301526101228201526101420160408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156113d8573d6000803e3d6000fd5b505050602060405103519050886001600160a01b0316816001600160a01b03161461141657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0389166000908152600760205260408120805490919061143c90615d06565b909155506001600160a01b038981166000818152600360209081526040808320948d1680845294825291829020805460ff19168c151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050505050505050565b6114bf83838333612ee8565b505050565b6000806000546001146114e95760405162461bcd60e51b815260040161070090615c52565b6002600055600c54610100900460ff1615611517576040516313d0ff5960e31b815260040160405180910390fd5b61151f611fda565b7f00000000000000000000000000000000000000000000000000000000000000008710156115605760405163211ddda360e11b815260040160405180910390fd5b600061156a612c00565b90508581101561158d576040516342af972b60e01b815260040160405180910390fd5b60006115976121b4565b905060006115a582846121ef565b90506115d17f000000000000000000000000000000000000000000000000000000000000000083615c9f565b94506000806115e18c8685613572565b60108054939950919450925082916000906115fd908490615c9f565b909155505050848a10156116245760405163c972651760e01b815260040160405180910390fd5b61162e8588611ffb565b505061163c8b8286896136a6565b6000611649600288612765565b9050611656818a8e61279a565b60408051888152602081018890529081018d90528c9082906001600160a01b038c16907f851bac68873b7adb346bcf4bff36324c6f322b58f9f0f50c1d3a8568242ca66b9060600160405180910390a3505050505050600160005590969095509350505050565b3360008181526003602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6011546001600160a01b03163314611753576040516282b42960e81b815260040160405180910390fd5b601180546001600160a01b0319166001600160a01b0383169081179091556040517f9d3e522e1e47a2f6009739342b9cc7b252a1888154e843ab55ee1c81745795ab90600090a250565b6000806000546001146117c25760405162461bcd60e51b815260040161070090615c52565b60026000557f00000000000000000000000000000000000000000000000000000000000000008610156118085760405163211ddda360e11b815260040160405180910390fd5b6000611812612c00565b905061181f610b1a6121b4565b5061182981612c93565b6002602052600080516020615ec283398151915254600d54600360f81b60009081527f3ccfbaf375b4885450e3887dab0704e32e03acfeaf0442976372f6750e322c1f549091611884916001600160801b0390911690615c8c565b905060006118928284615c9f565b90506118a06000338c612d6d565b60006118af8b868487876138e4565b965090506118c2600360f81b8a8861279a565b6118cd818a8a612a98565b9650868a11156118f05760405163c972651760e01b815260040160405180910390fd5b604080518c8152602081018990529081018790528b906001600160a01b038b16907f59c3a0b60c6ab7deb62e1440c9e72441db6db7dfe514dba8cb18e60c0d896efa9060600160405180910390a25050505050506001600055909590945092505050565b600080546001146119775760405162461bcd60e51b815260040161070090615c52565b6002600055600c54610100900460ff16156119a5576040516313d0ff5960e31b815260040160405180910390fd5b6119ad611fda565b7f00000000000000000000000000000000000000000000000000000000000000008610156119ee5760405163211ddda360e11b815260040160405180910390fd5b6000611a766119fb61252e565b600854600160801b90046001600160801b03167f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006139e2565b905085811080611a8557508481115b15611aa357604051633b61151160e11b815260040160405180910390fd5b600080611ab08986611ffb565b91509150611abf610b1a6121b4565b50600d54600360f81b600090815260026020527f3ccfbaf375b4885450e3887dab0704e32e03acfeaf0442976372f6750e322c1f549091611b0b916001600160801b0390911690615c8c565b60008080526002602052600080516020615ec28339815191525491925090611b34908390615c9f565b9050600080611b4285613a1d565b90506000611b4f82613b83565b9050611b5a87613df5565b6008546001600160801b038082168452600954600f0b6020850152600160801b909104166040830152611b8c82613b83565b9250611ba48482611b9d8187615c8c565b9190612e0d565b98505050611bb460008a8961279a565b611bbd84612c93565b60408051888152602081018e90526001600160a01b038b16917f06239653922ac7bea6aa2b19dc486b9361821d37712eb796adfd38d81de278ca910160405180910390a250506001600055509298975050505050505050565b84611c2081612e2b565b6001600160a01b0316336001600160a01b031614611c5157604051632aab8bd360e01b815260040160405180910390fd5b611c5e8686868686612843565b505050505050565b6000818152600e60205260409020546001600160801b031615611c865750565b6000611c906121b4565b9050611cbc7f000000000000000000000000000000000000000000000000000000000000000083615d35565b151580611cc857508181105b15611ce65760405163ecd29e8160e01b815260040160405180910390fd5b808203611cfe576114bf81611cf9612c00565b6121ef565b815b6000818152600e60205260409020546001600160801b0316828203611d2a57611d27612c00565b90505b8015611d3a57610f7784826121ef565b50611d657f000000000000000000000000000000000000000000000000000000000000000082615c9f565b9050611d00565b60008054600114611d8f5760405162461bcd60e51b815260040161070090615c52565b60026000557f0000000000000000000000000000000000000000000000000000000000000000851015611dd55760405163211ddda360e11b815260040160405180910390fd5b6000611ddf612c00565b9050611deb87826121ef565b50611dfa61100c600189612765565b600080600080600080611e0e8c888f613f77565b95509550955095509550955060008d90508d421015611ed7578160106000828254611e399190615c9f565b90915550611e4c90508d888786856140ee565b6000611e787f000000000000000000000000000000000000000000000000000000000000000083615c8c565b6000818152600e6020526040902054909150600160801b9004600f0b611ea48f878b8a878f60016132a3565b6000828152600e6020526040902054611ecb90600f83810b91600160801b9004900b61344b565b611ed48a612c93565b50505b6000611ee4878d8d612a98565b9050808d1115611f075760405163c972651760e01b815260040160405180910390fd5b8d611f13600184612765565b60408051858152602081018590529081018390526001600160a01b038f16907fe8c2c201cc00307ad7ec0d92d7ee5f89a796b4b1134d1672b08939eaf504d68c9060600160405180910390a35060016000559e9d5050505050505050505050505050565b6040516001600160a01b0383166024820152604481018290526114bf90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526142bb565b3415611ff957604051631574f9f360e01b815260040160405180910390fd5b565b60008082156120db576120396001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333087614390565b604051636e553f6560e01b8152600481018590523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f65906044016020604051808303816000875af11580156120a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ca9190615c39565b91506120d4612c00565b90506121ad565b6040516363737ac960e11b8152600481018590526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c6e6f59290602401602060405180830381865afa158015612143573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121679190615c39565b905061219e6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084614390565b8092506121a9612c00565b9150505b9250929050565b60006121e07f000000000000000000000000000000000000000000000000000000000000000042615d35565b6121ea9042615c8c565b905090565b6000828152600e6020526040812080546001600160801b031615158061221457504284115b1561222a57546001600160801b031690506123f7565b61223383612a04565b81546001600160801b0319166001600160801b03919091161781556000600e8161227d7f000000000000000000000000000000000000000000000000000000000000000088615c8c565b815260208101919091526040016000908120546001600160801b031691506002816122a88289612765565b8152602001908152602001600020549050600080821115612304576000806122d384898760006143c8565b9150915080601060008282546122e99190615c9f565b909155506122fd905084600084808d613129565b6001925050505b60006002600061231560018b612765565b815260200190815260200160002054905060008111156123705760008061233f838a8860016143c8565b9150915080601060008282546123559190615c9f565b90915550612369905083600084808e6140ee565b6001935050505b81156123ee5760006123a27f00000000000000000000000000000000000000000000000000000000000000008a615c8c565b6000818152600e6020526040902080546001600160801b03811691829055919250600160801b91829004600f90810b926123e2928492919004900b61344b565b6123eb89612c93565b50505b86955050505050505b92915050565b60008060008061246a61240e61252e565b600854600160801b90046001600160801b0316887f0000000000000000000000000000000000000000000000000000000000000000897f0000000000000000000000000000000000000000000000000000000000000000614496565b925060006124d361247961252e565b600854600160801b90046001600160801b03167f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006144c2565b90506124de816144d3565b6000806124ec89848a61462d565b90925090506124fb8287615c8c565b94506125078186615c9f565b955061251481848a612e0d565b9350612520848a615c8c565b965050505092959194509250565b6008546009546000916121ea916001600160801b0390911690600f0b6146ad565b60006125648383670de0b6b3a7640000612e0d565b9392505050565b600a546001600160801b03166125a6610bc78261259085670de0b6b3a7640000615cc8565b600b546001600160801b031691908a60016146ca565b600b80546001600160801b0319166001600160801b03929092169190911790556125cf87612a04565b600880546000906125ea9084906001600160801b0316615d49565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061261785612a04565b60088054601090612639908490600160801b90046001600160801b0316615cdf565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061266686612a04565b6126709082615d49565b600a80546001600160801b0319166001600160801b0383161790556000848152600e60205260408120805492935091600160801b9004600f0b906126cc6126b78b8961254f565b6126c28b6002615cc8565b610bc79190615c8c565b8354909150819084906010906126ed908490600160801b9004600f0b615d69565b82546001600160801b039182166101009390930a928302919092021990911617905550825461272a90600f84810b91600160801b9004900b61344b565b61273387614744565b612750576040516318846de960e01b815260040160405180910390fd5b61275987612c93565b50505050505050505050565b60006001600160f81b0382111561278f5760405163b7d0949760e01b815260040160405180910390fd5b5060f89190911b1790565b60008381526001602090815260408083206001600160a01b0386168452909152812080548392906127cc908490615c9f565b9091555050600083815260026020526040812080548392906127ef908490615c9f565b909155505060408051848152602081018390526001600160a01b0384169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291015b60405180910390a4505050565b6001600160a01b038416158061286057506001600160a01b038316155b1561287e5760405163f0dd15fd60e01b815260040160405180910390fd5b836001600160a01b0316816001600160a01b031614612942576001600160a01b0380851660009081526003602090815260408083209385168352929052205460ff166129425760008581526004602090815260408083206001600160a01b038089168552908352818420908516845290915290205460001981146129405760008681526004602090815260408083206001600160a01b03808a16855290835281842090861684529091528120805485929061293a908490615c8c565b90915550505b505b60008581526001602090815260408083206001600160a01b038816845290915281208054849290612974908490615c8c565b909155505060008581526001602090815260408083206001600160a01b0387168452909152812080548492906129ab908490615c9f565b909155505060408051868152602081018490526001600160a01b038086169287821692918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a45050505050565b6000600160801b8210612a2a57604051630f0af95160e11b815260040160405180910390fd5b5090565b600080612a3f846301e133806147b6565b9050612a8b612a7b612a59670de0b6b3a7640000866147cb565b612a63888561254f565b612a7590670de0b6b3a7640000615c9f565b906147e0565b612a85888a61254f565b9061254f565b9150505b95945050505050565b60008115612b4057604051635d043b2960e11b8152600481018590526001600160a01b0384811660248301523060448301527f0000000000000000000000000000000000000000000000000000000000000000169063ba087652906064016020604051808303816000875af1158015612b15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b399190615c39565b9050612564565b612b746001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168486611f77565b6040516303d1689d60e11b8152600481018590526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a90602401602060405180830381865afa158015612bdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8f9190615c39565b6040516303d1689d60e11b8152670de0b6b3a764000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a90602401602060405180830381865afa158015612c6f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ea9190615c39565b6002602052600080516020615ec283398151915254600d54600360f81b60009081527f3ccfbaf375b4885450e3887dab0704e32e03acfeaf0442976372f6750e322c1f549091612cee916001600160801b0390911690615c8c565b90506000612cfc8284615c9f565b90506000612d11612d0c86613a1d565b613b83565b90506000612d20858385612e0d565b9050600080612d2e88614837565b905082811115612d4557612d428382615c8c565b91505b6000821180612d52575083155b15612d6357612d63828587896148e3565b5050505050505050565b60008381526001602090815260408083206001600160a01b038616845290915281208054839290612d9f908490615c8c565b909155505060008381526002602052604081208054839290612dc2908490615c8c565b909155505060408051848152602081018390526000916001600160a01b0385169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629101612836565b6000826000190484118302158202612e2457600080fd5b5091020490565b604080513060208083019190915281830193909352815180820383018152606080830184528151918501919091206001600160f81b031960808401527f000000000000000000000000000000000000000000000000000000000000000090911b6bffffffffffffffffffffffff1916608183015260958201527f000000000000000000000000000000000000000000000000000000000000000060b5808301919091528251808303909101815260d5909101909152805191012090565b60008481526004602090815260408083206001600160a01b0385811680865291845282852090881680865290845293829020869055905185815290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050565b6000806000806000806000612f69886149cc565b9050612fd3612f7661252e565b600854600160801b90046001600160801b03168c847f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000614a1d565b909850955093506000612fe761247961252e565b9050612ff2816144d3565b8a8a600080808061300586898988614a8d565b935093509350935080826130199190615c9f565b98506130258285615c8c565b61302f908c615c9f565b9a5061303b8385615c9f565b613045908d615c9f565b9b5050505050505050506000600e60007f00000000000000000000000000000000000000000000000000000000000000008a6130819190615c8c565b815260208101919091526040016000908120546001600160801b031691504289116130c3576000898152600e60205260409020546001600160801b03166130c5565b895b90506130f58b8784848e7f0000000000000000000000000000000000000000000000000000000000000000614b8c565b96506131018387615c8c565b95506131138787878686866000614bde565b9b9f939e50919c509a5098975095505050505050565b600a54600160801b90046001600160801b0316613172610bc78261315585670de0b6b3a7640000615cc8565b600b54600160801b90046001600160801b031691908a60006146ca565b600b80546001600160801b03928316600160801b02921691909117905561319886612a04565b6131a29082615cdf565b600a80546001600160801b03928316600160801b029216919091179055506131c983612a04565b600880546000906131e49084906001600160801b0316615d49565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061321182614c59565b60098054600090613226908490600f0b615d69565b92506101000a8154816001600160801b030219169083600f0b6001600160801b0316021790555061325684612a04565b60088054601090613278908490600160801b90046001600160801b0316615cdf565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505050505050565b60006132cf7f000000000000000000000000000000000000000000000000000000000000000085615c8c565b90506000600260006132e2600188612765565b8152602001908152602001600020549050600060026000613304600289612765565b8152602001908152602001600020549050816000148015613323575080155b15613348576000838152600e6020526040902080546001600160801b03169055612759565b600061338c8b6133588c8961254f565b613363906002615cc8565b8b61336e8c8b61254f565b6133789190615c9f565b6133829190615c8c565b610bc79190615c9f565b905084156133eb576000848152600e6020526040902080548291906010906133bf908490600160801b9004600f0b615d96565b92506101000a8154816001600160801b030219169083600f0b6001600160801b0316021790555061343e565b6000848152600e602052604090208054829190601090613416908490600160801b9004600f0b615d69565b92506101000a8154816001600160801b030219169083600f0b6001600160801b031602179055505b5050505050505050505050565b808213801561345b575060008212155b156134ee57600061346c8282614c97565b6134769084615dc3565b6009549091506134a39061349e908390600160801b90046001600160801b0316600f0b614cad565b614c59565b600980546010906134c5908490600160801b90046001600160801b0316615cdf565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550505050565b8181131561068e57600082126135645761350782614c59565b61351082614c59565b61351a9190615d96565b6009805460109061353c908490600160801b90046001600160801b0316615d49565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505050565b61351a61349e826000614c97565b60008060006135de61358261252e565b600854600160801b90046001600160801b0316887f0000000000000000000000000000000000000000000000000000000000000000897f0000000000000000000000000000000000000000000000000000000000000000614cbc565b9150856135eb838761254f565b111561360a5760405163512095c760e01b815260040160405180910390fd5b600061361761247961252e565b9050613622816144d3565b600061363888670de0b6b3a7640000848a614cdd565b945090915061364990508382615c8c565b6136539085615c8c565b935061369987612a858a6136678789615c8c565b8a6136728d82614dde565b8d7f0000000000000000000000000000000000000000000000000000000000000000614b8c565b9450505093509350939050565b600a546136f090610bc790600160801b90046001600160801b03166136d384670de0b6b3a7640000615cc8565b600b54600160801b90046001600160801b031691908860016146ca565b600b80546001600160801b03928316600160801b029216919091179055600061371884612a04565b60085461372e91906001600160801b0316615cdf565b600880546001600160801b0319166001600160801b038316179055905061375485612a04565b60088054601090613776908490600160801b90046001600160801b0316615d49565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506137a385612a04565b600a80546010906137c5908490600160801b90046001600160801b0316615d49565b82546101009290920a6001600160801b03818102199093169183160217909155600954600854600f9190910b9116121590506138145760405163585fe6df60e11b815260040160405180910390fd5b600061381e6121b4565b6000818152600e6020526040902054909150600160801b9004600f0b61384387612a04565b6000838152600e60205260409020805460109061386b908490600160801b9004600f0b615d96565b82546001600160801b039182166101009390930a9283029190920219909116179055506000828152600e60205260409020546138b590600f83810b91600160801b9004900b61344b565b6138be85614744565b6138db576040516318846de960e01b815260040160405180910390fd5b610a0b85612c93565b60008060006138f287613a1d565b905060006138ff82613b83565b905061391161390c612c00565b614837565b935061391e848a88612e0d565b935061393161392c85615de3565b613df5565b6008546001600160801b038082168452600954600f0b6020850152600160801b909104166040830152600061396583613b83565b90506000613974898385612e0d565b90506139808b8a615dc3565b61398a9082615dc3565b905060008112156139d35760006139ab6139a383615de3565b85908c612e0d565b90506139b78188615c8c565b96506139c281613df5565b6139cd81898d614ded565b60009150505b93505050509550959350505050565b6000806139f1878787866144c2565b9050612a8b613a0582866301e13380614e32565b613a1783670de0b6b3a7640000615c8c565b906147b6565b613a7a60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60408051610160810182526008546001600160801b038082168352600954600f0b6020840152600160801b909104811692820192909252606081018490527f000000000000000000000000000000000000000000000000000000000000000060808201527f000000000000000000000000000000000000000000000000000000000000000060a08201527f000000000000000000000000000000000000000000000000000000000000000060c0820152600a54821660e0820152600b549091610100830191613b499116614e58565b8152600a546001600160801b03600160801b9182900481166020840152600b54604090930192613b7b92900416614e58565b905292915050565b600080613ba383610140015184610120015161254f90919063ffffffff16565b61010084015160e0850151613bb79161254f565b613bc19190615dc3565b90506000613bd7846000015185602001516146ad565b90506000821315613c79576000613c198286604001518760a001518860c00151670de0b6b3a7640000613c0a9190615c8c565b89606001518a60800151614ece565b9150613c2790508184614f51565b90508015613c7357613c60828660400151838860c00151670de0b6b3a7640000613c519190615c8c565b89606001518a60800151614f60565b85518690613c6f908390615c8c565b9052505b50613d37565b6000821215613d3757613c8b82615de3565b91506000613cbf8286604001518760c00151670de0b6b3a7640000613cb09190615c8c565b88606001518960800151614f94565b9150613ccd90508184614f51565b90508015613d1957613d06828660400151838860c00151670de0b6b3a7640000613cf79190615c8c565b89606001518a6080015161501e565b85518690613d15908390615c9f565b9052505b613d238184615c8c565b85518690613d32908390615c9f565b905250505b6000613d66856101000151670de0b6b3a7640000613d559190615c8c565b606087015160e08801519190612e0d565b613d94866101400151670de0b6b3a7640000613d829190615c8c565b60608801516101208901519190612e0d565b613d9e9190615dc3565b90506000818660000151613db29190615dff565b90508560a00151811215613dd95760405163aeeb825d60e01b815260040160405180910390fd5b80865260a0860151613deb9082615c8c565b9695505050505050565b80600003613e005750565b6008546001600160801b03167f0000000000000000000000000000000000000000000000000000000000000000811015613e4d5760405163585fe6df60e11b815260040160405180910390fd5b6000613e598383615dff565b90507f0000000000000000000000000000000000000000000000000000000000000000811215613e9c5760405163585fe6df60e11b815260040160405180910390fd5b613ea581612a04565b600880546001600160801b0319166001600160801b0392909216919091179055600954600090600f0b818112613ee757613ee0838286612e0d565b9150613f07565b613efb613ef382615de3565b849086612e0d565b613f0490615de3565b91505b613f1082614c59565b600980546001600160801b0319166001600160801b03928316179055600854613f5391610bc791600160801b900416613f4987856146ad565b611b9d87876146ad565b600880546001600160801b03928316600160801b0292169190911790555050505050565b6000806000806000806000613f8b886149cc565b9050613ff5613f9861252e565b600854600160801b90046001600160801b03168c847f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000615099565b90985096509350600061400961247961252e565b9050614014816144d3565b6000806140238d85858f614cdd565b965090925090506140348288615c8c565b96506140408183615c9f565b61404a908a615c8c565b9850614056858a615c9f565b9750505050506140da85858584600e60007f00000000000000000000000000000000000000000000000000000000000000008e6140939190615c8c565b81526020810191909152604001600020546001600160801b0316428d116140d15760008d8152600e60205260409020546001600160801b03166140d3565b8d5b6001614bde565b999d939c50919a5098509695509350505050565b600a546001600160801b0316614129610bc78261411385670de0b6b3a7640000615cc8565b600b546001600160801b031691908a60006146ca565b600b80546001600160801b0319166001600160801b039290921691909117905561415286612a04565b61415c9082615cdf565b600a80546001600160801b0319166001600160801b03929092169190911790555061418683612a04565b600880546000906141a19084906001600160801b0316615cdf565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506141ce82614c59565b600980546000906141e3908490600f0b615d96565b92506101000a8154816001600160801b030219169083600f0b6001600160801b0316021790555061421384612a04565b60088054601090614235908490600160801b90046001600160801b0316615d49565b82546101009290920a6001600160801b038181021990931691831602179091556008547f000000000000000000000000000000000000000000000000000000000000000091161090508061429d5750600954600854600f9190910b6001600160801b03909116125b15610f775760405163585fe6df60e11b815260040160405180910390fd5b6000614310826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166150e59092919063ffffffff16565b90508051600014806143315750808060200190518101906143319190615e27565b6114bf5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610700565b6040516001600160a01b0380851660248301528316604482015260648101829052610a219085906323b872dd60e01b90608401611fa3565b6000806143d586866147b6565b91506000614403837f000000000000000000000000000000000000000000000000000000000000000061254f565b905061442f817f000000000000000000000000000000000000000000000000000000000000000061254f565b91508315614452576144418282615c8c565b61444b9084615c8c565b9250614469565b61445c8282615c8c565b6144669084615c9f565b92505b8486101561448c5761447c838787612e0d565b9250614489828787612e0d565b91505b5094509492505050565b60006144b78787876144b088670de0b6b3a7640000615c8c565b87876150fc565b979650505050505050565b6000612a8f82612a75858888612e0d565b6013546001600160801b03600160801b820481169116426145147f000000000000000000000000000000000000000000000000000000000000000084615c9f565b111561451f57505050565b60006012828154811061453457614534615cb2565b60009182526020822001805490925063ffffffff8116916401000000009091046001600160e01b0316906145688342615c8c565b601254909150878202830190600090614582886001615c9f565b61458c9190615d35565b905060405180604001604052804263ffffffff168152602001836001600160e01b0316815250601282815481106145c5576145c5615cb2565b60009182526020918290208351938301516001600160e01b03166401000000000263ffffffff90941693909317920191909155604080518082019091526001600160801b03928316808252429093169101819052600160801b02176013555050505050505050565b60008061467785612a8585817f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a764000061466d818c6147b6565b612a859190615c8c565b91506146a3827f000000000000000000000000000000000000000000000000000000000000000061254f565b9050935093915050565b6000806146ba8385615dc3565b9050600081121561256457600080fd5b6000811561470a576147036146df8487615c9f565b6146e9858761254f565b6146f3888a61254f565b6146fd9190615c9f565b906147cb565b9050612a8f565b82850361471957506000612a8f565b613deb6147268487615c8c565b614730858761254f565b61473a888a61254f565b6146fd9190615c8c565b60006147707f00000000000000000000000000000000000000000000000000000000000000008361254f565b6009546008546147ae916000916001600160801b03600160801b9092048216600f0b9161479e91168761254f565b6147a89190615dc3565b90614c97565b121592915050565b600061256483670de0b6b3a764000084612e0d565b600061256483670de0b6b3a764000084614e32565b6000816000036147f95750670de0b6b3a76400006123f7565b82600003614809575060006123f7565b8160006148158561516f565b905081810261482c670de0b6b3a764000082615e44565b9050613deb81615382565b600954600090819061485990600160801b90046001600160801b0316846147b6565b90506148857f000000000000000000000000000000000000000000000000000000000000000082615c9f565b6008546001600160801b031611156148dd576008547f0000000000000000000000000000000000000000000000000000000000000000906148d09083906001600160801b0316615c8c565b6148da9190615c8c565b91505b50919050565b60008084116148f257826148fd565b6148fd838686612e0d565b90508060000361490d5750610a21565b80858382111561492857839150614925878385612e0d565b90505b61493182612a04565b600d805460009061494c9084906001600160801b0316615d49565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061497981612a04565b600d805460109061499b908490600160801b90046001600160801b0316615d49565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550610a0b8161392c90615de3565b6000806149d76121b4565b90508083116149e75760006149f1565b6149f18184615c8c565b91506148da827f00000000000000000000000000000000000000000000000000000000000000006147b6565b60008080614a3e614a3688670de0b6b3a7640000615c8c565b899087612e0d565b9050614a4a888861254f565b91508115614a8057614a718a8a84614a6a8a670de0b6b3a7640000615c8c565b898961501e565b9250614a7d8382615c9f565b90505b9750975097945050505050565b6000808080614aa486670de0b6b3a7640000615c8c565b9350614ad98786611b9d8b612a85897f000000000000000000000000000000000000000000000000000000000000000061254f565b9350614b05847f000000000000000000000000000000000000000000000000000000000000000061254f565b91506000614b26614b1e89670de0b6b3a7640000615c8c565b8a9088612e0d565b9050614b52817f000000000000000000000000000000000000000000000000000000000000000061254f565b9350614b7e847f000000000000000000000000000000000000000000000000000000000000000061254f565b915050945094509450949050565b600080614ba585614b9d888761550d565b8a9190612e0d565b9050614bb2888486612e0d565b614bbc9082615c9f565b905086811115614bd357614bd08782615c8c565b91505b509695505050505050565b60008060008060008088881015614c3b578615614c0357614c008d898b612e0d565b9c505b614c0e8c898b612e0d565b9b50614c1a8b8d615dc3565b9050614c278b898b612e0d565b9a50614c348a898b612e0d565b9950614c48565b614c458b8d615dc3565b90505b9b9c9a9b999a975050505050505050565b600060016001607f1b03198212801590614c7a575060016001607f1b038213155b612a2a5760405163a5353be560e01b815260040160405180910390fd5b6000818313614ca65781612564565b5090919050565b60008183136148dd5782612564565b60006144b7878787614cd688670de0b6b3a7640000615c8c565b8787614f60565b6000808080614cf486670de0b6b3a7640000615c8c565b9050614d298786611b9d8b612a85867f000000000000000000000000000000000000000000000000000000000000000061254f565b9350614d55847f000000000000000000000000000000000000000000000000000000000000000061254f565b91506000614d6e614b1e89670de0b6b3a7640000615c8c565b9050614d9a817f000000000000000000000000000000000000000000000000000000000000000061254f565b9350614dc6847f000000000000000000000000000000000000000000000000000000000000000061254f565b614dd09084615c9f565b925050509450945094915050565b6000818311614ca65781612564565b6000614dfb612d0c83613a1d565b60008080526002602052600080516020615ec28339815191525491925090614e24908590615c9f565b9050610f77858383876148e3565b6000826000190484118302158202614e4957600080fd5b50910281810615159190040190565b600080670de0b6b3a7640000614e6c6121b4565b614e769190615cc8565b9050808311614e86576000614e90565b614e908184615c8c565b91506148da614ec7670de0b6b3a76400007f0000000000000000000000000000000000000000000000000000000000000000615cc8565b83906147b6565b60008080614edc85856147b6565b90506000614eed82868c8a8d615522565b90506000614f28614f06670de0b6b3a76400008a6147b6565b614f1e614f178b612a758b8f61254f565b869061254f565b612a759085615c8c565b9050614f34898c615c8c565b614f3e8b83615c8c565b945094505050505b965096945050505050565b60008183116148dd5782612564565b600080614f71888888888888615550565b909250905080614bd357604051637ac17d2560e01b815260040160405180910390fd5b60008080614fa285856147b6565b90506000614fb382868b8a8c615522565b90506000614fe8614fcc670de0b6b3a76400008a6147b6565b612a75614fe1670de0b6b3a764000087615c9f565b85906147b6565b90506000614ff682886147b6565b90506150028b82615c8c565b61500c838c615c8c565b95509550505050509550959350505050565b60008061502b84846147b6565b9050600061503c82858b898c615522565b905061504c86612a75898b615c8c565b97506000615073615065670de0b6b3a7640000896147cb565b612a7585613a178d87615c8c565b905061507f81866147b6565b905061508b8a82615c8c565b9a9950505050505050505050565b600080806150b2614a3688670de0b6b3a7640000615c8c565b90508615614a80576150c4888861254f565b9150614a718a8a846150de8a670de0b6b3a7640000615c8c565b8989614f60565b60606150f484846000856155f1565b949350505050565b60008061510984846147b6565b9050600061511a82858b898c615522565b905061513486612a7561512d8a8d615c9f565b879061254f565b9850615140828a61254f565b98506000615163615159670de0b6b3a7640000896147cb565b612a758c85615c8c565b905061508b818a615c8c565b600080821361519157604051636838feed60e11b815260040160405180910390fd5b5060606001600160801b03821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110600190811b90911783811c90911017609f81810383019390931b90921c6c465772b2bbbb5f824b15207a3081018102821d6d0388eaa27412d5aca026815d636e018102821d6d0df99ac502031bf953eff472fdcc018102821d6d13cdffb29d51d99322bdff5f2211018102821d6d0a0f742023def783a307a986912e018102821d6d01920d8043ca89b5239253284e42018102821d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7882018202831d6d0139601a2efabe717e604cbb4894018202831d6d02247f7a7b6594320649aa03aba1018202831d6c8c3f38e95a6b1ff2ab1c3b343619018202831d6d02384773bdf1ac5676facced60901901820290921d6cb9a025d814b29c212b8b1a07cd190102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a550602605f19919091017d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b6000680248ce36a70cb26b3e19821361539d57506000919050565b680755bf798b4a1bf1e582126153c65760405163df92cc9d60e01b815260040160405180910390fd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b60006125648383670de0b6b3a7640000614e32565b600061552e82846147e0565b61554661553f85612a75898961254f565b889061254f565b613deb9190615c9f565b6000808061555e85856147b6565b9050600061556f82868c8a8d615522565b905061557f87612a758a8c615c9f565b98508881101561559757600080935093505050614f46565b60006155bc6155ae670de0b6b3a76400008a6147cb565b612a7585613a178e87615c8c565b90506155c881876147b6565b9050808b11156155df576155dc818c615c8c565b94505b60019350505050965096945050505050565b6060824710156156525760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610700565b600080866001600160a01b0316858760405161566e9190615e72565b60006040518083038185875af1925050503d80600081146156ab576040519150601f19603f3d011682016040523d82523d6000602084013e6156b0565b606091505b50915091506144b7878383876060831561572b578251600003615724576001600160a01b0385163b6157245760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610700565b50816150f4565b6150f483838151156157405781518083602001fd5b8060405162461bcd60e51b81526004016107009190615e8e565b8183823760009101908152919050565b805160208201516001600160e01b031980821692919060048310156157995780818460040360031b1b83161693505b505050919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156157d25781810151838201526020016157ba565b50506000910152565b6000602082840312156157ed57600080fd5b815167ffffffffffffffff8082111561580557600080fd5b818401915084601f83011261581957600080fd5b81518181111561582b5761582b6157a1565b604051601f8201601f19908116603f01168101908382118183101715615853576158536157a1565b8160405282815287602084870101111561586c57600080fd5b6144b78360208301602088016157b7565b6001600160a01b038116811461589257600080fd5b50565b6000602082840312156158a757600080fd5b81356125648161587d565b801515811461589257600080fd5b6000602082840312156158d257600080fd5b8135612564816158b2565b600080600080600060a086880312156158f557600080fd5b85359450602086013593506040860135925060608601356159158161587d565b91506080860135615925816158b2565b809150509295509295909350565b60008083601f84011261594557600080fd5b50813567ffffffffffffffff81111561595d57600080fd5b6020830191508360208260051b85010111156121ad57600080fd5b6000806000806000806080878903121561599157600080fd5b863561599c8161587d565b955060208701356159ac8161587d565b9450604087013567ffffffffffffffff808211156159c957600080fd5b6159d58a838b01615933565b909650945060608901359150808211156159ee57600080fd5b506159fb89828a01615933565b979a9699509497509295939492505050565b60008060008060808587031215615a2357600080fd5b843593506020850135615a358161587d565b92506040850135615a458161587d565b9396929550929360600135925050565b60008060008060808587031215615a6b57600080fd5b84359350602085013592506040850135615a848161587d565b91506060850135615a94816158b2565b939692955090935050565b60008060008060808587031215615ab557600080fd5b843593506020850135615ac78161587d565b9250604085013591506060850135615a948161587d565b60008060408385031215615af157600080fd5b8235615afc8161587d565b91506020830135615b0c816158b2565b809150509250929050565b600080600080600080600060e0888a031215615b3257600080fd5b8735615b3d8161587d565b96506020880135615b4d8161587d565b95506040880135615b5d816158b2565b945060608801359350608088013560ff81168114615b7a57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080600060608486031215615bac57600080fd5b833592506020840135615bbe8161587d565b929592945050506040919091013590565b600080600080600060a08688031215615be757600080fd5b853594506020860135615bf98161587d565b93506040860135615c098161587d565b92506060860135915060808601356159258161587d565b600060208284031215615c3257600080fd5b5035919050565b600060208284031215615c4b57600080fd5b5051919050565b6020808252600a90820152695245454e5452414e435960b01b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156123f7576123f7615c76565b808201808211156123f7576123f7615c76565b634e487b7160e01b600052603260045260246000fd5b80820281158282048414176123f7576123f7615c76565b6001600160801b03828116828216039080821115615cff57615cff615c76565b5092915050565b600060018201615d1857615d18615c76565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082615d4457615d44615d1f565b500690565b6001600160801b03818116838216019080821115615cff57615cff615c76565b600f81810b9083900b0160016001607f1b03811360016001607f1b0319821217156123f7576123f7615c76565b600f82810b9082900b0360016001607f1b0319811260016001607f1b03821317156123f7576123f7615c76565b8181036000831280158383131683831282161715615cff57615cff615c76565b6000600160ff1b8201615df857615df8615c76565b5060000390565b8082018281126000831280158216821582161715615e1f57615e1f615c76565b505092915050565b600060208284031215615e3957600080fd5b8151612564816158b2565b600082615e5357615e53615d1f565b600160ff1b821460001984141615615e6d57615e6d615c76565b500590565b60008251615e848184602087016157b7565b9190910192915050565b6020815260008251806020840152615ead8160408501602087016157b7565b601f01601f1916919091016040019291505056feac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077ba264697066735822122039e3fddb3f9bbe984b4a4b61036b1b5b7db0b3a378e92e49314d4c6b35a9b66864736f6c63430008130033a264697066735822122092145a2de156bec23ea48c0e8036e4531394690138ce968a41085ab92b6f4afe64736f6c63430008130033", + "sourceMap": "910:1538:9:-:0;;;1013:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1051:12:9;;;910:1538;;14:307:153;101:6;154:2;142:9;133:7;129:23;125:32;122:52;;;170:1;167;160:12;122:52;196:16;;-1:-1:-1;;;;;241:31:153;;231:42;;221:70;;287:1;284;277:12;221:70;310:5;14:307;-1:-1:-1;;;14:307:153:o;:::-;910:1538:9;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x60806040523480156200001157600080fd5b50600436106200002e5760003560e01c8063e3420f4f1462000033575b600080fd5b6200004a620000443660046200024e565b62000066565b6040516001600160a01b03909116815260200160405180910390f35b60006060829050868686867f000000000000000000000000000000000000000000000000000000000000000085604051620000a190620000db565b620000b296959493929190620003ce565b604051809103906000f080158015620000cf573d6000803e3d6000fd5b50979650505050505050565b616b0980620004ed83390190565b634e487b7160e01b600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715620001265762000126620000e9565b60405290565b80356001600160a01b03811681146200014457600080fd5b919050565b6000606082840312156200015c57600080fd5b6040516060810181811067ffffffffffffffff82111715620001825762000182620000e9565b80604052508091508235815260208301356020820152604083013560408201525092915050565b600082601f830112620001bb57600080fd5b8135602067ffffffffffffffff80831115620001db57620001db620000e9565b8260051b604051601f19603f83011681018181108482111715620002035762000203620000e9565b6040529384528581018301938381019250878511156200022257600080fd5b83870191505b84821015620002435781358352918301919083019062000228565b979650505050505050565b60008060008060008587036102408112156200026957600080fd5b6101c0808212156200027a57600080fd5b62000284620000ff565b915062000291886200012c565b82526020880135602083015260408801356040830152606088013560608301526080880135608083015260a088013560a083015260c088013560c0830152620002dd60e089016200012c565b60e0830152610100620002f2818a016200012c565b90830152610120620003078a8a830162000149565b81840152506101808801356101408301526101a0880135610160830152819650620003348189016200012c565b955050506101e086013592506200034f61020087016200012c565b915061022086013567ffffffffffffffff8111156200036d57600080fd5b6200037b88828901620001a9565b9150509295509295909350565b600081518084526020808501945080840160005b83811015620003c35781516001600160a01b0316875295820195908201906001016200039c565b509495945050505050565b86516001600160a01b0316815260006102606020890151602084015260408901516040840152606089015160608401526080890151608084015260a089015160a084015260c089015160c084015260e08901516200043760e08501826001600160a01b03169052565b50610100898101516001600160a01b038116858301525050610120898101518051858301526020810151610140860152604081015161016086015250506101408901516101808401526101608901516101a08401526001600160a01b0388166101c0840152866101e0840152620004ba6102008401876001600160a01b03169052565b6001600160a01b03851661022084015280610240840152620004df8184018562000388565b999850505050505050505056fe6102a060405260016000553480156200001757600080fd5b5060405162006b0938038062006b098339810160408190526200003a916200076f565b6001600160a01b03808616608052831660a05260c084905260408051808201825260018152603160f81b6020918201529051879187918791879185918591859185918591859185918591620000f6917f2aef22f9d7df5f9d21c56d14029233f3fdaa91917727e1eb68e504d27072d6cd917fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6914691309101938452602084019290925260408301526001600160a01b0316606082015260800190565b60408051601f19818403018152918152815160209092019190912060e05284516001600160a01b0316610100528401516103e8111592506200014e915050576040516349db44f560e01b815260040160405180910390fd5b60408101516101a05260608101516101c05260a08101516000036200018657604051635428734d60e01b815260040160405180910390fd5b60a081018051610120525160808201511080620001b757508060a001518160800151620001b49190620008bb565b15155b15620001d65760405163253fffcf60e11b815260040160405180910390fd5b60808101516101405260c08101516101605260208101516101805260e0810151601180546001600160a01b0319166001600160a01b03928316179055610100820151166102405261012081015151670de0b6b3a764000010806200024a5750670de0b6b3a764000081610120015160200151115b80620002665750670de0b6b3a764000081610120015160400151115b1562000285576040516322f72cc360e11b815260040160405180910390fd5b61012081018051516101e0528051602001516102005251604001516102205261016001516102605260005b84610140015181101562000330576040805180820190915263ffffffff4281168252600060208301818152601280546001818101835591909352935190516001600160e01b0316640100000000029216919091177fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec34449091015501620002b0565b5050506001600160a01b0388166102805250620003539450506200057692505050565b86602001511462000377576040516355f2a42f60e01b815260040160405180910390fd5b816001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003dc9190620008de565b6001600160a01b031686600001516001600160a01b0316146200041257604051630722152560e11b815260040160405180910390fd5b85516102805160405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562000469573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200048f919062000905565b620004ad576040516340b27c2160e11b815260040160405180910390fd5b60005b815181101562000569576000828281518110620004d157620004d162000929565b60200260200101519050610280516001600160a01b0316816001600160a01b03161480620005135750610100516001600160a01b0316816001600160a01b0316145b15620005325760405163350b944160e11b815260040160405180910390fd5b6001600160a01b03166000908152601460205260409020805460ff191660011790558062000560816200093f565b915050620004b0565b5050505050505062000981565b610280516040516303d1689d60e11b8152670de0b6b3a764000060048201526000916001600160a01b0316906307a2d13a90602401602060405180830381865afa158015620005c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005ef919062000967565b905090565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b0381118282101715620006305762000630620005f4565b60405290565b6001600160a01b03811681146200064c57600080fd5b50565b80516200065c8162000636565b919050565b6000606082840312156200067457600080fd5b604051606081016001600160401b0381118282101715620006995762000699620005f4565b80604052508091508251815260208301516020820152604083015160408201525092915050565b600082601f830112620006d257600080fd5b815160206001600160401b0380831115620006f157620006f1620005f4565b8260051b604051601f19603f83011681018181108482111715620007195762000719620005f4565b6040529384528581018301938381019250878511156200073857600080fd5b83870191505b8482101562000764578151620007548162000636565b835291830191908301906200073e565b979650505050505050565b6000806000806000808688036102608112156200078b57600080fd5b6101c0808212156200079c57600080fd5b620007a66200060a565b9150620007b3896200064f565b82526020890151602083015260408901516040830152606089015160608301526080890151608083015260a089015160a083015260c089015160c0830152620007ff60e08a016200064f565b60e083015261010062000814818b016200064f565b90830152610120620008298b8b830162000661565b81840152506101808901516101408301526101a089015161016083015281975062000856818a016200064f565b965050506101e087015193506200087161020088016200064f565b92506200088261022088016200064f565b6102408801519092506001600160401b03811115620008a057600080fd5b620008ae89828a01620006c0565b9150509295509295509295565b600082620008d957634e487b7160e01b600052601260045260246000fd5b500690565b600060208284031215620008f157600080fd5b8151620008fe8162000636565b9392505050565b6000602082840312156200091857600080fd5b81518015158114620008fe57600080fd5b634e487b7160e01b600052603260045260246000fd5b6000600182016200096057634e487b7160e01b600052601160045260246000fd5b5060010190565b6000602082840312156200097a57600080fd5b5051919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e0516102005161022051610240516102605161028051615eff62000c0a60003960008181612055015281816120f40152818161217601528181612acc01528181612b4d01528181612b8d0152612c20015260006144e60152600081816105590152818161066901528181610cc90152610d2f0152600081816144020152818161467601528181614ad801528181614b5101528181614d280152614d990152600081816130d10152818161366c015281816143d601528181614b250152614d6d01526000818161463201528181614aac0152614cfc01526000818161074101528181610fa801528181611521015281816117c9015281816119af0152611d96015260008181610a9201528181610add01528181610bf101528181613ad701528181613e0501528181613e54015281816142510152818161474201528181614857015261489301526000818161081a01528181610b6001528181611a10015281816124460152818161248e01528181612faf015281816135ba01528181613ab10152613fc8015260008181610ba301528181611a5201528181612424015281816124af01528181612f8d0152818161359801528181613afd0152613fa601526000818161089c01528181610b82015281816110b6015281816115ac01528181611a3101528181611e53015281816122580152818161237d01528181613057015281816132aa01528181614060015281816149f00152614e8b015260008181611c9701528181611d4001526121bb01526000612011015260008181610386015261133e01526000612ea601526000612e69015260006101570152615eff6000f3fe6080604052600436106101405760003560e01c80636f8c3a5b116100b6578063ab033ea91161006f578063ab033ea91461049b578063c23632a7146104bb578063c326a903146104db578063e44808bc146104ee578063ed64bab21461050e578063fa3fcea71461052e57610140565b80636f8c3a5b146103e85780637180c8ca146104085780639032c726146104285780639cd241af14610448578063a179403b14610468578063a22cb4651461047b57610140565b80632002b333116101085780632002b333146102ff5780632787d5951461032057806330adf81f146103405780633644e515146103745780634536ee2f146103a85780634ed2d6ac146103c857610140565b806301681a621461025057806302329a291461027257806306dae82a1461029257806317fad7fc146102bf5780631c0f12b6146102df575b34801561014c57600080fd5b5060003660606000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316858560405161018f929190615742565b600060405180830381855af49150503d80600081146101ca576040519150601f19603f3d011682016040523d82523d6000602084013e6101cf565b606091505b509150915081156101f357604051638bb0a34b60e01b815260040160405180910390fd5b60006101fe82615752565b90506001600160e01b03198116636e64089360e11b1461022057815160208301fd5b815160031981016004840190815292610241918101602001906024016157c3565b80519650602001945050505050f35b34801561025c57600080fd5b5061027061026b36600461587d565b61054e565b005b34801561027e57600080fd5b5061027061028d3660046158a8565b610692565b6102a56102a03660046158c5565b6106db565b604080519283526020830191909152015b60405180910390f35b3480156102cb57600080fd5b506102706102da366004615960565b610960565b3480156102eb57600080fd5b506102706102fa3660046159f5565b610a14565b61031261030d366004615a3d565b610a27565b6040519081526020016102b6565b34801561032c57600080fd5b5061031261033b3660046158a8565b610c7c565b34801561034c57600080fd5b506103127f65619c8664d6db8aae8c236ad19598696159942a4245b23b45565cc18e97367381565b34801561038057600080fd5b506103127f000000000000000000000000000000000000000000000000000000000000000081565b3480156103b457600080fd5b506102a56103c3366004615a3d565b610d60565b3480156103d457600080fd5b506102706103e3366004615a87565b610f30565b3480156103f457600080fd5b506103126104033660046158c5565b610f7e565b34801561041457600080fd5b50610270610423366004615ac6565b6111ec565b34801561043457600080fd5b50610270610443366004615aff565b611264565b34801561045457600080fd5b50610270610463366004615b7f565b6114b3565b6102a56104763660046158c5565b6114c4565b34801561048757600080fd5b50610270610496366004615ac6565b6116bd565b3480156104a757600080fd5b506102706104b636600461587d565b611729565b3480156104c757600080fd5b506102a56104d6366004615a3d565b61179d565b6103126104e93660046158c5565b611954565b3480156104fa57600080fd5b50610270610509366004615bb7565b611c16565b34801561051a57600080fd5b50610270610529366004615c08565b611c66565b34801561053a57600080fd5b506103126105493660046158c5565b611d6c565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906105975750336000908152600f602052604090205460ff16155b156105b4576040516282b42960e81b815260040160405180910390fd5b6001600160a01b03811660009081526014602052604090205460ff166105ed5760405163350b944160e11b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190615c21565b905061068e6001600160a01b0383167f000000000000000000000000000000000000000000000000000000000000000083611f77565b5050565b336000908152600f602052604090205460ff166106c1576040516282b42960e81b815260040160405180910390fd5b600c80549115156101000261ff0019909216919091179055565b6000806000546001146107095760405162461bcd60e51b815260040161070090615c3a565b60405180910390fd5b6002600055600c54610100900460ff1615610737576040516313d0ff5960e31b815260040160405180910390fd5b61073f611fda565b7f00000000000000000000000000000000000000000000000000000000000000008710156107805760405163211ddda360e11b815260040160405180910390fd5b60008061078d8986611ffb565b91509150868110156107b2576040516342af972b60e01b815260040160405180910390fd5b60006107bc6121b4565b90506107c881836121ef565b5060008060006107d886866123fd565b600854919a50929550909350909150610802908390600160801b90046001600160801b0316615c74565b61083f8461080e61252e565b6108189190615c87565b7f00000000000000000000000000000000000000000000000000000000000000009061254f565b111561085e5760405163512095c760e01b815260040160405180910390fd5b868c111561087f5760405163c972651760e01b815260040160405180910390fd5b80601060008282546108919190615c87565b909155506108c190507f000000000000000000000000000000000000000000000000000000000000000085615c87565b97506108d183888488888d61256b565b60006108de60018a612765565b90506108eb818c8a61279a565b60008e9050818c6001600160a01b03167f7b7d51ee23746cf6ef2078de2a5b53073226b516a1c892a1e882c581026bf4b38c848d60405161093f939291909283526020830191909152604082015260600190565b60405180910390a35050505050505050600160005590969095509350505050565b6001600160a01b038616158061097d57506001600160a01b038516155b1561099b5760405163f0dd15fd60e01b815260040160405180910390fd5b8281146109bb5760405163174861a760e31b815260040160405180910390fd5b60005b83811015610a0b57610a038585838181106109db576109db615c9a565b9050602002013588888686868181106109f6576109f6615c9a565b9050602002013533612843565b6001016109be565b50505050505050565b610a218484848433612843565b50505050565b60008054600114610a4a5760405162461bcd60e51b815260040161070090615c3a565b6002600055610a57611fda565b600c5460ff1615610a7b57604051637983c05160e01b815260040160405180910390fd5b600080610a888785611ffb565b9092509050610ab87f00000000000000000000000000000000000000000000000000000000000000006002615cb0565b821015610ad857604051632afb507160e21b815260040160405180910390fd5b610b037f00000000000000000000000000000000000000000000000000000000000000006002615cb0565b610b0d9083615c74565b9250610b20610b1a6121b4565b826121ef565b50600c805460ff19166001179055610b3782612a04565b600880546001600160801b0319166001600160801b0392909216919091179055610bcc610bc7837f0000000000000000000000000000000000000000000000000000000000000000897f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000612a2e565b612a04565b600880546001600160801b03928316600160801b029216919091179055610c156000807f000000000000000000000000000000000000000000000000000000000000000061279a565b610c216000868561279a565b60408051848152602081018990529081018790526001600160a01b038616907f60c26087830ee0ee6d86bdb3a10e19f3fd49af366c77421d7fe4596811d6274e9060600160405180910390a250506001600055949350505050565b60008054600114610c9f5760405162461bcd60e51b815260040161070090615c3a565b60026000908155338152600f602052604090205460ff16158015610cec5750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b8015610d0357506011546001600160a01b03163314155b15610d20576040516282b42960e81b815260040160405180910390fd5b601080546000909155610d54817f000000000000000000000000000000000000000000000000000000000000000085612a98565b60016000559392505050565b600080600054600114610d855760405162461bcd60e51b815260040161070090615c3a565b60026000908155610d94612c00565b9050610da1610b1a6121b4565b50610dab81612c93565b600d548792506001600160801b031680831115610dcf57806001600160801b031692505b82600003610de557600080935093505050610f20565b610df4600360f81b3385612d6d565b600d546001600160801b03600160801b909104811690600090610e1c90869084908616612e0d565b9050610e2785612a04565b610e319084615cc7565b600d80546001600160801b0319166001600160801b0392909216919091179055610e5a81612a04565b600d8054601090610e7c908490600160801b90046001600160801b0316615cc7565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550610eab818989612a98565b955085610eb88a8761254f565b1115610ed75760405163c972651760e01b815260040160405180910390fd5b60408051868152602081018890526001600160a01b038a16917f07cd0949bbc0d60ad35053a0459db413c148f758b7781aaf6b258018d18ad0ac910160405180910390a2505050505b6001600055909590945092505050565b83610f3a81612e2b565b6001600160a01b0316336001600160a01b031614610f6b57604051632aab8bd360e01b815260040160405180910390fd5b610f7785858585612ee8565b5050505050565b60008054600114610fa15760405162461bcd60e51b815260040161070090615c3a565b60026000557f0000000000000000000000000000000000000000000000000000000000000000851015610fe75760405163211ddda360e11b815260040160405180910390fd5b6000610ff1612c00565b9050610ffd87826121ef565b5061101361100c600289612765565b3388612d6d565b6000806000806000806110278c888f612f55565b600854959b50939950919750955093509150611054908790600160801b90046001600160801b0316615c74565b6110608461080e61252e565b111561107f5760405163512095c760e01b815260040160405180910390fd5b8b8d884282111561114157836010600082825461109c9190615c87565b909155506110af9050838a898886613129565b60006110db7f000000000000000000000000000000000000000000000000000000000000000084615c74565b6000818152600e6020526040812054919250600160801b909104600f0b9061110e9086908a908e908d90899089906132a3565b6000828152600e602052604090205461113590600f83810b91600160801b9004900b61344b565b61113e8c612c93565b50505b600061114e898f8f612a98565b90508e8110156111715760405163c972651760e01b815260040160405180910390fd5b61117c600284612765565b8e6001600160a01b03167f39d1403e56c69205ef368007a55ee1304b0f388631dca237a1710d04e3e8950f8584886040516111ca939291909283526020830191909152604082015260600190565b60405180910390a39a5050505050505050505050600160005595945050505050565b6011546001600160a01b03163314611216576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0382166000818152600f6020526040808220805460ff1916851515179055517fa4336c0cb1e245b95ad204faed7e940d6dc999684fd8b5e1ff597a0c4efca8ab9190a25050565b834211156112855760405163f87d927160e01b815260040160405180910390fd5b6001600160a01b0387166112ac5760405163f0dd15fd60e01b815260040160405180910390fd5b6001600160a01b0387811660008181526007602090815260408083205481517f65619c8664d6db8aae8c236ad19598696159942a4245b23b45565cc18e9736738185015280830195909552948b166060850152891515608085015260a084019490945260c08084018990528451808503909101815260e08401909452835193019290922061190160f01b6101008301527f00000000000000000000000000000000000000000000000000000000000000006101028301526101228201526101420160408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156113d8573d6000803e3d6000fd5b505050602060405103519050886001600160a01b0316816001600160a01b03161461141657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0389166000908152600760205260408120805490919061143c90615cee565b909155506001600160a01b038981166000818152600360209081526040808320948d1680845294825291829020805460ff19168c151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050505050505050565b6114bf83838333612ee8565b505050565b6000806000546001146114e95760405162461bcd60e51b815260040161070090615c3a565b6002600055600c54610100900460ff1615611517576040516313d0ff5960e31b815260040160405180910390fd5b61151f611fda565b7f00000000000000000000000000000000000000000000000000000000000000008710156115605760405163211ddda360e11b815260040160405180910390fd5b600061156a612c00565b90508581101561158d576040516342af972b60e01b815260040160405180910390fd5b60006115976121b4565b905060006115a582846121ef565b90506115d17f000000000000000000000000000000000000000000000000000000000000000083615c87565b94506000806115e18c8685613572565b60108054939950919450925082916000906115fd908490615c87565b909155505050848a10156116245760405163c972651760e01b815260040160405180910390fd5b61162e8588611ffb565b505061163c8b82868961369d565b6000611649600288612765565b9050611656818a8e61279a565b60408051888152602081018890529081018d90528c9082906001600160a01b038c16907f851bac68873b7adb346bcf4bff36324c6f322b58f9f0f50c1d3a8568242ca66b9060600160405180910390a3505050505050600160005590969095509350505050565b3360008181526003602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6011546001600160a01b03163314611753576040516282b42960e81b815260040160405180910390fd5b601180546001600160a01b0319166001600160a01b0383169081179091556040517f9d3e522e1e47a2f6009739342b9cc7b252a1888154e843ab55ee1c81745795ab90600090a250565b6000806000546001146117c25760405162461bcd60e51b815260040161070090615c3a565b60026000557f00000000000000000000000000000000000000000000000000000000000000008610156118085760405163211ddda360e11b815260040160405180910390fd5b6000611812612c00565b905061181f610b1a6121b4565b5061182981612c93565b6002602052600080516020615eaa83398151915254600d54600360f81b60009081527f3ccfbaf375b4885450e3887dab0704e32e03acfeaf0442976372f6750e322c1f549091611884916001600160801b0390911690615c74565b905060006118928284615c87565b90506118a06000338c612d6d565b60006118af8b868487876138db565b965090506118c2600360f81b8a8861279a565b6118cd818a8a612a98565b9650868a11156118f05760405163c972651760e01b815260040160405180910390fd5b604080518c8152602081018990529081018790528b906001600160a01b038b16907f59c3a0b60c6ab7deb62e1440c9e72441db6db7dfe514dba8cb18e60c0d896efa9060600160405180910390a25050505050506001600055909590945092505050565b600080546001146119775760405162461bcd60e51b815260040161070090615c3a565b6002600055600c54610100900460ff16156119a5576040516313d0ff5960e31b815260040160405180910390fd5b6119ad611fda565b7f00000000000000000000000000000000000000000000000000000000000000008610156119ee5760405163211ddda360e11b815260040160405180910390fd5b6000611a766119fb61252e565b600854600160801b90046001600160801b03167f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006139d9565b905085811080611a8557508481115b15611aa357604051633b61151160e11b815260040160405180910390fd5b600080611ab08986611ffb565b91509150611abf610b1a6121b4565b50600d54600360f81b600090815260026020527f3ccfbaf375b4885450e3887dab0704e32e03acfeaf0442976372f6750e322c1f549091611b0b916001600160801b0390911690615c74565b60008080526002602052600080516020615eaa8339815191525491925090611b34908390615c87565b9050600080611b4285613a14565b90506000611b4f82613b7a565b9050611b5a87613dec565b6008546001600160801b038082168452600954600f0b6020850152600160801b909104166040830152611b8c82613b7a565b9250611ba48482611b9d8187615c74565b9190612e0d565b98505050611bb460008a8961279a565b611bbd84612c93565b60408051888152602081018e90526001600160a01b038b16917f06239653922ac7bea6aa2b19dc486b9361821d37712eb796adfd38d81de278ca910160405180910390a250506001600055509298975050505050505050565b84611c2081612e2b565b6001600160a01b0316336001600160a01b031614611c5157604051632aab8bd360e01b815260040160405180910390fd5b611c5e8686868686612843565b505050505050565b6000818152600e60205260409020546001600160801b031615611c865750565b6000611c906121b4565b9050611cbc7f000000000000000000000000000000000000000000000000000000000000000083615d1d565b151580611cc857508181105b15611ce65760405163ecd29e8160e01b815260040160405180910390fd5b808203611cfe576114bf81611cf9612c00565b6121ef565b815b6000818152600e60205260409020546001600160801b0316828203611d2a57611d27612c00565b90505b8015611d3a57610f7784826121ef565b50611d657f000000000000000000000000000000000000000000000000000000000000000082615c87565b9050611d00565b60008054600114611d8f5760405162461bcd60e51b815260040161070090615c3a565b60026000557f0000000000000000000000000000000000000000000000000000000000000000851015611dd55760405163211ddda360e11b815260040160405180910390fd5b6000611ddf612c00565b9050611deb87826121ef565b50611dfa61100c600189612765565b600080600080600080611e0e8c888f613f6e565b95509550955095509550955060008d90508d421015611ed7578160106000828254611e399190615c87565b90915550611e4c90508d888786856140e5565b6000611e787f000000000000000000000000000000000000000000000000000000000000000083615c74565b6000818152600e6020526040902054909150600160801b9004600f0b611ea48f878b8a878f60016132a3565b6000828152600e6020526040902054611ecb90600f83810b91600160801b9004900b61344b565b611ed48a612c93565b50505b6000611ee4878d8d612a98565b9050808d1115611f075760405163c972651760e01b815260040160405180910390fd5b8d611f13600184612765565b60408051858152602081018590529081018390526001600160a01b038f16907fe8c2c201cc00307ad7ec0d92d7ee5f89a796b4b1134d1672b08939eaf504d68c9060600160405180910390a35060016000559e9d5050505050505050505050505050565b6040516001600160a01b0383166024820152604481018290526114bf90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526142b2565b3415611ff957604051631574f9f360e01b815260040160405180910390fd5b565b60008082156120db576120396001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333087614387565b604051636e553f6560e01b8152600481018590523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f65906044016020604051808303816000875af11580156120a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ca9190615c21565b91506120d4612c00565b90506121ad565b6040516363737ac960e11b8152600481018590526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c6e6f59290602401602060405180830381865afa158015612143573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121679190615c21565b905061219e6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084614387565b8092506121a9612c00565b9150505b9250929050565b60006121e07f000000000000000000000000000000000000000000000000000000000000000042615d1d565b6121ea9042615c74565b905090565b6000828152600e6020526040812080546001600160801b031615158061221457504284115b1561222a57546001600160801b031690506123f7565b61223383612a04565b81546001600160801b0319166001600160801b03919091161781556000600e8161227d7f000000000000000000000000000000000000000000000000000000000000000088615c74565b815260208101919091526040016000908120546001600160801b031691506002816122a88289612765565b8152602001908152602001600020549050600080821115612304576000806122d384898760006143bf565b9150915080601060008282546122e99190615c87565b909155506122fd905084600084808d613129565b6001925050505b60006002600061231560018b612765565b815260200190815260200160002054905060008111156123705760008061233f838a8860016143bf565b9150915080601060008282546123559190615c87565b90915550612369905083600084808e6140e5565b6001935050505b81156123ee5760006123a27f00000000000000000000000000000000000000000000000000000000000000008a615c74565b6000818152600e6020526040902080546001600160801b03811691829055919250600160801b91829004600f90810b926123e2928492919004900b61344b565b6123eb89612c93565b50505b86955050505050505b92915050565b60008060008061246a61240e61252e565b600854600160801b90046001600160801b0316887f0000000000000000000000000000000000000000000000000000000000000000897f000000000000000000000000000000000000000000000000000000000000000061448d565b925060006124d361247961252e565b600854600160801b90046001600160801b03167f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006144b9565b90506124de816144ca565b6000806124ec89848a614624565b90925090506124fb8287615c74565b94506125078186615c87565b955061251481848a612e0d565b9350612520848a615c74565b965050505092959194509250565b6008546009546000916121ea916001600160801b0390911690600f0b6146a4565b60006125648383670de0b6b3a7640000612e0d565b9392505050565b600a546001600160801b03166125a6610bc78261259085670de0b6b3a7640000615cb0565b600b546001600160801b031691908a60016146c1565b600b80546001600160801b0319166001600160801b03929092169190911790556125cf87612a04565b600880546000906125ea9084906001600160801b0316615d31565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061261785612a04565b60088054601090612639908490600160801b90046001600160801b0316615cc7565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061266686612a04565b6126709082615d31565b600a80546001600160801b0319166001600160801b0383161790556000848152600e60205260408120805492935091600160801b9004600f0b906126cc6126b78b8961254f565b6126c28b6002615cb0565b610bc79190615c74565b8354909150819084906010906126ed908490600160801b9004600f0b615d51565b82546001600160801b039182166101009390930a928302919092021990911617905550825461272a90600f84810b91600160801b9004900b61344b565b6127338761473b565b612750576040516318846de960e01b815260040160405180910390fd5b61275987612c93565b50505050505050505050565b60006001600160f81b0382111561278f5760405163b7d0949760e01b815260040160405180910390fd5b5060f89190911b1790565b60008381526001602090815260408083206001600160a01b0386168452909152812080548392906127cc908490615c87565b9091555050600083815260026020526040812080548392906127ef908490615c87565b909155505060408051848152602081018390526001600160a01b0384169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291015b60405180910390a4505050565b6001600160a01b038416158061286057506001600160a01b038316155b1561287e5760405163f0dd15fd60e01b815260040160405180910390fd5b836001600160a01b0316816001600160a01b031614612942576001600160a01b0380851660009081526003602090815260408083209385168352929052205460ff166129425760008581526004602090815260408083206001600160a01b038089168552908352818420908516845290915290205460001981146129405760008681526004602090815260408083206001600160a01b03808a16855290835281842090861684529091528120805485929061293a908490615c74565b90915550505b505b60008581526001602090815260408083206001600160a01b038816845290915281208054849290612974908490615c74565b909155505060008581526001602090815260408083206001600160a01b0387168452909152812080548492906129ab908490615c87565b909155505060408051868152602081018490526001600160a01b038086169287821692918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a45050505050565b6000600160801b8210612a2a57604051630f0af95160e11b815260040160405180910390fd5b5090565b600080612a3f846301e133806147ad565b9050612a8b612a7b612a59670de0b6b3a7640000866147c2565b612a63888561254f565b612a7590670de0b6b3a7640000615c87565b906147d7565b612a85888a61254f565b9061254f565b9150505b95945050505050565b60008115612b4057604051635d043b2960e11b8152600481018590526001600160a01b0384811660248301523060448301527f0000000000000000000000000000000000000000000000000000000000000000169063ba087652906064016020604051808303816000875af1158015612b15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b399190615c21565b9050612564565b612b746001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168486611f77565b6040516303d1689d60e11b8152600481018590526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a90602401602060405180830381865afa158015612bdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8f9190615c21565b6040516303d1689d60e11b8152670de0b6b3a764000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a90602401602060405180830381865afa158015612c6f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ea9190615c21565b6002602052600080516020615eaa83398151915254600d54600360f81b60009081527f3ccfbaf375b4885450e3887dab0704e32e03acfeaf0442976372f6750e322c1f549091612cee916001600160801b0390911690615c74565b90506000612cfc8284615c87565b90506000612d11612d0c86613a14565b613b7a565b90506000612d20858385612e0d565b9050600080612d2e8861482e565b905082811115612d4557612d428382615c74565b91505b6000821180612d52575083155b15612d6357612d63828587896148da565b5050505050505050565b60008381526001602090815260408083206001600160a01b038616845290915281208054839290612d9f908490615c74565b909155505060008381526002602052604081208054839290612dc2908490615c74565b909155505060408051848152602081018390526000916001600160a01b0385169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629101612836565b6000826000190484118302158202612e2457600080fd5b5091020490565b604080513060208083019190915281830193909352815180820383018152606080830184528151918501919091206001600160f81b031960808401527f000000000000000000000000000000000000000000000000000000000000000090911b6bffffffffffffffffffffffff1916608183015260958201527f000000000000000000000000000000000000000000000000000000000000000060b5808301919091528251808303909101815260d5909101909152805191012090565b60008481526004602090815260408083206001600160a01b0385811680865291845282852090881680865290845293829020869055905185815290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050565b6000806000806000806000612f69886149c3565b9050612fd3612f7661252e565b600854600160801b90046001600160801b03168c847f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000614a14565b909850955093506000612fe761247961252e565b9050612ff2816144ca565b8a8a600080808061300586898988614a84565b935093509350935080826130199190615c87565b98506130258285615c74565b61302f908c615c87565b9a5061303b8385615c87565b613045908d615c87565b9b5050505050505050506000600e60007f00000000000000000000000000000000000000000000000000000000000000008a6130819190615c74565b815260208101919091526040016000908120546001600160801b031691504289116130c3576000898152600e60205260409020546001600160801b03166130c5565b895b90506130f58b8784848e7f0000000000000000000000000000000000000000000000000000000000000000614b83565b96506131018387615c74565b95506131138787878686866000614bd5565b9b9f939e50919c509a5098975095505050505050565b600a54600160801b90046001600160801b0316613172610bc78261315585670de0b6b3a7640000615cb0565b600b54600160801b90046001600160801b031691908a60006146c1565b600b80546001600160801b03928316600160801b02921691909117905561319886612a04565b6131a29082615cc7565b600a80546001600160801b03928316600160801b029216919091179055506131c983612a04565b600880546000906131e49084906001600160801b0316615d31565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061321182614c50565b60098054600090613226908490600f0b615d51565b92506101000a8154816001600160801b030219169083600f0b6001600160801b0316021790555061325684612a04565b60088054601090613278908490600160801b90046001600160801b0316615cc7565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505050505050565b60006132cf7f000000000000000000000000000000000000000000000000000000000000000085615c74565b90506000600260006132e2600188612765565b8152602001908152602001600020549050600060026000613304600289612765565b8152602001908152602001600020549050816000148015613323575080155b15613348576000838152600e6020526040902080546001600160801b03169055612759565b600061338c8b6133588c8961254f565b613363906002615cb0565b8b61336e8c8b61254f565b6133789190615c87565b6133829190615c74565b610bc79190615c87565b905084156133eb576000848152600e6020526040902080548291906010906133bf908490600160801b9004600f0b615d7e565b92506101000a8154816001600160801b030219169083600f0b6001600160801b0316021790555061343e565b6000848152600e602052604090208054829190601090613416908490600160801b9004600f0b615d51565b92506101000a8154816001600160801b030219169083600f0b6001600160801b031602179055505b5050505050505050505050565b808213801561345b575060008212155b156134ee57600061346c8282614c8e565b6134769084615dab565b6009549091506134a39061349e908390600160801b90046001600160801b0316600f0b614ca4565b614c50565b600980546010906134c5908490600160801b90046001600160801b0316615cc7565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550505050565b8181131561068e57600082126135645761350782614c50565b61351082614c50565b61351a9190615d7e565b6009805460109061353c908490600160801b90046001600160801b0316615d31565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505050565b61351a61349e826000614c8e565b60008060006135de61358261252e565b600854600160801b90046001600160801b0316887f0000000000000000000000000000000000000000000000000000000000000000897f0000000000000000000000000000000000000000000000000000000000000000614cb3565b9150856135eb838761254f565b111561360a5760405163512095c760e01b815260040160405180910390fd5b600061361761247961252e565b9050613622816144ca565b600061363888670de0b6b3a7640000848a614cd4565b945090915061364990508382615c74565b6136539085615c74565b935061369087612a858a6136678789615c74565b8a8c8d7f0000000000000000000000000000000000000000000000000000000000000000614b83565b9450505093509350939050565b600a546136e790610bc790600160801b90046001600160801b03166136ca84670de0b6b3a7640000615cb0565b600b54600160801b90046001600160801b031691908860016146c1565b600b80546001600160801b03928316600160801b029216919091179055600061370f84612a04565b60085461372591906001600160801b0316615cc7565b600880546001600160801b0319166001600160801b038316179055905061374b85612a04565b6008805460109061376d908490600160801b90046001600160801b0316615d31565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061379a85612a04565b600a80546010906137bc908490600160801b90046001600160801b0316615d31565b82546101009290920a6001600160801b03818102199093169183160217909155600954600854600f9190910b91161215905061380b5760405163585fe6df60e11b815260040160405180910390fd5b60006138156121b4565b6000818152600e6020526040902054909150600160801b9004600f0b61383a87612a04565b6000838152600e602052604090208054601090613862908490600160801b9004600f0b615d7e565b82546001600160801b039182166101009390930a9283029190920219909116179055506000828152600e60205260409020546138ac90600f83810b91600160801b9004900b61344b565b6138b58561473b565b6138d2576040516318846de960e01b815260040160405180910390fd5b610a0b85612c93565b60008060006138e987613a14565b905060006138f682613b7a565b9050613908613903612c00565b61482e565b9350613915848a88612e0d565b935061392861392385615dcb565b613dec565b6008546001600160801b038082168452600954600f0b6020850152600160801b909104166040830152600061395c83613b7a565b9050600061396b898385612e0d565b90506139778b8a615dab565b6139819082615dab565b905060008112156139ca5760006139a261399a83615dcb565b85908c612e0d565b90506139ae8188615c74565b96506139b981613dec565b6139c481898d614dd5565b60009150505b93505050509550959350505050565b6000806139e8878787866144b9565b9050612a8b6139fc82866301e13380614e1a565b613a0e83670de0b6b3a7640000615c74565b906147ad565b613a7160405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60408051610160810182526008546001600160801b038082168352600954600f0b6020840152600160801b909104811692820192909252606081018490527f000000000000000000000000000000000000000000000000000000000000000060808201527f000000000000000000000000000000000000000000000000000000000000000060a08201527f000000000000000000000000000000000000000000000000000000000000000060c0820152600a54821660e0820152600b549091610100830191613b409116614e40565b8152600a546001600160801b03600160801b9182900481166020840152600b54604090930192613b7292900416614e40565b905292915050565b600080613b9a83610140015184610120015161254f90919063ffffffff16565b61010084015160e0850151613bae9161254f565b613bb89190615dab565b90506000613bce846000015185602001516146a4565b90506000821315613c70576000613c108286604001518760a001518860c00151670de0b6b3a7640000613c019190615c74565b89606001518a60800151614eb6565b9150613c1e90508184614f39565b90508015613c6a57613c57828660400151838860c00151670de0b6b3a7640000613c489190615c74565b89606001518a60800151614f48565b85518690613c66908390615c74565b9052505b50613d2e565b6000821215613d2e57613c8282615dcb565b91506000613cb68286604001518760c00151670de0b6b3a7640000613ca79190615c74565b88606001518960800151614f7c565b9150613cc490508184614f39565b90508015613d1057613cfd828660400151838860c00151670de0b6b3a7640000613cee9190615c74565b89606001518a60800151615006565b85518690613d0c908390615c87565b9052505b613d1a8184615c74565b85518690613d29908390615c87565b905250505b6000613d5d856101000151670de0b6b3a7640000613d4c9190615c74565b606087015160e08801519190612e0d565b613d8b866101400151670de0b6b3a7640000613d799190615c74565b60608801516101208901519190612e0d565b613d959190615dab565b90506000818660000151613da99190615de7565b90508560a00151811215613dd05760405163aeeb825d60e01b815260040160405180910390fd5b80865260a0860151613de29082615c74565b9695505050505050565b80600003613df75750565b6008546001600160801b03167f0000000000000000000000000000000000000000000000000000000000000000811015613e445760405163585fe6df60e11b815260040160405180910390fd5b6000613e508383615de7565b90507f0000000000000000000000000000000000000000000000000000000000000000811215613e935760405163585fe6df60e11b815260040160405180910390fd5b613e9c81612a04565b600880546001600160801b0319166001600160801b0392909216919091179055600954600090600f0b818112613ede57613ed7838286612e0d565b9150613efe565b613ef2613eea82615dcb565b849086612e0d565b613efb90615dcb565b91505b613f0782614c50565b600980546001600160801b0319166001600160801b03928316179055600854613f4a91610bc791600160801b900416613f4087856146a4565b611b9d87876146a4565b600880546001600160801b03928316600160801b0292169190911790555050505050565b6000806000806000806000613f82886149c3565b9050613fec613f8f61252e565b600854600160801b90046001600160801b03168c847f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000615081565b90985096509350600061400061247961252e565b905061400b816144ca565b60008061401a8d85858f614cd4565b9650909250905061402b8288615c74565b96506140378183615c87565b614041908a615c74565b985061404d858a615c87565b9750505050506140d185858584600e60007f00000000000000000000000000000000000000000000000000000000000000008e61408a9190615c74565b81526020810191909152604001600020546001600160801b0316428d116140c85760008d8152600e60205260409020546001600160801b03166140ca565b8d5b6001614bd5565b999d939c50919a5098509695509350505050565b600a546001600160801b0316614120610bc78261410a85670de0b6b3a7640000615cb0565b600b546001600160801b031691908a60006146c1565b600b80546001600160801b0319166001600160801b039290921691909117905561414986612a04565b6141539082615cc7565b600a80546001600160801b0319166001600160801b03929092169190911790555061417d83612a04565b600880546000906141989084906001600160801b0316615cc7565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506141c582614c50565b600980546000906141da908490600f0b615d7e565b92506101000a8154816001600160801b030219169083600f0b6001600160801b0316021790555061420a84612a04565b6008805460109061422c908490600160801b90046001600160801b0316615d31565b82546101009290920a6001600160801b038181021990931691831602179091556008547f00000000000000000000000000000000000000000000000000000000000000009116109050806142945750600954600854600f9190910b6001600160801b03909116125b15610f775760405163585fe6df60e11b815260040160405180910390fd5b6000614307826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166150cd9092919063ffffffff16565b90508051600014806143285750808060200190518101906143289190615e0f565b6114bf5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610700565b6040516001600160a01b0380851660248301528316604482015260648101829052610a219085906323b872dd60e01b90608401611fa3565b6000806143cc86866147ad565b915060006143fa837f000000000000000000000000000000000000000000000000000000000000000061254f565b9050614426817f000000000000000000000000000000000000000000000000000000000000000061254f565b91508315614449576144388282615c74565b6144429084615c74565b9250614460565b6144538282615c74565b61445d9084615c87565b92505b8486101561448357614473838787612e0d565b9250614480828787612e0d565b91505b5094509492505050565b60006144ae8787876144a788670de0b6b3a7640000615c74565b87876150e4565b979650505050505050565b6000612a8f82612a75858888612e0d565b6013546001600160801b03600160801b8204811691164261450b7f000000000000000000000000000000000000000000000000000000000000000084615c87565b111561451657505050565b60006012828154811061452b5761452b615c9a565b60009182526020822001805490925063ffffffff8116916401000000009091046001600160e01b03169061455f8342615c74565b601254909150878202830190600090614579886001615c87565b6145839190615d1d565b905060405180604001604052804263ffffffff168152602001836001600160e01b0316815250601282815481106145bc576145bc615c9a565b60009182526020918290208351938301516001600160e01b03166401000000000263ffffffff90941693909317920191909155604080518082019091526001600160801b03928316808252429093169101819052600160801b02176013555050505050505050565b60008061466e85612a8585817f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a7640000614664818c6147ad565b612a859190615c74565b915061469a827f000000000000000000000000000000000000000000000000000000000000000061254f565b9050935093915050565b6000806146b18385615dab565b9050600081121561256457600080fd5b60008115614701576146fa6146d68487615c87565b6146e0858761254f565b6146ea888a61254f565b6146f49190615c87565b906147c2565b9050612a8f565b82850361471057506000612a8f565b613de261471d8487615c74565b614727858761254f565b614731888a61254f565b6146f49190615c74565b60006147677f00000000000000000000000000000000000000000000000000000000000000008361254f565b6009546008546147a5916000916001600160801b03600160801b9092048216600f0b9161479591168761254f565b61479f9190615dab565b90614c8e565b121592915050565b600061256483670de0b6b3a764000084612e0d565b600061256483670de0b6b3a764000084614e1a565b6000816000036147f05750670de0b6b3a76400006123f7565b82600003614800575060006123f7565b81600061480c85615157565b9050818102614823670de0b6b3a764000082615e2c565b9050613de28161536a565b600954600090819061485090600160801b90046001600160801b0316846147ad565b905061487c7f000000000000000000000000000000000000000000000000000000000000000082615c87565b6008546001600160801b031611156148d4576008547f0000000000000000000000000000000000000000000000000000000000000000906148c79083906001600160801b0316615c74565b6148d19190615c74565b91505b50919050565b60008084116148e957826148f4565b6148f4838686612e0d565b9050806000036149045750610a21565b80858382111561491f5783915061491c878385612e0d565b90505b61492882612a04565b600d80546000906149439084906001600160801b0316615d31565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061497081612a04565b600d8054601090614992908490600160801b90046001600160801b0316615d31565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550610a0b8161392390615dcb565b6000806149ce6121b4565b90508083116149de5760006149e8565b6149e88184615c74565b91506148d1827f00000000000000000000000000000000000000000000000000000000000000006147ad565b60008080614a35614a2d88670de0b6b3a7640000615c74565b899087612e0d565b9050614a41888861254f565b91508115614a7757614a688a8a84614a618a670de0b6b3a7640000615c74565b8989615006565b9250614a748382615c87565b90505b9750975097945050505050565b6000808080614a9b86670de0b6b3a7640000615c74565b9350614ad08786611b9d8b612a85897f000000000000000000000000000000000000000000000000000000000000000061254f565b9350614afc847f000000000000000000000000000000000000000000000000000000000000000061254f565b91506000614b1d614b1589670de0b6b3a7640000615c74565b8a9088612e0d565b9050614b49817f000000000000000000000000000000000000000000000000000000000000000061254f565b9350614b75847f000000000000000000000000000000000000000000000000000000000000000061254f565b915050945094509450949050565b600080614b9c85614b9488876154f5565b8a9190612e0d565b9050614ba9888486612e0d565b614bb39082615c87565b905086811115614bca57614bc78782615c74565b91505b509695505050505050565b60008060008060008088881015614c32578615614bfa57614bf78d898b612e0d565b9c505b614c058c898b612e0d565b9b50614c118b8d615dab565b9050614c1e8b898b612e0d565b9a50614c2b8a898b612e0d565b9950614c3f565b614c3c8b8d615dab565b90505b9b9c9a9b999a975050505050505050565b600060016001607f1b03198212801590614c71575060016001607f1b038213155b612a2a5760405163a5353be560e01b815260040160405180910390fd5b6000818313614c9d5781612564565b5090919050565b60008183136148d45782612564565b60006144ae878787614ccd88670de0b6b3a7640000615c74565b8787614f48565b6000808080614ceb86670de0b6b3a7640000615c74565b9050614d208786611b9d8b612a85867f000000000000000000000000000000000000000000000000000000000000000061254f565b9350614d4c847f000000000000000000000000000000000000000000000000000000000000000061254f565b91506000614d65614b1589670de0b6b3a7640000615c74565b9050614d91817f000000000000000000000000000000000000000000000000000000000000000061254f565b9350614dbd847f000000000000000000000000000000000000000000000000000000000000000061254f565b614dc79084615c87565b925050509450945094915050565b6000614de3612d0c83613a14565b60008080526002602052600080516020615eaa8339815191525491925090614e0c908590615c87565b9050610f77858383876148da565b6000826000190484118302158202614e3157600080fd5b50910281810615159190040190565b600080670de0b6b3a7640000614e546121b4565b614e5e9190615cb0565b9050808311614e6e576000614e78565b614e788184615c74565b91506148d1614eaf670de0b6b3a76400007f0000000000000000000000000000000000000000000000000000000000000000615cb0565b83906147ad565b60008080614ec485856147ad565b90506000614ed582868c8a8d61550a565b90506000614f10614eee670de0b6b3a76400008a6147ad565b614f06614eff8b612a758b8f61254f565b869061254f565b612a759085615c74565b9050614f1c898c615c74565b614f268b83615c74565b945094505050505b965096945050505050565b60008183116148d45782612564565b600080614f59888888888888615538565b909250905080614bca57604051637ac17d2560e01b815260040160405180910390fd5b60008080614f8a85856147ad565b90506000614f9b82868b8a8c61550a565b90506000614fd0614fb4670de0b6b3a76400008a6147ad565b612a75614fc9670de0b6b3a764000087615c87565b85906147ad565b90506000614fde82886147ad565b9050614fea8b82615c74565b614ff4838c615c74565b95509550505050509550959350505050565b60008061501384846147ad565b9050600061502482858b898c61550a565b905061503486612a75898b615c74565b9750600061505b61504d670de0b6b3a7640000896147c2565b612a7585613a0e8d87615c74565b905061506781866147ad565b90506150738a82615c74565b9a9950505050505050505050565b6000808061509a614a2d88670de0b6b3a7640000615c74565b90508615614a77576150ac888861254f565b9150614a688a8a846150c68a670de0b6b3a7640000615c74565b8989614f48565b60606150dc84846000856155d9565b949350505050565b6000806150f184846147ad565b9050600061510282858b898c61550a565b905061511c86612a756151158a8d615c87565b879061254f565b9850615128828a61254f565b9850600061514b615141670de0b6b3a7640000896147c2565b612a758c85615c74565b9050615073818a615c74565b600080821361517957604051636838feed60e11b815260040160405180910390fd5b5060606001600160801b03821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110600190811b90911783811c90911017609f81810383019390931b90921c6c465772b2bbbb5f824b15207a3081018102821d6d0388eaa27412d5aca026815d636e018102821d6d0df99ac502031bf953eff472fdcc018102821d6d13cdffb29d51d99322bdff5f2211018102821d6d0a0f742023def783a307a986912e018102821d6d01920d8043ca89b5239253284e42018102821d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7882018202831d6d0139601a2efabe717e604cbb4894018202831d6d02247f7a7b6594320649aa03aba1018202831d6c8c3f38e95a6b1ff2ab1c3b343619018202831d6d02384773bdf1ac5676facced60901901820290921d6cb9a025d814b29c212b8b1a07cd190102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a550602605f19919091017d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b6000680248ce36a70cb26b3e19821361538557506000919050565b680755bf798b4a1bf1e582126153ae5760405163df92cc9d60e01b815260040160405180910390fd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b60006125648383670de0b6b3a7640000614e1a565b600061551682846147d7565b61552e61552785612a75898961254f565b889061254f565b613de29190615c87565b6000808061554685856147ad565b9050600061555782868c8a8d61550a565b905061556787612a758a8c615c87565b98508881101561557f57600080935093505050614f2e565b60006155a4615596670de0b6b3a76400008a6147c2565b612a7585613a0e8e87615c74565b90506155b081876147ad565b9050808b11156155c7576155c4818c615c74565b94505b60019350505050965096945050505050565b60608247101561563a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610700565b600080866001600160a01b031685876040516156569190615e5a565b60006040518083038185875af1925050503d8060008114615693576040519150601f19603f3d011682016040523d82523d6000602084013e615698565b606091505b50915091506144ae878383876060831561571357825160000361570c576001600160a01b0385163b61570c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610700565b50816150dc565b6150dc83838151156157285781518083602001fd5b8060405162461bcd60e51b81526004016107009190615e76565b8183823760009101908152919050565b805160208201516001600160e01b031980821692919060048310156157815780818460040360031b1b83161693505b505050919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156157ba5781810151838201526020016157a2565b50506000910152565b6000602082840312156157d557600080fd5b815167ffffffffffffffff808211156157ed57600080fd5b818401915084601f83011261580157600080fd5b81518181111561581357615813615789565b604051601f8201601f19908116603f0116810190838211818310171561583b5761583b615789565b8160405282815287602084870101111561585457600080fd5b6144ae83602083016020880161579f565b6001600160a01b038116811461587a57600080fd5b50565b60006020828403121561588f57600080fd5b813561256481615865565b801515811461587a57600080fd5b6000602082840312156158ba57600080fd5b81356125648161589a565b600080600080600060a086880312156158dd57600080fd5b85359450602086013593506040860135925060608601356158fd81615865565b9150608086013561590d8161589a565b809150509295509295909350565b60008083601f84011261592d57600080fd5b50813567ffffffffffffffff81111561594557600080fd5b6020830191508360208260051b85010111156121ad57600080fd5b6000806000806000806080878903121561597957600080fd5b863561598481615865565b9550602087013561599481615865565b9450604087013567ffffffffffffffff808211156159b157600080fd5b6159bd8a838b0161591b565b909650945060608901359150808211156159d657600080fd5b506159e389828a0161591b565b979a9699509497509295939492505050565b60008060008060808587031215615a0b57600080fd5b843593506020850135615a1d81615865565b92506040850135615a2d81615865565b9396929550929360600135925050565b60008060008060808587031215615a5357600080fd5b84359350602085013592506040850135615a6c81615865565b91506060850135615a7c8161589a565b939692955090935050565b60008060008060808587031215615a9d57600080fd5b843593506020850135615aaf81615865565b9250604085013591506060850135615a7c81615865565b60008060408385031215615ad957600080fd5b8235615ae481615865565b91506020830135615af48161589a565b809150509250929050565b600080600080600080600060e0888a031215615b1a57600080fd5b8735615b2581615865565b96506020880135615b3581615865565b95506040880135615b458161589a565b945060608801359350608088013560ff81168114615b6257600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080600060608486031215615b9457600080fd5b833592506020840135615ba681615865565b929592945050506040919091013590565b600080600080600060a08688031215615bcf57600080fd5b853594506020860135615be181615865565b93506040860135615bf181615865565b925060608601359150608086013561590d81615865565b600060208284031215615c1a57600080fd5b5035919050565b600060208284031215615c3357600080fd5b5051919050565b6020808252600a90820152695245454e5452414e435960b01b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156123f7576123f7615c5e565b808201808211156123f7576123f7615c5e565b634e487b7160e01b600052603260045260246000fd5b80820281158282048414176123f7576123f7615c5e565b6001600160801b03828116828216039080821115615ce757615ce7615c5e565b5092915050565b600060018201615d0057615d00615c5e565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082615d2c57615d2c615d07565b500690565b6001600160801b03818116838216019080821115615ce757615ce7615c5e565b600f81810b9083900b0160016001607f1b03811360016001607f1b0319821217156123f7576123f7615c5e565b600f82810b9082900b0360016001607f1b0319811260016001607f1b03821317156123f7576123f7615c5e565b8181036000831280158383131683831282161715615ce757615ce7615c5e565b6000600160ff1b8201615de057615de0615c5e565b5060000390565b8082018281126000831280158216821582161715615e0757615e07615c5e565b505092915050565b600060208284031215615e2157600080fd5b81516125648161589a565b600082615e3b57615e3b615d07565b600160ff1b821460001984141615615e5557615e55615c5e565b500590565b60008251615e6c81846020870161579f565b9190910192915050565b6020815260008251806020840152615e9581604085016020870161579f565b601f01601f1916919091016040019291505056feac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077ba2646970667358221220949045d4a6c763245e0b0067f6b8383c2eab88c7f59a4ad67e4a80149bc7412e64736f6c63430008130033a264697066735822122022c4de84d5431ccf50665b997b41e1fd9ef4f8fc3fc3295053ff18a91e9fcb5664736f6c63430008130033", - "sourceMap": "910:1538:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1651:795;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;3987:32:162;;;3969:51;;3957:2;3942:18;1651:795:9;;;;;;;;1880:7;1959:29;2053:10;2037:26;;2222:7;2251:13;2286:15;2323:14;2359:4;2385:12;2179:236;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2133:306:9;1651:795;-1:-1:-1;;;;;;;1651:795:9:o;-1:-1:-1:-;;;;;;;;:::o;14:127:162:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:250;213:2;207:9;255:6;243:19;;292:18;277:34;;313:22;;;274:62;271:88;;;339:18;;:::i;:::-;375:2;368:22;146:250;:::o;401:181::-;477:20;;-1:-1:-1;;;;;526:31:162;;516:42;;506:70;;572:1;569;562:12;506:70;401:181;;;:::o;587:535::-;638:5;686:4;674:9;669:3;665:19;661:30;658:50;;;704:1;701;694:12;658:50;737:2;731:9;779:4;771:6;767:17;850:6;838:10;835:22;814:18;802:10;799:34;796:62;793:88;;;861:18;;:::i;:::-;901:10;897:2;890:22;;930:6;921:15;;973:9;960:23;952:6;945:39;1045:2;1034:9;1030:18;1017:32;1012:2;1004:6;1000:15;993:57;1111:2;1100:9;1096:18;1083:32;1078:2;1070:6;1066:15;1059:57;;587:535;;;;:::o;1127:902::-;1181:5;1234:3;1227:4;1219:6;1215:17;1211:27;1201:55;;1252:1;1249;1242:12;1201:55;1288:6;1275:20;1314:4;1337:18;1374:2;1370;1367:10;1364:36;;;1380:18;;:::i;:::-;1426:2;1423:1;1419:10;1458:2;1452:9;1521:2;1517:7;1512:2;1508;1504:11;1500:25;1492:6;1488:38;1576:6;1564:10;1561:22;1556:2;1544:10;1541:18;1538:46;1535:72;;;1587:18;;:::i;:::-;1623:2;1616:22;1673:18;;;1749:15;;;1745:24;;;1707:15;;;;-1:-1:-1;1781:15:162;;;1778:35;;;1809:1;1806;1799:12;1778:35;1845:2;1837:6;1833:15;1822:26;;1857:142;1873:6;1868:3;1865:15;1857:142;;;1939:17;;1927:30;;1977:12;;;;1890;;;;1857:142;;;2017:6;1127:902;-1:-1:-1;;;;;;;1127:902:162:o;2034:1675::-;2182:6;2190;2198;2206;2214;2258:9;2249:7;2245:23;2288:3;2284:2;2280:12;2277:32;;;2305:1;2302;2295:12;2277:32;2328:6;2354:2;2350;2346:11;2343:31;;;2370:1;2367;2360:12;2343:31;2396:17;;:::i;:::-;2383:30;;2436:37;2463:9;2436:37;:::i;:::-;2429:5;2422:52;2534:2;2523:9;2519:18;2506:32;2501:2;2494:5;2490:14;2483:56;2599:2;2588:9;2584:18;2571:32;2566:2;2559:5;2555:14;2548:56;2664:2;2653:9;2649:18;2636:32;2631:2;2624:5;2620:14;2613:56;2730:3;2719:9;2715:19;2702:33;2696:3;2689:5;2685:15;2678:58;2797:3;2786:9;2782:19;2769:33;2763:3;2756:5;2752:15;2745:58;2864:3;2853:9;2849:19;2836:33;2830:3;2823:5;2819:15;2812:58;2903:47;2945:3;2934:9;2930:19;2903:47;:::i;:::-;2897:3;2890:5;2886:15;2879:72;2970:3;3005:46;3047:2;3036:9;3032:18;3005:46;:::i;:::-;2989:14;;;2982:70;3071:3;3106:51;3149:7;3129:18;;;3106:51;:::i;:::-;3101:2;3094:5;3090:14;3083:75;;3222:6;3211:9;3207:22;3194:36;3185:6;3178:5;3174:18;3167:64;3295:3;3284:9;3280:19;3267:33;3258:6;3251:5;3247:18;3240:61;3320:5;3310:15;;3344:46;3386:2;3375:9;3371:18;3344:46;:::i;:::-;3334:56;;;;3437:3;3426:9;3422:19;3409:33;3399:43;;3461:47;3503:3;3492:9;3488:19;3461:47;:::i;:::-;3451:57;;3559:3;3548:9;3544:19;3531:33;3587:18;3579:6;3576:30;3573:50;;;3619:1;3616;3609:12;3573:50;3642:61;3695:7;3686:6;3675:9;3671:22;3642:61;:::i;:::-;3632:71;;;2034:1675;;;;;;;;:::o;4237:461::-;4290:3;4328:5;4322:12;4355:6;4350:3;4343:19;4381:4;4410:2;4405:3;4401:12;4394:19;;4447:2;4440:5;4436:14;4468:1;4478:195;4492:6;4489:1;4486:13;4478:195;;;4557:13;;-1:-1:-1;;;;;4553:39:162;4541:52;;4613:12;;;;4648:15;;;;4589:1;4507:9;4478:195;;;-1:-1:-1;4689:3:162;;4237:461;-1:-1:-1;;;;;4237:461:162:o;4703:1685::-;5118:13;;-1:-1:-1;;;;;3780:31:162;3768:44;;5058:4;5087:3;5199:4;5191:6;5187:17;5181:24;5174:4;5163:9;5159:20;5152:54;5262:4;5254:6;5250:17;5244:24;5237:4;5226:9;5222:20;5215:54;5325:4;5317:6;5313:17;5307:24;5300:4;5289:9;5285:20;5278:54;5388:4;5380:6;5376:17;5370:24;5363:4;5352:9;5348:20;5341:54;5451:4;5443:6;5439:17;5433:24;5426:4;5415:9;5411:20;5404:54;5514:4;5506:6;5502:17;5496:24;5489:4;5478:9;5474:20;5467:54;5568:4;5560:6;5556:17;5550:24;5583:54;5631:4;5620:9;5616:20;5602:12;-1:-1:-1;;;;;3780:31:162;3768:44;;3714:104;5583:54;-1:-1:-1;5656:6:162;5699:15;;;5693:22;-1:-1:-1;;;;;3780:31:162;;5759:18;;;3768:44;-1:-1:-1;;5797:6:162;5840:15;;;5834:22;4101:12;;5904:18;;;4089:25;4163:4;4152:16;;4146:23;4130:14;;;4123:47;4219:4;4208:16;;4202:23;4186:14;;;4179:47;-1:-1:-1;;5981:6:162;5969:19;;5963:26;5954:6;5939:22;;5932:58;6048:6;6036:19;;6030:26;6021:6;6006:22;;5999:58;-1:-1:-1;;;;;3780:31:162;;6108:3;6093:19;;3768:44;6150:6;6144:3;6133:9;6129:19;6122:35;6166:47;6208:3;6197:9;6193:19;6185:6;-1:-1:-1;;;;;3780:31:162;3768:44;;3714:104;6166:47;-1:-1:-1;;;;;3780:31:162;;6264:3;6249:19;;3768:44;6306:2;6300:3;6289:9;6285:19;6278:31;6326:56;6378:2;6367:9;6363:18;6355:6;6326:56;:::i;:::-;6318:64;4703:1685;-1:-1:-1;;;;;;;;;4703:1685:162:o", + "object": "0x60806040523480156200001157600080fd5b50600436106200002e5760003560e01c8063e3420f4f1462000033575b600080fd5b6200004a620000443660046200024e565b62000066565b6040516001600160a01b03909116815260200160405180910390f35b60006060829050868686867f000000000000000000000000000000000000000000000000000000000000000085604051620000a190620000db565b620000b296959493929190620003ce565b604051809103906000f080158015620000cf573d6000803e3d6000fd5b50979650505050505050565b616b2180620004ed83390190565b634e487b7160e01b600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715620001265762000126620000e9565b60405290565b80356001600160a01b03811681146200014457600080fd5b919050565b6000606082840312156200015c57600080fd5b6040516060810181811067ffffffffffffffff82111715620001825762000182620000e9565b80604052508091508235815260208301356020820152604083013560408201525092915050565b600082601f830112620001bb57600080fd5b8135602067ffffffffffffffff80831115620001db57620001db620000e9565b8260051b604051601f19603f83011681018181108482111715620002035762000203620000e9565b6040529384528581018301938381019250878511156200022257600080fd5b83870191505b84821015620002435781358352918301919083019062000228565b979650505050505050565b60008060008060008587036102408112156200026957600080fd5b6101c0808212156200027a57600080fd5b62000284620000ff565b915062000291886200012c565b82526020880135602083015260408801356040830152606088013560608301526080880135608083015260a088013560a083015260c088013560c0830152620002dd60e089016200012c565b60e0830152610100620002f2818a016200012c565b90830152610120620003078a8a830162000149565b81840152506101808801356101408301526101a0880135610160830152819650620003348189016200012c565b955050506101e086013592506200034f61020087016200012c565b915061022086013567ffffffffffffffff8111156200036d57600080fd5b6200037b88828901620001a9565b9150509295509295909350565b600081518084526020808501945080840160005b83811015620003c35781516001600160a01b0316875295820195908201906001016200039c565b509495945050505050565b86516001600160a01b0316815260006102606020890151602084015260408901516040840152606089015160608401526080890151608084015260a089015160a084015260c089015160c084015260e08901516200043760e08501826001600160a01b03169052565b50610100898101516001600160a01b038116858301525050610120898101518051858301526020810151610140860152604081015161016086015250506101408901516101808401526101608901516101a08401526001600160a01b0388166101c0840152866101e0840152620004ba6102008401876001600160a01b03169052565b6001600160a01b03851661022084015280610240840152620004df8184018562000388565b999850505050505050505056fe6102a060405260016000553480156200001757600080fd5b5060405162006b2138038062006b218339810160408190526200003a916200076f565b6001600160a01b03808616608052831660a05260c084905260408051808201825260018152603160f81b6020918201529051879187918791879185918591859185918591859185918591620000f6917f2aef22f9d7df5f9d21c56d14029233f3fdaa91917727e1eb68e504d27072d6cd917fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6914691309101938452602084019290925260408301526001600160a01b0316606082015260800190565b60408051601f19818403018152918152815160209092019190912060e05284516001600160a01b0316610100528401516103e8111592506200014e915050576040516349db44f560e01b815260040160405180910390fd5b60408101516101a05260608101516101c05260a08101516000036200018657604051635428734d60e01b815260040160405180910390fd5b60a081018051610120525160808201511080620001b757508060a001518160800151620001b49190620008bb565b15155b15620001d65760405163253fffcf60e11b815260040160405180910390fd5b60808101516101405260c08101516101605260208101516101805260e0810151601180546001600160a01b0319166001600160a01b03928316179055610100820151166102405261012081015151670de0b6b3a764000010806200024a5750670de0b6b3a764000081610120015160200151115b80620002665750670de0b6b3a764000081610120015160400151115b1562000285576040516322f72cc360e11b815260040160405180910390fd5b61012081018051516101e0528051602001516102005251604001516102205261016001516102605260005b84610140015181101562000330576040805180820190915263ffffffff4281168252600060208301818152601280546001818101835591909352935190516001600160e01b0316640100000000029216919091177fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec34449091015501620002b0565b5050506001600160a01b0388166102805250620003539450506200057692505050565b86602001511462000377576040516355f2a42f60e01b815260040160405180910390fd5b816001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003dc9190620008de565b6001600160a01b031686600001516001600160a01b0316146200041257604051630722152560e11b815260040160405180910390fd5b85516102805160405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562000469573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200048f919062000905565b620004ad576040516340b27c2160e11b815260040160405180910390fd5b60005b815181101562000569576000828281518110620004d157620004d162000929565b60200260200101519050610280516001600160a01b0316816001600160a01b03161480620005135750610100516001600160a01b0316816001600160a01b0316145b15620005325760405163350b944160e11b815260040160405180910390fd5b6001600160a01b03166000908152601460205260409020805460ff191660011790558062000560816200093f565b915050620004b0565b5050505050505062000981565b610280516040516303d1689d60e11b8152670de0b6b3a764000060048201526000916001600160a01b0316906307a2d13a90602401602060405180830381865afa158015620005c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005ef919062000967565b905090565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b0381118282101715620006305762000630620005f4565b60405290565b6001600160a01b03811681146200064c57600080fd5b50565b80516200065c8162000636565b919050565b6000606082840312156200067457600080fd5b604051606081016001600160401b0381118282101715620006995762000699620005f4565b80604052508091508251815260208301516020820152604083015160408201525092915050565b600082601f830112620006d257600080fd5b815160206001600160401b0380831115620006f157620006f1620005f4565b8260051b604051601f19603f83011681018181108482111715620007195762000719620005f4565b6040529384528581018301938381019250878511156200073857600080fd5b83870191505b8482101562000764578151620007548162000636565b835291830191908301906200073e565b979650505050505050565b6000806000806000808688036102608112156200078b57600080fd5b6101c0808212156200079c57600080fd5b620007a66200060a565b9150620007b3896200064f565b82526020890151602083015260408901516040830152606089015160608301526080890151608083015260a089015160a083015260c089015160c0830152620007ff60e08a016200064f565b60e083015261010062000814818b016200064f565b90830152610120620008298b8b830162000661565b81840152506101808901516101408301526101a089015161016083015281975062000856818a016200064f565b965050506101e087015193506200087161020088016200064f565b92506200088261022088016200064f565b6102408801519092506001600160401b03811115620008a057600080fd5b620008ae89828a01620006c0565b9150509295509295509295565b600082620008d957634e487b7160e01b600052601260045260246000fd5b500690565b600060208284031215620008f157600080fd5b8151620008fe8162000636565b9392505050565b6000602082840312156200091857600080fd5b81518015158114620008fe57600080fd5b634e487b7160e01b600052603260045260246000fd5b6000600182016200096057634e487b7160e01b600052601160045260246000fd5b5060010190565b6000602082840312156200097a57600080fd5b5051919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e0516102005161022051610240516102605161028051615f1762000c0a60003960008181612055015281816120f40152818161217601528181612acc01528181612b4d01528181612b8d0152612c20015260006144ef0152600081816105590152818161066901528181610cc90152610d2f01526000818161440b0152818161467f01528181614ae101528181614b5a01528181614d310152614da20152600081816130d101528181613675015281816143df01528181614b2e0152614d7601526000818161463b01528181614ab50152614d0501526000818161074101528181610fa801528181611521015281816117c9015281816119af0152611d96015260008181610a9201528181610add01528181610bf101528181613ae001528181613e0e01528181613e5d0152818161425a0152818161474b01528181614860015261489c01526000818161081a01528181610b6001528181611a10015281816124460152818161248e01528181612faf015281816135ba01528181613aba0152613fd1015260008181610ba301528181611a5201528181612424015281816124af01528181612f8d0152818161359801528181613b060152613faf01526000818161089c01528181610b82015281816110b6015281816115ac01528181611a3101528181611e53015281816122580152818161237d01528181613057015281816132aa01528181614069015281816149f90152614ea3015260008181611c9701528181611d4001526121bb01526000612011015260008181610386015261133e01526000612ea601526000612e69015260006101570152615f176000f3fe6080604052600436106101405760003560e01c80636f8c3a5b116100b6578063ab033ea91161006f578063ab033ea91461049b578063c23632a7146104bb578063c326a903146104db578063e44808bc146104ee578063ed64bab21461050e578063fa3fcea71461052e57610140565b80636f8c3a5b146103e85780637180c8ca146104085780639032c726146104285780639cd241af14610448578063a179403b14610468578063a22cb4651461047b57610140565b80632002b333116101085780632002b333146102ff5780632787d5951461032057806330adf81f146103405780633644e515146103745780634536ee2f146103a85780634ed2d6ac146103c857610140565b806301681a621461025057806302329a291461027257806306dae82a1461029257806317fad7fc146102bf5780631c0f12b6146102df575b34801561014c57600080fd5b5060003660606000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316858560405161018f92919061575a565b600060405180830381855af49150503d80600081146101ca576040519150601f19603f3d011682016040523d82523d6000602084013e6101cf565b606091505b509150915081156101f357604051638bb0a34b60e01b815260040160405180910390fd5b60006101fe8261576a565b90506001600160e01b03198116636e64089360e11b1461022057815160208301fd5b815160031981016004840190815292610241918101602001906024016157db565b80519650602001945050505050f35b34801561025c57600080fd5b5061027061026b366004615895565b61054e565b005b34801561027e57600080fd5b5061027061028d3660046158c0565b610692565b6102a56102a03660046158dd565b6106db565b604080519283526020830191909152015b60405180910390f35b3480156102cb57600080fd5b506102706102da366004615978565b610960565b3480156102eb57600080fd5b506102706102fa366004615a0d565b610a14565b61031261030d366004615a55565b610a27565b6040519081526020016102b6565b34801561032c57600080fd5b5061031261033b3660046158c0565b610c7c565b34801561034c57600080fd5b506103127f65619c8664d6db8aae8c236ad19598696159942a4245b23b45565cc18e97367381565b34801561038057600080fd5b506103127f000000000000000000000000000000000000000000000000000000000000000081565b3480156103b457600080fd5b506102a56103c3366004615a55565b610d60565b3480156103d457600080fd5b506102706103e3366004615a9f565b610f30565b3480156103f457600080fd5b506103126104033660046158dd565b610f7e565b34801561041457600080fd5b50610270610423366004615ade565b6111ec565b34801561043457600080fd5b50610270610443366004615b17565b611264565b34801561045457600080fd5b50610270610463366004615b97565b6114b3565b6102a56104763660046158dd565b6114c4565b34801561048757600080fd5b50610270610496366004615ade565b6116bd565b3480156104a757600080fd5b506102706104b6366004615895565b611729565b3480156104c757600080fd5b506102a56104d6366004615a55565b61179d565b6103126104e93660046158dd565b611954565b3480156104fa57600080fd5b50610270610509366004615bcf565b611c16565b34801561051a57600080fd5b50610270610529366004615c20565b611c66565b34801561053a57600080fd5b506103126105493660046158dd565b611d6c565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906105975750336000908152600f602052604090205460ff16155b156105b4576040516282b42960e81b815260040160405180910390fd5b6001600160a01b03811660009081526014602052604090205460ff166105ed5760405163350b944160e11b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190615c39565b905061068e6001600160a01b0383167f000000000000000000000000000000000000000000000000000000000000000083611f77565b5050565b336000908152600f602052604090205460ff166106c1576040516282b42960e81b815260040160405180910390fd5b600c80549115156101000261ff0019909216919091179055565b6000806000546001146107095760405162461bcd60e51b815260040161070090615c52565b60405180910390fd5b6002600055600c54610100900460ff1615610737576040516313d0ff5960e31b815260040160405180910390fd5b61073f611fda565b7f00000000000000000000000000000000000000000000000000000000000000008710156107805760405163211ddda360e11b815260040160405180910390fd5b60008061078d8986611ffb565b91509150868110156107b2576040516342af972b60e01b815260040160405180910390fd5b60006107bc6121b4565b90506107c881836121ef565b5060008060006107d886866123fd565b600854919a50929550909350909150610802908390600160801b90046001600160801b0316615c8c565b61083f8461080e61252e565b6108189190615c9f565b7f00000000000000000000000000000000000000000000000000000000000000009061254f565b111561085e5760405163512095c760e01b815260040160405180910390fd5b868c111561087f5760405163c972651760e01b815260040160405180910390fd5b80601060008282546108919190615c9f565b909155506108c190507f000000000000000000000000000000000000000000000000000000000000000085615c9f565b97506108d183888488888d61256b565b60006108de60018a612765565b90506108eb818c8a61279a565b60008e9050818c6001600160a01b03167f7b7d51ee23746cf6ef2078de2a5b53073226b516a1c892a1e882c581026bf4b38c848d60405161093f939291909283526020830191909152604082015260600190565b60405180910390a35050505050505050600160005590969095509350505050565b6001600160a01b038616158061097d57506001600160a01b038516155b1561099b5760405163f0dd15fd60e01b815260040160405180910390fd5b8281146109bb5760405163174861a760e31b815260040160405180910390fd5b60005b83811015610a0b57610a038585838181106109db576109db615cb2565b9050602002013588888686868181106109f6576109f6615cb2565b9050602002013533612843565b6001016109be565b50505050505050565b610a218484848433612843565b50505050565b60008054600114610a4a5760405162461bcd60e51b815260040161070090615c52565b6002600055610a57611fda565b600c5460ff1615610a7b57604051637983c05160e01b815260040160405180910390fd5b600080610a888785611ffb565b9092509050610ab87f00000000000000000000000000000000000000000000000000000000000000006002615cc8565b821015610ad857604051632afb507160e21b815260040160405180910390fd5b610b037f00000000000000000000000000000000000000000000000000000000000000006002615cc8565b610b0d9083615c8c565b9250610b20610b1a6121b4565b826121ef565b50600c805460ff19166001179055610b3782612a04565b600880546001600160801b0319166001600160801b0392909216919091179055610bcc610bc7837f0000000000000000000000000000000000000000000000000000000000000000897f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000612a2e565b612a04565b600880546001600160801b03928316600160801b029216919091179055610c156000807f000000000000000000000000000000000000000000000000000000000000000061279a565b610c216000868561279a565b60408051848152602081018990529081018790526001600160a01b038616907f60c26087830ee0ee6d86bdb3a10e19f3fd49af366c77421d7fe4596811d6274e9060600160405180910390a250506001600055949350505050565b60008054600114610c9f5760405162461bcd60e51b815260040161070090615c52565b60026000908155338152600f602052604090205460ff16158015610cec5750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b8015610d0357506011546001600160a01b03163314155b15610d20576040516282b42960e81b815260040160405180910390fd5b601080546000909155610d54817f000000000000000000000000000000000000000000000000000000000000000085612a98565b60016000559392505050565b600080600054600114610d855760405162461bcd60e51b815260040161070090615c52565b60026000908155610d94612c00565b9050610da1610b1a6121b4565b50610dab81612c93565b600d548792506001600160801b031680831115610dcf57806001600160801b031692505b82600003610de557600080935093505050610f20565b610df4600360f81b3385612d6d565b600d546001600160801b03600160801b909104811690600090610e1c90869084908616612e0d565b9050610e2785612a04565b610e319084615cdf565b600d80546001600160801b0319166001600160801b0392909216919091179055610e5a81612a04565b600d8054601090610e7c908490600160801b90046001600160801b0316615cdf565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550610eab818989612a98565b955085610eb88a8761254f565b1115610ed75760405163c972651760e01b815260040160405180910390fd5b60408051868152602081018890526001600160a01b038a16917f07cd0949bbc0d60ad35053a0459db413c148f758b7781aaf6b258018d18ad0ac910160405180910390a2505050505b6001600055909590945092505050565b83610f3a81612e2b565b6001600160a01b0316336001600160a01b031614610f6b57604051632aab8bd360e01b815260040160405180910390fd5b610f7785858585612ee8565b5050505050565b60008054600114610fa15760405162461bcd60e51b815260040161070090615c52565b60026000557f0000000000000000000000000000000000000000000000000000000000000000851015610fe75760405163211ddda360e11b815260040160405180910390fd5b6000610ff1612c00565b9050610ffd87826121ef565b5061101361100c600289612765565b3388612d6d565b6000806000806000806110278c888f612f55565b600854959b50939950919750955093509150611054908790600160801b90046001600160801b0316615c8c565b6110608461080e61252e565b111561107f5760405163512095c760e01b815260040160405180910390fd5b8b8d884282111561114157836010600082825461109c9190615c9f565b909155506110af9050838a898886613129565b60006110db7f000000000000000000000000000000000000000000000000000000000000000084615c8c565b6000818152600e6020526040812054919250600160801b909104600f0b9061110e9086908a908e908d90899089906132a3565b6000828152600e602052604090205461113590600f83810b91600160801b9004900b61344b565b61113e8c612c93565b50505b600061114e898f8f612a98565b90508e8110156111715760405163c972651760e01b815260040160405180910390fd5b61117c600284612765565b8e6001600160a01b03167f39d1403e56c69205ef368007a55ee1304b0f388631dca237a1710d04e3e8950f8584886040516111ca939291909283526020830191909152604082015260600190565b60405180910390a39a5050505050505050505050600160005595945050505050565b6011546001600160a01b03163314611216576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0382166000818152600f6020526040808220805460ff1916851515179055517fa4336c0cb1e245b95ad204faed7e940d6dc999684fd8b5e1ff597a0c4efca8ab9190a25050565b834211156112855760405163f87d927160e01b815260040160405180910390fd5b6001600160a01b0387166112ac5760405163f0dd15fd60e01b815260040160405180910390fd5b6001600160a01b0387811660008181526007602090815260408083205481517f65619c8664d6db8aae8c236ad19598696159942a4245b23b45565cc18e9736738185015280830195909552948b166060850152891515608085015260a084019490945260c08084018990528451808503909101815260e08401909452835193019290922061190160f01b6101008301527f00000000000000000000000000000000000000000000000000000000000000006101028301526101228201526101420160408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156113d8573d6000803e3d6000fd5b505050602060405103519050886001600160a01b0316816001600160a01b03161461141657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0389166000908152600760205260408120805490919061143c90615d06565b909155506001600160a01b038981166000818152600360209081526040808320948d1680845294825291829020805460ff19168c151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050505050505050565b6114bf83838333612ee8565b505050565b6000806000546001146114e95760405162461bcd60e51b815260040161070090615c52565b6002600055600c54610100900460ff1615611517576040516313d0ff5960e31b815260040160405180910390fd5b61151f611fda565b7f00000000000000000000000000000000000000000000000000000000000000008710156115605760405163211ddda360e11b815260040160405180910390fd5b600061156a612c00565b90508581101561158d576040516342af972b60e01b815260040160405180910390fd5b60006115976121b4565b905060006115a582846121ef565b90506115d17f000000000000000000000000000000000000000000000000000000000000000083615c9f565b94506000806115e18c8685613572565b60108054939950919450925082916000906115fd908490615c9f565b909155505050848a10156116245760405163c972651760e01b815260040160405180910390fd5b61162e8588611ffb565b505061163c8b8286896136a6565b6000611649600288612765565b9050611656818a8e61279a565b60408051888152602081018890529081018d90528c9082906001600160a01b038c16907f851bac68873b7adb346bcf4bff36324c6f322b58f9f0f50c1d3a8568242ca66b9060600160405180910390a3505050505050600160005590969095509350505050565b3360008181526003602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6011546001600160a01b03163314611753576040516282b42960e81b815260040160405180910390fd5b601180546001600160a01b0319166001600160a01b0383169081179091556040517f9d3e522e1e47a2f6009739342b9cc7b252a1888154e843ab55ee1c81745795ab90600090a250565b6000806000546001146117c25760405162461bcd60e51b815260040161070090615c52565b60026000557f00000000000000000000000000000000000000000000000000000000000000008610156118085760405163211ddda360e11b815260040160405180910390fd5b6000611812612c00565b905061181f610b1a6121b4565b5061182981612c93565b6002602052600080516020615ec283398151915254600d54600360f81b60009081527f3ccfbaf375b4885450e3887dab0704e32e03acfeaf0442976372f6750e322c1f549091611884916001600160801b0390911690615c8c565b905060006118928284615c9f565b90506118a06000338c612d6d565b60006118af8b868487876138e4565b965090506118c2600360f81b8a8861279a565b6118cd818a8a612a98565b9650868a11156118f05760405163c972651760e01b815260040160405180910390fd5b604080518c8152602081018990529081018790528b906001600160a01b038b16907f59c3a0b60c6ab7deb62e1440c9e72441db6db7dfe514dba8cb18e60c0d896efa9060600160405180910390a25050505050506001600055909590945092505050565b600080546001146119775760405162461bcd60e51b815260040161070090615c52565b6002600055600c54610100900460ff16156119a5576040516313d0ff5960e31b815260040160405180910390fd5b6119ad611fda565b7f00000000000000000000000000000000000000000000000000000000000000008610156119ee5760405163211ddda360e11b815260040160405180910390fd5b6000611a766119fb61252e565b600854600160801b90046001600160801b03167f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006139e2565b905085811080611a8557508481115b15611aa357604051633b61151160e11b815260040160405180910390fd5b600080611ab08986611ffb565b91509150611abf610b1a6121b4565b50600d54600360f81b600090815260026020527f3ccfbaf375b4885450e3887dab0704e32e03acfeaf0442976372f6750e322c1f549091611b0b916001600160801b0390911690615c8c565b60008080526002602052600080516020615ec28339815191525491925090611b34908390615c9f565b9050600080611b4285613a1d565b90506000611b4f82613b83565b9050611b5a87613df5565b6008546001600160801b038082168452600954600f0b6020850152600160801b909104166040830152611b8c82613b83565b9250611ba48482611b9d8187615c8c565b9190612e0d565b98505050611bb460008a8961279a565b611bbd84612c93565b60408051888152602081018e90526001600160a01b038b16917f06239653922ac7bea6aa2b19dc486b9361821d37712eb796adfd38d81de278ca910160405180910390a250506001600055509298975050505050505050565b84611c2081612e2b565b6001600160a01b0316336001600160a01b031614611c5157604051632aab8bd360e01b815260040160405180910390fd5b611c5e8686868686612843565b505050505050565b6000818152600e60205260409020546001600160801b031615611c865750565b6000611c906121b4565b9050611cbc7f000000000000000000000000000000000000000000000000000000000000000083615d35565b151580611cc857508181105b15611ce65760405163ecd29e8160e01b815260040160405180910390fd5b808203611cfe576114bf81611cf9612c00565b6121ef565b815b6000818152600e60205260409020546001600160801b0316828203611d2a57611d27612c00565b90505b8015611d3a57610f7784826121ef565b50611d657f000000000000000000000000000000000000000000000000000000000000000082615c9f565b9050611d00565b60008054600114611d8f5760405162461bcd60e51b815260040161070090615c52565b60026000557f0000000000000000000000000000000000000000000000000000000000000000851015611dd55760405163211ddda360e11b815260040160405180910390fd5b6000611ddf612c00565b9050611deb87826121ef565b50611dfa61100c600189612765565b600080600080600080611e0e8c888f613f77565b95509550955095509550955060008d90508d421015611ed7578160106000828254611e399190615c9f565b90915550611e4c90508d888786856140ee565b6000611e787f000000000000000000000000000000000000000000000000000000000000000083615c8c565b6000818152600e6020526040902054909150600160801b9004600f0b611ea48f878b8a878f60016132a3565b6000828152600e6020526040902054611ecb90600f83810b91600160801b9004900b61344b565b611ed48a612c93565b50505b6000611ee4878d8d612a98565b9050808d1115611f075760405163c972651760e01b815260040160405180910390fd5b8d611f13600184612765565b60408051858152602081018590529081018390526001600160a01b038f16907fe8c2c201cc00307ad7ec0d92d7ee5f89a796b4b1134d1672b08939eaf504d68c9060600160405180910390a35060016000559e9d5050505050505050505050505050565b6040516001600160a01b0383166024820152604481018290526114bf90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526142bb565b3415611ff957604051631574f9f360e01b815260040160405180910390fd5b565b60008082156120db576120396001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333087614390565b604051636e553f6560e01b8152600481018590523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f65906044016020604051808303816000875af11580156120a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ca9190615c39565b91506120d4612c00565b90506121ad565b6040516363737ac960e11b8152600481018590526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c6e6f59290602401602060405180830381865afa158015612143573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121679190615c39565b905061219e6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084614390565b8092506121a9612c00565b9150505b9250929050565b60006121e07f000000000000000000000000000000000000000000000000000000000000000042615d35565b6121ea9042615c8c565b905090565b6000828152600e6020526040812080546001600160801b031615158061221457504284115b1561222a57546001600160801b031690506123f7565b61223383612a04565b81546001600160801b0319166001600160801b03919091161781556000600e8161227d7f000000000000000000000000000000000000000000000000000000000000000088615c8c565b815260208101919091526040016000908120546001600160801b031691506002816122a88289612765565b8152602001908152602001600020549050600080821115612304576000806122d384898760006143c8565b9150915080601060008282546122e99190615c9f565b909155506122fd905084600084808d613129565b6001925050505b60006002600061231560018b612765565b815260200190815260200160002054905060008111156123705760008061233f838a8860016143c8565b9150915080601060008282546123559190615c9f565b90915550612369905083600084808e6140ee565b6001935050505b81156123ee5760006123a27f00000000000000000000000000000000000000000000000000000000000000008a615c8c565b6000818152600e6020526040902080546001600160801b03811691829055919250600160801b91829004600f90810b926123e2928492919004900b61344b565b6123eb89612c93565b50505b86955050505050505b92915050565b60008060008061246a61240e61252e565b600854600160801b90046001600160801b0316887f0000000000000000000000000000000000000000000000000000000000000000897f0000000000000000000000000000000000000000000000000000000000000000614496565b925060006124d361247961252e565b600854600160801b90046001600160801b03167f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006144c2565b90506124de816144d3565b6000806124ec89848a61462d565b90925090506124fb8287615c8c565b94506125078186615c9f565b955061251481848a612e0d565b9350612520848a615c8c565b965050505092959194509250565b6008546009546000916121ea916001600160801b0390911690600f0b6146ad565b60006125648383670de0b6b3a7640000612e0d565b9392505050565b600a546001600160801b03166125a6610bc78261259085670de0b6b3a7640000615cc8565b600b546001600160801b031691908a60016146ca565b600b80546001600160801b0319166001600160801b03929092169190911790556125cf87612a04565b600880546000906125ea9084906001600160801b0316615d49565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061261785612a04565b60088054601090612639908490600160801b90046001600160801b0316615cdf565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061266686612a04565b6126709082615d49565b600a80546001600160801b0319166001600160801b0383161790556000848152600e60205260408120805492935091600160801b9004600f0b906126cc6126b78b8961254f565b6126c28b6002615cc8565b610bc79190615c8c565b8354909150819084906010906126ed908490600160801b9004600f0b615d69565b82546001600160801b039182166101009390930a928302919092021990911617905550825461272a90600f84810b91600160801b9004900b61344b565b61273387614744565b612750576040516318846de960e01b815260040160405180910390fd5b61275987612c93565b50505050505050505050565b60006001600160f81b0382111561278f5760405163b7d0949760e01b815260040160405180910390fd5b5060f89190911b1790565b60008381526001602090815260408083206001600160a01b0386168452909152812080548392906127cc908490615c9f565b9091555050600083815260026020526040812080548392906127ef908490615c9f565b909155505060408051848152602081018390526001600160a01b0384169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291015b60405180910390a4505050565b6001600160a01b038416158061286057506001600160a01b038316155b1561287e5760405163f0dd15fd60e01b815260040160405180910390fd5b836001600160a01b0316816001600160a01b031614612942576001600160a01b0380851660009081526003602090815260408083209385168352929052205460ff166129425760008581526004602090815260408083206001600160a01b038089168552908352818420908516845290915290205460001981146129405760008681526004602090815260408083206001600160a01b03808a16855290835281842090861684529091528120805485929061293a908490615c8c565b90915550505b505b60008581526001602090815260408083206001600160a01b038816845290915281208054849290612974908490615c8c565b909155505060008581526001602090815260408083206001600160a01b0387168452909152812080548492906129ab908490615c9f565b909155505060408051868152602081018490526001600160a01b038086169287821692918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a45050505050565b6000600160801b8210612a2a57604051630f0af95160e11b815260040160405180910390fd5b5090565b600080612a3f846301e133806147b6565b9050612a8b612a7b612a59670de0b6b3a7640000866147cb565b612a63888561254f565b612a7590670de0b6b3a7640000615c9f565b906147e0565b612a85888a61254f565b9061254f565b9150505b95945050505050565b60008115612b4057604051635d043b2960e11b8152600481018590526001600160a01b0384811660248301523060448301527f0000000000000000000000000000000000000000000000000000000000000000169063ba087652906064016020604051808303816000875af1158015612b15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b399190615c39565b9050612564565b612b746001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168486611f77565b6040516303d1689d60e11b8152600481018590526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a90602401602060405180830381865afa158015612bdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8f9190615c39565b6040516303d1689d60e11b8152670de0b6b3a764000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a90602401602060405180830381865afa158015612c6f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ea9190615c39565b6002602052600080516020615ec283398151915254600d54600360f81b60009081527f3ccfbaf375b4885450e3887dab0704e32e03acfeaf0442976372f6750e322c1f549091612cee916001600160801b0390911690615c8c565b90506000612cfc8284615c9f565b90506000612d11612d0c86613a1d565b613b83565b90506000612d20858385612e0d565b9050600080612d2e88614837565b905082811115612d4557612d428382615c8c565b91505b6000821180612d52575083155b15612d6357612d63828587896148e3565b5050505050505050565b60008381526001602090815260408083206001600160a01b038616845290915281208054839290612d9f908490615c8c565b909155505060008381526002602052604081208054839290612dc2908490615c8c565b909155505060408051848152602081018390526000916001600160a01b0385169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629101612836565b6000826000190484118302158202612e2457600080fd5b5091020490565b604080513060208083019190915281830193909352815180820383018152606080830184528151918501919091206001600160f81b031960808401527f000000000000000000000000000000000000000000000000000000000000000090911b6bffffffffffffffffffffffff1916608183015260958201527f000000000000000000000000000000000000000000000000000000000000000060b5808301919091528251808303909101815260d5909101909152805191012090565b60008481526004602090815260408083206001600160a01b0385811680865291845282852090881680865290845293829020869055905185815290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050565b6000806000806000806000612f69886149cc565b9050612fd3612f7661252e565b600854600160801b90046001600160801b03168c847f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000614a1d565b909850955093506000612fe761247961252e565b9050612ff2816144d3565b8a8a600080808061300586898988614a8d565b935093509350935080826130199190615c9f565b98506130258285615c8c565b61302f908c615c9f565b9a5061303b8385615c9f565b613045908d615c9f565b9b5050505050505050506000600e60007f00000000000000000000000000000000000000000000000000000000000000008a6130819190615c8c565b815260208101919091526040016000908120546001600160801b031691504289116130c3576000898152600e60205260409020546001600160801b03166130c5565b895b90506130f58b8784848e7f0000000000000000000000000000000000000000000000000000000000000000614b8c565b96506131018387615c8c565b95506131138787878686866000614bde565b9b9f939e50919c509a5098975095505050505050565b600a54600160801b90046001600160801b0316613172610bc78261315585670de0b6b3a7640000615cc8565b600b54600160801b90046001600160801b031691908a60006146ca565b600b80546001600160801b03928316600160801b02921691909117905561319886612a04565b6131a29082615cdf565b600a80546001600160801b03928316600160801b029216919091179055506131c983612a04565b600880546000906131e49084906001600160801b0316615d49565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061321182614c59565b60098054600090613226908490600f0b615d69565b92506101000a8154816001600160801b030219169083600f0b6001600160801b0316021790555061325684612a04565b60088054601090613278908490600160801b90046001600160801b0316615cdf565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505050505050565b60006132cf7f000000000000000000000000000000000000000000000000000000000000000085615c8c565b90506000600260006132e2600188612765565b8152602001908152602001600020549050600060026000613304600289612765565b8152602001908152602001600020549050816000148015613323575080155b15613348576000838152600e6020526040902080546001600160801b03169055612759565b600061338c8b6133588c8961254f565b613363906002615cc8565b8b61336e8c8b61254f565b6133789190615c9f565b6133829190615c8c565b610bc79190615c9f565b905084156133eb576000848152600e6020526040902080548291906010906133bf908490600160801b9004600f0b615d96565b92506101000a8154816001600160801b030219169083600f0b6001600160801b0316021790555061343e565b6000848152600e602052604090208054829190601090613416908490600160801b9004600f0b615d69565b92506101000a8154816001600160801b030219169083600f0b6001600160801b031602179055505b5050505050505050505050565b808213801561345b575060008212155b156134ee57600061346c8282614c97565b6134769084615dc3565b6009549091506134a39061349e908390600160801b90046001600160801b0316600f0b614cad565b614c59565b600980546010906134c5908490600160801b90046001600160801b0316615cdf565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550505050565b8181131561068e57600082126135645761350782614c59565b61351082614c59565b61351a9190615d96565b6009805460109061353c908490600160801b90046001600160801b0316615d49565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505050565b61351a61349e826000614c97565b60008060006135de61358261252e565b600854600160801b90046001600160801b0316887f0000000000000000000000000000000000000000000000000000000000000000897f0000000000000000000000000000000000000000000000000000000000000000614cbc565b9150856135eb838761254f565b111561360a5760405163512095c760e01b815260040160405180910390fd5b600061361761247961252e565b9050613622816144d3565b600061363888670de0b6b3a7640000848a614cdd565b945090915061364990508382615c8c565b6136539085615c8c565b935061369987612a858a6136678789615c8c565b8a6136728d82614dde565b8d7f0000000000000000000000000000000000000000000000000000000000000000614b8c565b9450505093509350939050565b600a546136f090610bc790600160801b90046001600160801b03166136d384670de0b6b3a7640000615cc8565b600b54600160801b90046001600160801b031691908860016146ca565b600b80546001600160801b03928316600160801b029216919091179055600061371884612a04565b60085461372e91906001600160801b0316615cdf565b600880546001600160801b0319166001600160801b038316179055905061375485612a04565b60088054601090613776908490600160801b90046001600160801b0316615d49565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506137a385612a04565b600a80546010906137c5908490600160801b90046001600160801b0316615d49565b82546101009290920a6001600160801b03818102199093169183160217909155600954600854600f9190910b9116121590506138145760405163585fe6df60e11b815260040160405180910390fd5b600061381e6121b4565b6000818152600e6020526040902054909150600160801b9004600f0b61384387612a04565b6000838152600e60205260409020805460109061386b908490600160801b9004600f0b615d96565b82546001600160801b039182166101009390930a9283029190920219909116179055506000828152600e60205260409020546138b590600f83810b91600160801b9004900b61344b565b6138be85614744565b6138db576040516318846de960e01b815260040160405180910390fd5b610a0b85612c93565b60008060006138f287613a1d565b905060006138ff82613b83565b905061391161390c612c00565b614837565b935061391e848a88612e0d565b935061393161392c85615de3565b613df5565b6008546001600160801b038082168452600954600f0b6020850152600160801b909104166040830152600061396583613b83565b90506000613974898385612e0d565b90506139808b8a615dc3565b61398a9082615dc3565b905060008112156139d35760006139ab6139a383615de3565b85908c612e0d565b90506139b78188615c8c565b96506139c281613df5565b6139cd81898d614ded565b60009150505b93505050509550959350505050565b6000806139f1878787866144c2565b9050612a8b613a0582866301e13380614e32565b613a1783670de0b6b3a7640000615c8c565b906147b6565b613a7a60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60408051610160810182526008546001600160801b038082168352600954600f0b6020840152600160801b909104811692820192909252606081018490527f000000000000000000000000000000000000000000000000000000000000000060808201527f000000000000000000000000000000000000000000000000000000000000000060a08201527f000000000000000000000000000000000000000000000000000000000000000060c0820152600a54821660e0820152600b549091610100830191613b499116614e58565b8152600a546001600160801b03600160801b9182900481166020840152600b54604090930192613b7b92900416614e58565b905292915050565b600080613ba383610140015184610120015161254f90919063ffffffff16565b61010084015160e0850151613bb79161254f565b613bc19190615dc3565b90506000613bd7846000015185602001516146ad565b90506000821315613c79576000613c198286604001518760a001518860c00151670de0b6b3a7640000613c0a9190615c8c565b89606001518a60800151614ece565b9150613c2790508184614f51565b90508015613c7357613c60828660400151838860c00151670de0b6b3a7640000613c519190615c8c565b89606001518a60800151614f60565b85518690613c6f908390615c8c565b9052505b50613d37565b6000821215613d3757613c8b82615de3565b91506000613cbf8286604001518760c00151670de0b6b3a7640000613cb09190615c8c565b88606001518960800151614f94565b9150613ccd90508184614f51565b90508015613d1957613d06828660400151838860c00151670de0b6b3a7640000613cf79190615c8c565b89606001518a6080015161501e565b85518690613d15908390615c9f565b9052505b613d238184615c8c565b85518690613d32908390615c9f565b905250505b6000613d66856101000151670de0b6b3a7640000613d559190615c8c565b606087015160e08801519190612e0d565b613d94866101400151670de0b6b3a7640000613d829190615c8c565b60608801516101208901519190612e0d565b613d9e9190615dc3565b90506000818660000151613db29190615dff565b90508560a00151811215613dd95760405163aeeb825d60e01b815260040160405180910390fd5b80865260a0860151613deb9082615c8c565b9695505050505050565b80600003613e005750565b6008546001600160801b03167f0000000000000000000000000000000000000000000000000000000000000000811015613e4d5760405163585fe6df60e11b815260040160405180910390fd5b6000613e598383615dff565b90507f0000000000000000000000000000000000000000000000000000000000000000811215613e9c5760405163585fe6df60e11b815260040160405180910390fd5b613ea581612a04565b600880546001600160801b0319166001600160801b0392909216919091179055600954600090600f0b818112613ee757613ee0838286612e0d565b9150613f07565b613efb613ef382615de3565b849086612e0d565b613f0490615de3565b91505b613f1082614c59565b600980546001600160801b0319166001600160801b03928316179055600854613f5391610bc791600160801b900416613f4987856146ad565b611b9d87876146ad565b600880546001600160801b03928316600160801b0292169190911790555050505050565b6000806000806000806000613f8b886149cc565b9050613ff5613f9861252e565b600854600160801b90046001600160801b03168c847f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000615099565b90985096509350600061400961247961252e565b9050614014816144d3565b6000806140238d85858f614cdd565b965090925090506140348288615c8c565b96506140408183615c9f565b61404a908a615c8c565b9850614056858a615c9f565b9750505050506140da85858584600e60007f00000000000000000000000000000000000000000000000000000000000000008e6140939190615c8c565b81526020810191909152604001600020546001600160801b0316428d116140d15760008d8152600e60205260409020546001600160801b03166140d3565b8d5b6001614bde565b999d939c50919a5098509695509350505050565b600a546001600160801b0316614129610bc78261411385670de0b6b3a7640000615cc8565b600b546001600160801b031691908a60006146ca565b600b80546001600160801b0319166001600160801b039290921691909117905561415286612a04565b61415c9082615cdf565b600a80546001600160801b0319166001600160801b03929092169190911790555061418683612a04565b600880546000906141a19084906001600160801b0316615cdf565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506141ce82614c59565b600980546000906141e3908490600f0b615d96565b92506101000a8154816001600160801b030219169083600f0b6001600160801b0316021790555061421384612a04565b60088054601090614235908490600160801b90046001600160801b0316615d49565b82546101009290920a6001600160801b038181021990931691831602179091556008547f000000000000000000000000000000000000000000000000000000000000000091161090508061429d5750600954600854600f9190910b6001600160801b03909116125b15610f775760405163585fe6df60e11b815260040160405180910390fd5b6000614310826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166150e59092919063ffffffff16565b90508051600014806143315750808060200190518101906143319190615e27565b6114bf5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610700565b6040516001600160a01b0380851660248301528316604482015260648101829052610a219085906323b872dd60e01b90608401611fa3565b6000806143d586866147b6565b91506000614403837f000000000000000000000000000000000000000000000000000000000000000061254f565b905061442f817f000000000000000000000000000000000000000000000000000000000000000061254f565b91508315614452576144418282615c8c565b61444b9084615c8c565b9250614469565b61445c8282615c8c565b6144669084615c9f565b92505b8486101561448c5761447c838787612e0d565b9250614489828787612e0d565b91505b5094509492505050565b60006144b78787876144b088670de0b6b3a7640000615c8c565b87876150fc565b979650505050505050565b6000612a8f82612a75858888612e0d565b6013546001600160801b03600160801b820481169116426145147f000000000000000000000000000000000000000000000000000000000000000084615c9f565b111561451f57505050565b60006012828154811061453457614534615cb2565b60009182526020822001805490925063ffffffff8116916401000000009091046001600160e01b0316906145688342615c8c565b601254909150878202830190600090614582886001615c9f565b61458c9190615d35565b905060405180604001604052804263ffffffff168152602001836001600160e01b0316815250601282815481106145c5576145c5615cb2565b60009182526020918290208351938301516001600160e01b03166401000000000263ffffffff90941693909317920191909155604080518082019091526001600160801b03928316808252429093169101819052600160801b02176013555050505050505050565b60008061467785612a8585817f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a764000061466d818c6147b6565b612a859190615c8c565b91506146a3827f000000000000000000000000000000000000000000000000000000000000000061254f565b9050935093915050565b6000806146ba8385615dc3565b9050600081121561256457600080fd5b6000811561470a576147036146df8487615c9f565b6146e9858761254f565b6146f3888a61254f565b6146fd9190615c9f565b906147cb565b9050612a8f565b82850361471957506000612a8f565b613deb6147268487615c8c565b614730858761254f565b61473a888a61254f565b6146fd9190615c8c565b60006147707f00000000000000000000000000000000000000000000000000000000000000008361254f565b6009546008546147ae916000916001600160801b03600160801b9092048216600f0b9161479e91168761254f565b6147a89190615dc3565b90614c97565b121592915050565b600061256483670de0b6b3a764000084612e0d565b600061256483670de0b6b3a764000084614e32565b6000816000036147f95750670de0b6b3a76400006123f7565b82600003614809575060006123f7565b8160006148158561516f565b905081810261482c670de0b6b3a764000082615e44565b9050613deb81615382565b600954600090819061485990600160801b90046001600160801b0316846147b6565b90506148857f000000000000000000000000000000000000000000000000000000000000000082615c9f565b6008546001600160801b031611156148dd576008547f0000000000000000000000000000000000000000000000000000000000000000906148d09083906001600160801b0316615c8c565b6148da9190615c8c565b91505b50919050565b60008084116148f257826148fd565b6148fd838686612e0d565b90508060000361490d5750610a21565b80858382111561492857839150614925878385612e0d565b90505b61493182612a04565b600d805460009061494c9084906001600160801b0316615d49565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061497981612a04565b600d805460109061499b908490600160801b90046001600160801b0316615d49565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550610a0b8161392c90615de3565b6000806149d76121b4565b90508083116149e75760006149f1565b6149f18184615c8c565b91506148da827f00000000000000000000000000000000000000000000000000000000000000006147b6565b60008080614a3e614a3688670de0b6b3a7640000615c8c565b899087612e0d565b9050614a4a888861254f565b91508115614a8057614a718a8a84614a6a8a670de0b6b3a7640000615c8c565b898961501e565b9250614a7d8382615c9f565b90505b9750975097945050505050565b6000808080614aa486670de0b6b3a7640000615c8c565b9350614ad98786611b9d8b612a85897f000000000000000000000000000000000000000000000000000000000000000061254f565b9350614b05847f000000000000000000000000000000000000000000000000000000000000000061254f565b91506000614b26614b1e89670de0b6b3a7640000615c8c565b8a9088612e0d565b9050614b52817f000000000000000000000000000000000000000000000000000000000000000061254f565b9350614b7e847f000000000000000000000000000000000000000000000000000000000000000061254f565b915050945094509450949050565b600080614ba585614b9d888761550d565b8a9190612e0d565b9050614bb2888486612e0d565b614bbc9082615c9f565b905086811115614bd357614bd08782615c8c565b91505b509695505050505050565b60008060008060008088881015614c3b578615614c0357614c008d898b612e0d565b9c505b614c0e8c898b612e0d565b9b50614c1a8b8d615dc3565b9050614c278b898b612e0d565b9a50614c348a898b612e0d565b9950614c48565b614c458b8d615dc3565b90505b9b9c9a9b999a975050505050505050565b600060016001607f1b03198212801590614c7a575060016001607f1b038213155b612a2a5760405163a5353be560e01b815260040160405180910390fd5b6000818313614ca65781612564565b5090919050565b60008183136148dd5782612564565b60006144b7878787614cd688670de0b6b3a7640000615c8c565b8787614f60565b6000808080614cf486670de0b6b3a7640000615c8c565b9050614d298786611b9d8b612a85867f000000000000000000000000000000000000000000000000000000000000000061254f565b9350614d55847f000000000000000000000000000000000000000000000000000000000000000061254f565b91506000614d6e614b1e89670de0b6b3a7640000615c8c565b9050614d9a817f000000000000000000000000000000000000000000000000000000000000000061254f565b9350614dc6847f000000000000000000000000000000000000000000000000000000000000000061254f565b614dd09084615c9f565b925050509450945094915050565b6000818311614ca65781612564565b6000614dfb612d0c83613a1d565b60008080526002602052600080516020615ec28339815191525491925090614e24908590615c9f565b9050610f77858383876148e3565b6000826000190484118302158202614e4957600080fd5b50910281810615159190040190565b600080670de0b6b3a7640000614e6c6121b4565b614e769190615cc8565b9050808311614e86576000614e90565b614e908184615c8c565b91506148da614ec7670de0b6b3a76400007f0000000000000000000000000000000000000000000000000000000000000000615cc8565b83906147b6565b60008080614edc85856147b6565b90506000614eed82868c8a8d615522565b90506000614f28614f06670de0b6b3a76400008a6147b6565b614f1e614f178b612a758b8f61254f565b869061254f565b612a759085615c8c565b9050614f34898c615c8c565b614f3e8b83615c8c565b945094505050505b965096945050505050565b60008183116148dd5782612564565b600080614f71888888888888615550565b909250905080614bd357604051637ac17d2560e01b815260040160405180910390fd5b60008080614fa285856147b6565b90506000614fb382868b8a8c615522565b90506000614fe8614fcc670de0b6b3a76400008a6147b6565b612a75614fe1670de0b6b3a764000087615c9f565b85906147b6565b90506000614ff682886147b6565b90506150028b82615c8c565b61500c838c615c8c565b95509550505050509550959350505050565b60008061502b84846147b6565b9050600061503c82858b898c615522565b905061504c86612a75898b615c8c565b97506000615073615065670de0b6b3a7640000896147cb565b612a7585613a178d87615c8c565b905061507f81866147b6565b905061508b8a82615c8c565b9a9950505050505050505050565b600080806150b2614a3688670de0b6b3a7640000615c8c565b90508615614a80576150c4888861254f565b9150614a718a8a846150de8a670de0b6b3a7640000615c8c565b8989614f60565b60606150f484846000856155f1565b949350505050565b60008061510984846147b6565b9050600061511a82858b898c615522565b905061513486612a7561512d8a8d615c9f565b879061254f565b9850615140828a61254f565b98506000615163615159670de0b6b3a7640000896147cb565b612a758c85615c8c565b905061508b818a615c8c565b600080821361519157604051636838feed60e11b815260040160405180910390fd5b5060606001600160801b03821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110600190811b90911783811c90911017609f81810383019390931b90921c6c465772b2bbbb5f824b15207a3081018102821d6d0388eaa27412d5aca026815d636e018102821d6d0df99ac502031bf953eff472fdcc018102821d6d13cdffb29d51d99322bdff5f2211018102821d6d0a0f742023def783a307a986912e018102821d6d01920d8043ca89b5239253284e42018102821d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7882018202831d6d0139601a2efabe717e604cbb4894018202831d6d02247f7a7b6594320649aa03aba1018202831d6c8c3f38e95a6b1ff2ab1c3b343619018202831d6d02384773bdf1ac5676facced60901901820290921d6cb9a025d814b29c212b8b1a07cd190102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a550602605f19919091017d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b6000680248ce36a70cb26b3e19821361539d57506000919050565b680755bf798b4a1bf1e582126153c65760405163df92cc9d60e01b815260040160405180910390fd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b60006125648383670de0b6b3a7640000614e32565b600061552e82846147e0565b61554661553f85612a75898961254f565b889061254f565b613deb9190615c9f565b6000808061555e85856147b6565b9050600061556f82868c8a8d615522565b905061557f87612a758a8c615c9f565b98508881101561559757600080935093505050614f46565b60006155bc6155ae670de0b6b3a76400008a6147cb565b612a7585613a178e87615c8c565b90506155c881876147b6565b9050808b11156155df576155dc818c615c8c565b94505b60019350505050965096945050505050565b6060824710156156525760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610700565b600080866001600160a01b0316858760405161566e9190615e72565b60006040518083038185875af1925050503d80600081146156ab576040519150601f19603f3d011682016040523d82523d6000602084013e6156b0565b606091505b50915091506144b7878383876060831561572b578251600003615724576001600160a01b0385163b6157245760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610700565b50816150f4565b6150f483838151156157405781518083602001fd5b8060405162461bcd60e51b81526004016107009190615e8e565b8183823760009101908152919050565b805160208201516001600160e01b031980821692919060048310156157995780818460040360031b1b83161693505b505050919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156157d25781810151838201526020016157ba565b50506000910152565b6000602082840312156157ed57600080fd5b815167ffffffffffffffff8082111561580557600080fd5b818401915084601f83011261581957600080fd5b81518181111561582b5761582b6157a1565b604051601f8201601f19908116603f01168101908382118183101715615853576158536157a1565b8160405282815287602084870101111561586c57600080fd5b6144b78360208301602088016157b7565b6001600160a01b038116811461589257600080fd5b50565b6000602082840312156158a757600080fd5b81356125648161587d565b801515811461589257600080fd5b6000602082840312156158d257600080fd5b8135612564816158b2565b600080600080600060a086880312156158f557600080fd5b85359450602086013593506040860135925060608601356159158161587d565b91506080860135615925816158b2565b809150509295509295909350565b60008083601f84011261594557600080fd5b50813567ffffffffffffffff81111561595d57600080fd5b6020830191508360208260051b85010111156121ad57600080fd5b6000806000806000806080878903121561599157600080fd5b863561599c8161587d565b955060208701356159ac8161587d565b9450604087013567ffffffffffffffff808211156159c957600080fd5b6159d58a838b01615933565b909650945060608901359150808211156159ee57600080fd5b506159fb89828a01615933565b979a9699509497509295939492505050565b60008060008060808587031215615a2357600080fd5b843593506020850135615a358161587d565b92506040850135615a458161587d565b9396929550929360600135925050565b60008060008060808587031215615a6b57600080fd5b84359350602085013592506040850135615a848161587d565b91506060850135615a94816158b2565b939692955090935050565b60008060008060808587031215615ab557600080fd5b843593506020850135615ac78161587d565b9250604085013591506060850135615a948161587d565b60008060408385031215615af157600080fd5b8235615afc8161587d565b91506020830135615b0c816158b2565b809150509250929050565b600080600080600080600060e0888a031215615b3257600080fd5b8735615b3d8161587d565b96506020880135615b4d8161587d565b95506040880135615b5d816158b2565b945060608801359350608088013560ff81168114615b7a57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080600060608486031215615bac57600080fd5b833592506020840135615bbe8161587d565b929592945050506040919091013590565b600080600080600060a08688031215615be757600080fd5b853594506020860135615bf98161587d565b93506040860135615c098161587d565b92506060860135915060808601356159258161587d565b600060208284031215615c3257600080fd5b5035919050565b600060208284031215615c4b57600080fd5b5051919050565b6020808252600a90820152695245454e5452414e435960b01b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156123f7576123f7615c76565b808201808211156123f7576123f7615c76565b634e487b7160e01b600052603260045260246000fd5b80820281158282048414176123f7576123f7615c76565b6001600160801b03828116828216039080821115615cff57615cff615c76565b5092915050565b600060018201615d1857615d18615c76565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082615d4457615d44615d1f565b500690565b6001600160801b03818116838216019080821115615cff57615cff615c76565b600f81810b9083900b0160016001607f1b03811360016001607f1b0319821217156123f7576123f7615c76565b600f82810b9082900b0360016001607f1b0319811260016001607f1b03821317156123f7576123f7615c76565b8181036000831280158383131683831282161715615cff57615cff615c76565b6000600160ff1b8201615df857615df8615c76565b5060000390565b8082018281126000831280158216821582161715615e1f57615e1f615c76565b505092915050565b600060208284031215615e3957600080fd5b8151612564816158b2565b600082615e5357615e53615d1f565b600160ff1b821460001984141615615e6d57615e6d615c76565b500590565b60008251615e848184602087016157b7565b9190910192915050565b6020815260008251806020840152615ead8160408501602087016157b7565b601f01601f1916919091016040019291505056feac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077ba264697066735822122039e3fddb3f9bbe984b4a4b61036b1b5b7db0b3a378e92e49314d4c6b35a9b66864736f6c63430008130033a264697066735822122092145a2de156bec23ea48c0e8036e4531394690138ce968a41085ab92b6f4afe64736f6c63430008130033", + "sourceMap": "910:1538:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1651:795;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;3987:32:153;;;3969:51;;3957:2;3942:18;1651:795:9;;;;;;;;1880:7;1959:29;2053:10;2037:26;;2222:7;2251:13;2286:15;2323:14;2359:4;2385:12;2179:236;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2133:306:9;1651:795;-1:-1:-1;;;;;;;1651:795:9:o;-1:-1:-1:-;;;;;;;;:::o;14:127:153:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:250;213:2;207:9;255:6;243:19;;292:18;277:34;;313:22;;;274:62;271:88;;;339:18;;:::i;:::-;375:2;368:22;146:250;:::o;401:181::-;477:20;;-1:-1:-1;;;;;526:31:153;;516:42;;506:70;;572:1;569;562:12;506:70;401:181;;;:::o;587:535::-;638:5;686:4;674:9;669:3;665:19;661:30;658:50;;;704:1;701;694:12;658:50;737:2;731:9;779:4;771:6;767:17;850:6;838:10;835:22;814:18;802:10;799:34;796:62;793:88;;;861:18;;:::i;:::-;901:10;897:2;890:22;;930:6;921:15;;973:9;960:23;952:6;945:39;1045:2;1034:9;1030:18;1017:32;1012:2;1004:6;1000:15;993:57;1111:2;1100:9;1096:18;1083:32;1078:2;1070:6;1066:15;1059:57;;587:535;;;;:::o;1127:902::-;1181:5;1234:3;1227:4;1219:6;1215:17;1211:27;1201:55;;1252:1;1249;1242:12;1201:55;1288:6;1275:20;1314:4;1337:18;1374:2;1370;1367:10;1364:36;;;1380:18;;:::i;:::-;1426:2;1423:1;1419:10;1458:2;1452:9;1521:2;1517:7;1512:2;1508;1504:11;1500:25;1492:6;1488:38;1576:6;1564:10;1561:22;1556:2;1544:10;1541:18;1538:46;1535:72;;;1587:18;;:::i;:::-;1623:2;1616:22;1673:18;;;1749:15;;;1745:24;;;1707:15;;;;-1:-1:-1;1781:15:153;;;1778:35;;;1809:1;1806;1799:12;1778:35;1845:2;1837:6;1833:15;1822:26;;1857:142;1873:6;1868:3;1865:15;1857:142;;;1939:17;;1927:30;;1977:12;;;;1890;;;;1857:142;;;2017:6;1127:902;-1:-1:-1;;;;;;;1127:902:153:o;2034:1675::-;2182:6;2190;2198;2206;2214;2258:9;2249:7;2245:23;2288:3;2284:2;2280:12;2277:32;;;2305:1;2302;2295:12;2277:32;2328:6;2354:2;2350;2346:11;2343:31;;;2370:1;2367;2360:12;2343:31;2396:17;;:::i;:::-;2383:30;;2436:37;2463:9;2436:37;:::i;:::-;2429:5;2422:52;2534:2;2523:9;2519:18;2506:32;2501:2;2494:5;2490:14;2483:56;2599:2;2588:9;2584:18;2571:32;2566:2;2559:5;2555:14;2548:56;2664:2;2653:9;2649:18;2636:32;2631:2;2624:5;2620:14;2613:56;2730:3;2719:9;2715:19;2702:33;2696:3;2689:5;2685:15;2678:58;2797:3;2786:9;2782:19;2769:33;2763:3;2756:5;2752:15;2745:58;2864:3;2853:9;2849:19;2836:33;2830:3;2823:5;2819:15;2812:58;2903:47;2945:3;2934:9;2930:19;2903:47;:::i;:::-;2897:3;2890:5;2886:15;2879:72;2970:3;3005:46;3047:2;3036:9;3032:18;3005:46;:::i;:::-;2989:14;;;2982:70;3071:3;3106:51;3149:7;3129:18;;;3106:51;:::i;:::-;3101:2;3094:5;3090:14;3083:75;;3222:6;3211:9;3207:22;3194:36;3185:6;3178:5;3174:18;3167:64;3295:3;3284:9;3280:19;3267:33;3258:6;3251:5;3247:18;3240:61;3320:5;3310:15;;3344:46;3386:2;3375:9;3371:18;3344:46;:::i;:::-;3334:56;;;;3437:3;3426:9;3422:19;3409:33;3399:43;;3461:47;3503:3;3492:9;3488:19;3461:47;:::i;:::-;3451:57;;3559:3;3548:9;3544:19;3531:33;3587:18;3579:6;3576:30;3573:50;;;3619:1;3616;3609:12;3573:50;3642:61;3695:7;3686:6;3675:9;3671:22;3642:61;:::i;:::-;3632:71;;;2034:1675;;;;;;;;:::o;4237:461::-;4290:3;4328:5;4322:12;4355:6;4350:3;4343:19;4381:4;4410:2;4405:3;4401:12;4394:19;;4447:2;4440:5;4436:14;4468:1;4478:195;4492:6;4489:1;4486:13;4478:195;;;4557:13;;-1:-1:-1;;;;;4553:39:153;4541:52;;4613:12;;;;4648:15;;;;4589:1;4507:9;4478:195;;;-1:-1:-1;4689:3:153;;4237:461;-1:-1:-1;;;;;4237:461:153:o;4703:1685::-;5118:13;;-1:-1:-1;;;;;3780:31:153;3768:44;;5058:4;5087:3;5199:4;5191:6;5187:17;5181:24;5174:4;5163:9;5159:20;5152:54;5262:4;5254:6;5250:17;5244:24;5237:4;5226:9;5222:20;5215:54;5325:4;5317:6;5313:17;5307:24;5300:4;5289:9;5285:20;5278:54;5388:4;5380:6;5376:17;5370:24;5363:4;5352:9;5348:20;5341:54;5451:4;5443:6;5439:17;5433:24;5426:4;5415:9;5411:20;5404:54;5514:4;5506:6;5502:17;5496:24;5489:4;5478:9;5474:20;5467:54;5568:4;5560:6;5556:17;5550:24;5583:54;5631:4;5620:9;5616:20;5602:12;-1:-1:-1;;;;;3780:31:153;3768:44;;3714:104;5583:54;-1:-1:-1;5656:6:153;5699:15;;;5693:22;-1:-1:-1;;;;;3780:31:153;;5759:18;;;3768:44;-1:-1:-1;;5797:6:153;5840:15;;;5834:22;4101:12;;5904:18;;;4089:25;4163:4;4152:16;;4146:23;4130:14;;;4123:47;4219:4;4208:16;;4202:23;4186:14;;;4179:47;-1:-1:-1;;5981:6:153;5969:19;;5963:26;5954:6;5939:22;;5932:58;6048:6;6036:19;;6030:26;6021:6;6006:22;;5999:58;-1:-1:-1;;;;;3780:31:153;;6108:3;6093:19;;3768:44;6150:6;6144:3;6133:9;6129:19;6122:35;6166:47;6208:3;6197:9;6193:19;6185:6;-1:-1:-1;;;;;3780:31:153;3768:44;;3714:104;6166:47;-1:-1:-1;;;;;3780:31:153;;6264:3;6249:19;;3768:44;6306:2;6300:3;6289:9;6285:19;6278:31;6326:56;6378:2;6367:9;6363:18;6355:6;6326:56;:::i;:::-;6318:64;4703:1685;-1:-1:-1;;;;;;;;;4703:1685:153:o", "linkReferences": {}, "immutableReferences": { - "5050": [ + "5053": [ { "start": 115, "length": 32 @@ -151,7 +151,7 @@ "methodIdentifiers": { "deploy((address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),address,bytes32,address,bytes32[])": "e3420f4f" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"_pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialSharePrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumShareReserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumTransactionAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"checkpointDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeStretch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeCollector\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.Fees\",\"name\":\"fees\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"oracleSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updateGap\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.PoolConfig\",\"name\":\"_config\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_dataProvider\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_linkerCodeHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_linkerFactory\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"_extraData\",\"type\":\"bytes32[]\"}],\"name\":\"deploy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"DELV\",\"custom:disclaimer\":\"The language used in this code is for coding convenience only, and is not intended to, and does not, have any particular legal or regulatory significance.\",\"details\":\"We use two contracts to avoid any code size limit issues with Hyperdrive.\",\"kind\":\"dev\",\"methods\":{\"deploy((address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),address,bytes32,address,bytes32[])\":{\"params\":{\"_config\":\"The configuration of the Hyperdrive pool.\",\"_dataProvider\":\"The address of the data provider.\",\"_extraData\":\"The extra data that contains the sweep targets.\",\"_linkerCodeHash\":\"The hash of the ERC20 linker contract's constructor code.\",\"_linkerFactory\":\"The address of the factory which is used to deploy the ERC20 linker contracts.\"},\"returns\":{\"_0\":\"The address of the newly deployed ERC4626Hyperdrive Instance\"}}},\"title\":\"ERC4626HyperdriveFactory\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deploy((address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),address,bytes32,address,bytes32[])\":{\"notice\":\"Deploys a copy of hyperdrive with the given params.\"}},\"notice\":\"This is a minimal factory which contains only the logic to deploy hyperdrive and is called by a more complex factory which initializes the Hyperdrive instances and acts as a registry.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/src/factory/ERC4626HyperdriveDeployer.sol\":\"ERC4626HyperdriveDeployer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@aave/=lib/aave-v3-core/contracts/\",\":aave-v3-core/=lib/aave-v3-core/\",\":create3-factory/=lib/yield-daddy/lib/create3-factory/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":yield-daddy/=lib/yield-daddy/\"]},\"sources\":{\"contracts/src/DataProvider.sol\":{\"keccak256\":\"0xd23ffd6ff77b03ea16b61130fdfcda6d2bfa430576241003f89b35cd76f51e30\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://cc1ab2f99af4241f81feeeda6514fd30f11997adafddcdb48bebd2b383aae212\",\"dweb:/ipfs/QmSPp2B1Pka73Ur1KQMybMs3u73VUrDhev5w6U9iGLTmw7\"]},\"contracts/src/Hyperdrive.sol\":{\"keccak256\":\"0xd2e2e47f45dab0447497a20b8ef54960190d3c01ce2f53dbfae6abe2d095f1f5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c8d8f034071cf69e922975cddb6123fe125862688ecbe2c3fc01c1f235a4a72e\",\"dweb:/ipfs/QmQraAs5iFKtRYQTqFmpRLh6NSyYxbqrBMFgkGJL2E2ZCN\"]},\"contracts/src/HyperdriveBase.sol\":{\"keccak256\":\"0x978cac18e731453de1268355e70fae31f71718e4149ad1969a56133d1f04cf95\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a3c37a688a10766ade884f36c111925d71318306e46c6e2d207c85ecc7adfb3e\",\"dweb:/ipfs/QmZJu7M9zPNKd2XahfHAtCLX9483228MzMrgP2fVaS1jbn\"]},\"contracts/src/HyperdriveLP.sol\":{\"keccak256\":\"0xe2f37ecc51c9eba59c4b5c13549ed4cdc0415d8af1902442d52ed012e4b9c22a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://53efc435c55fa29822d5ae3271cc42bf4ae096e4dfc9fb150a410f39cd43651e\",\"dweb:/ipfs/QmQgRowy4YqCsxV9A9mFyxzGF7FigC4Huc66Cxy8YfeYAv\"]},\"contracts/src/HyperdriveLong.sol\":{\"keccak256\":\"0x6d4bc7d1806f2c55799d3b833445f14f8d28bc8105c235a7c9ec805e17551c96\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e25512de5766960063da80562a880cc068c2d45cc325a01aacaede5a005163e\",\"dweb:/ipfs/QmQGyMWTyavZoikVvNi4UCqbJVqU3YHoPM3T2U99HS2DKn\"]},\"contracts/src/HyperdriveShort.sol\":{\"keccak256\":\"0x2abaef784c472d8652a55c42dacc4b64ee20c361e7a913d7d13a3e3db2c3a7b7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://f083a8c7df071cf75f4332b31d0b6026ea0c22c5524b1f75369a6ee1bfbbbcf5\",\"dweb:/ipfs/QmXWssg2uwMeTxrPEF6FPj4EV84LkaHSYm5gfmX8gwysZd\"]},\"contracts/src/HyperdriveStorage.sol\":{\"keccak256\":\"0xf02f44333981dfbf6c500bf979aab8cd7aee9731d103a6aafc247e09b90b76bc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6664cd66465073274f9c2c27fee39e1c64e8e21fff532e64cd3014800582b00a\",\"dweb:/ipfs/QmSGH1ixAUMu81yYf3pMFHo4uJxw6XgfnkBupjUSoFcdNY\"]},\"contracts/src/HyperdriveTWAP.sol\":{\"keccak256\":\"0x76cba088948ab50bb4956377235b302b28ef7c9f6cc68bda73211d66df41e92b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://74e1b28c8cd08aa9adf3b3f31f0379c095299cd2b9de3d3595d7d55b0e0697cc\",\"dweb:/ipfs/QmTTnkPF3jUmdfynnJK6kUBTYSBZFWJs69A9e9tPQzqiac\"]},\"contracts/src/factory/ERC4626HyperdriveDeployer.sol\":{\"keccak256\":\"0x8f79742098b3809d050204f18f887f9a1c38eaa8a2fc8d1949f4ab741041619c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://f6916922776e2cf110646eea4a728a802437b46596aeaaa9888e6d736fe1e4f1\",\"dweb:/ipfs/Qma9U1kEYdQz6WDBYdiMH2gJ7AnX8xfBUB8XfLqJ2ztX1p\"]},\"contracts/src/instances/ERC4626Hyperdrive.sol\":{\"keccak256\":\"0xee0cdfed80801cd31d14173548d63bf514ba1b5618504b607db4a9acf41c31f4\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://53234be5f647cef80eec3461170cc8271119d9d5019f65860e23fb5e4a5247d4\",\"dweb:/ipfs/QmXJM27Nf5NNfTayerGiv5C59u7gw5bW1VZ6gXyugzdxmk\"]},\"contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4642a027efffb3aa6cdc85e31796fb3b1bc4fff4316e6390874e6f4add37b86c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3720a6c1c427dcfcbdeeec15cbdb682115e44e0a9136af7e0ad9e5af2ea40672\",\"dweb:/ipfs/QmP4bmaHw8MfX9MQLhhgnVQ9U9BTQAR3e5cCCE9RcoeX7w\"]},\"contracts/src/interfaces/IERC4626.sol\":{\"keccak256\":\"0xaf48462596aa9c7544086c0a5e53adc7bf8f713662a5fb270ffb4e4db16e23cf\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b2e5e6d94edba7e97dce8b5e061d40955d39fa586579d170f66cbecdbd2348dc\",\"dweb:/ipfs/QmeUkSbHaBmCeZnmup5RujvxRAyhw1u9vpRRpzeuU2wiia\"]},\"contracts/src/interfaces/IHyperdrive.sol\":{\"keccak256\":\"0x3336dbc3128174594baa25c95f3be485aa61a77a06afbb75e2708987247a5bb5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e189558d4f78633d90ecdb3ff8d775109394a98cb18d19507642cb56c43dc1e\",\"dweb:/ipfs/QmZMVsor78To4nbXwLDBaZKD8m68PT53C9mxvR8iUkM5i5\"]},\"contracts/src/interfaces/IHyperdriveDeployer.sol\":{\"keccak256\":\"0x7f6184ad6c3b28650b6644e74d7fdf4af5854c6e80f813da468a496aeb8c6da0\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://ce31b67fc912729ee56d8b53abf699882ea44ddd4c62052dc1685c9694685587\",\"dweb:/ipfs/QmbUBE3V1ahsVKrKzHs8Ho5H4U1XVB182BsRDFgt4ZjLZB\"]},\"contracts/src/interfaces/IHyperdriveRead.sol\":{\"keccak256\":\"0x837939af4a9224c5f4ea564e9b33a5612442b7d7d50b7f8bb32be6bb3ce239b3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3bfebedcb31d2edf86a69f0dfbcc5aa7b96edc2d8197b4a4681a200cb6ffe993\",\"dweb:/ipfs/Qmeq4oAGxKv3mvRRWkqYBjfdozPkhi3MqBRFNnNkmAwCtt\"]},\"contracts/src/interfaces/IHyperdriveWrite.sol\":{\"keccak256\":\"0xe2ba8031ab98a81026010af00de9935b79ade6701dc486fd1c02d67f4eb81bf8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e6acf863128f355e6ad26130037797a08321054ac8e202274debf6730162467\",\"dweb:/ipfs/Qmbf6882o3a7mci1j4w2XJtUDfsJvECGF6Yz3PG8q4LQgk\"]},\"contracts/src/interfaces/IMultiToken.sol\":{\"keccak256\":\"0xe3d64871148bdae5a714107b8b1a55f39cd4ede601436d2777a165d20d768a1a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9ebc0bfda35e9b7299c43f0efff38012b8074fcca867b781c0cedeede10cf3d0\",\"dweb:/ipfs/QmbHRLezFhWavHakK5G26DB4ud5PueU6fNvZf3L3TwXnPb\"]},\"contracts/src/interfaces/IMultiTokenMetadata.sol\":{\"keccak256\":\"0xcdc60ba02194150741a78cb0c52c306f5f577c5c814c63e98a13d46c02d2d9cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8f5866cb2c8c4342dba88c0e4d78296fef0e170b18b3613c796c29dc31a5ca87\",\"dweb:/ipfs/QmZcoDTYhhYSB5ds3cNPJpdZTxrz6cF8M2vNVeuAcT8gw6\"]},\"contracts/src/interfaces/IMultiTokenRead.sol\":{\"keccak256\":\"0x2e55fa961123a8bb7284c8388af9bd1302a7153441ffe641804ea79021bdca05\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c7dc03bbab02976609dec59c201e5b57a2998d1c626cef58d7a9fa7c2b06b939\",\"dweb:/ipfs/QmSifWr9cVWaUEmyKpGFcgpKCYdoBYgWtQBLgemtwo4a7x\"]},\"contracts/src/interfaces/IMultiTokenWrite.sol\":{\"keccak256\":\"0xa5ba8812e06fb6d38e1872603c8b80321cfd2f96cecbe7b67b92cb33e93b3fc8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://73afa34919c7d457e925b4be83abb1b1ed2ed731a382ebffad95a3005c04bd5a\",\"dweb:/ipfs/QmauMxmgtYTS7RJQw1mS7Pwe5FUMDPHE2N1MBhFUjk6HPe\"]},\"contracts/src/libraries/AssetId.sol\":{\"keccak256\":\"0x82515c6d8fc8dbc940b0e40de0bfa584ade8a5a0f24ef14e352deced1e89a384\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://fa01b52b6e05d6c304ee938ab7181cacd6cfede09c5f6eca8f6d86b31e0fe806\",\"dweb:/ipfs/QmNVyKLPJnP71ADgTwvS9D2ME2xsPVwjD32yCnNdmvLmpT\"]},\"contracts/src/libraries/FixedPointMath.sol\":{\"keccak256\":\"0x0108762fdecfae06d7b8d76bb52b1a5757669cc2a4e5f3ad701499295ed635bd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a94cdbab2bdbb0212597f70cebea86fcf69be0702f6d6fe76571ee43992d7d6b\",\"dweb:/ipfs/QmXyncXgKixNzP7rgqoCA2dzehjPTAsEbtAKZGW6CQADFE\"]},\"contracts/src/libraries/HyperdriveMath.sol\":{\"keccak256\":\"0x9acd606f849bec2b31ee37bbee4c3f3df02aef24491f01c4a965bca21dde3c4e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7000734fef6247718a99ca8bc902e4452fbc8445f09969521ac7330256e64518\",\"dweb:/ipfs/QmSFp3AMhxcKexKPzLn6rJu9iG8qUCA41pNBAW7C4dhNaa\"]},\"contracts/src/libraries/SafeCast.sol\":{\"keccak256\":\"0x077e800ae4f47bda111e72f8c40d50a57b10a1c5bce81f2e83bb57f94752159f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8e9433729a73747a65ececae27a8f634300a4e02a66577f796f596e5894a4bb5\",\"dweb:/ipfs/QmT2fC2xaRoFuDBURAtcwqvpqXvw1AQybSgb4khVBzit2S\"]},\"contracts/src/libraries/YieldSpaceMath.sol\":{\"keccak256\":\"0xb8682a4823e01535b6bc73755f6304d0846c44526d882cefc0c3b04b807e2a04\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://836744182376d0cd9721e15334c3f972d77564586220b8db7b63737342b410ef\",\"dweb:/ipfs/QmVxEHgnVkDTNggxbC83wMzvDmsQaUq1vTbFosShjzgAmr\"]},\"contracts/src/token/MultiToken.sol\":{\"keccak256\":\"0x1c22e52ab701c2b7ce3c0b049540ecba5fc24cd8b8000464b5b15c99dfee6a19\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://089273a3f853bdb205d34b70750eeca2edda7aaf999726ed9df0621d1e92bb98\",\"dweb:/ipfs/QmPy3tUmJb7gtnL9ACiWhhekKXGo3z3cd4SMYiUQX4geHy\"]},\"contracts/src/token/MultiTokenStorage.sol\":{\"keccak256\":\"0x97a22d11197f185d6f17ff5ada60665b27af265c23b208f20004e22b26d7b7e8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://62f950f46f3de598776e8e8201a0d35ec51473cc0ea754be5c9e686078ebb3d6\",\"dweb:/ipfs/QmaKpZETx9zCV46XwcqvXUr7f8t2CPo1Tim2umTDwsk2bj\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/solmate/src/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xb282dd78aa7375d6b200b9a5d8dd214b2e5df1004f8217a4b4c2b07f0c5bfd01\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://5fca62eb8d3dbd2b3b7e4bb051f6da16f4d0ff9cee61c39cebb80f031f6a8800\",\"dweb:/ipfs/QmbrsXPK91iBFwHKwJs2HLRud2KzMoBDRiWYMUtyV5H57j\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"_pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialSharePrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumShareReserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumTransactionAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"checkpointDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeStretch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeCollector\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.Fees\",\"name\":\"fees\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"oracleSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updateGap\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.PoolConfig\",\"name\":\"_config\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_dataProvider\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_linkerCodeHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_linkerFactory\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"_extraData\",\"type\":\"bytes32[]\"}],\"name\":\"deploy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"DELV\",\"custom:disclaimer\":\"The language used in this code is for coding convenience only, and is not intended to, and does not, have any particular legal or regulatory significance.\",\"details\":\"We use two contracts to avoid any code size limit issues with Hyperdrive.\",\"kind\":\"dev\",\"methods\":{\"deploy((address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),address,bytes32,address,bytes32[])\":{\"params\":{\"_config\":\"The configuration of the Hyperdrive pool.\",\"_dataProvider\":\"The address of the data provider.\",\"_extraData\":\"The extra data that contains the sweep targets.\",\"_linkerCodeHash\":\"The hash of the ERC20 linker contract's constructor code.\",\"_linkerFactory\":\"The address of the factory which is used to deploy the ERC20 linker contracts.\"},\"returns\":{\"_0\":\"The address of the newly deployed ERC4626Hyperdrive Instance\"}}},\"title\":\"ERC4626HyperdriveFactory\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deploy((address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),address,bytes32,address,bytes32[])\":{\"notice\":\"Deploys a copy of hyperdrive with the given params.\"}},\"notice\":\"This is a minimal factory which contains only the logic to deploy hyperdrive and is called by a more complex factory which initializes the Hyperdrive instances and acts as a registry.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/src/factory/ERC4626HyperdriveDeployer.sol\":\"ERC4626HyperdriveDeployer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@aave/=lib/aave-v3-core/contracts/\",\":aave-v3-core/=lib/aave-v3-core/\",\":create3-factory/=lib/yield-daddy/lib/create3-factory/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":yield-daddy/=lib/yield-daddy/\"]},\"sources\":{\"contracts/src/DataProvider.sol\":{\"keccak256\":\"0xd23ffd6ff77b03ea16b61130fdfcda6d2bfa430576241003f89b35cd76f51e30\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://cc1ab2f99af4241f81feeeda6514fd30f11997adafddcdb48bebd2b383aae212\",\"dweb:/ipfs/QmSPp2B1Pka73Ur1KQMybMs3u73VUrDhev5w6U9iGLTmw7\"]},\"contracts/src/Hyperdrive.sol\":{\"keccak256\":\"0xd2e2e47f45dab0447497a20b8ef54960190d3c01ce2f53dbfae6abe2d095f1f5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c8d8f034071cf69e922975cddb6123fe125862688ecbe2c3fc01c1f235a4a72e\",\"dweb:/ipfs/QmQraAs5iFKtRYQTqFmpRLh6NSyYxbqrBMFgkGJL2E2ZCN\"]},\"contracts/src/HyperdriveBase.sol\":{\"keccak256\":\"0x978cac18e731453de1268355e70fae31f71718e4149ad1969a56133d1f04cf95\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a3c37a688a10766ade884f36c111925d71318306e46c6e2d207c85ecc7adfb3e\",\"dweb:/ipfs/QmZJu7M9zPNKd2XahfHAtCLX9483228MzMrgP2fVaS1jbn\"]},\"contracts/src/HyperdriveLP.sol\":{\"keccak256\":\"0xe2f37ecc51c9eba59c4b5c13549ed4cdc0415d8af1902442d52ed012e4b9c22a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://53efc435c55fa29822d5ae3271cc42bf4ae096e4dfc9fb150a410f39cd43651e\",\"dweb:/ipfs/QmQgRowy4YqCsxV9A9mFyxzGF7FigC4Huc66Cxy8YfeYAv\"]},\"contracts/src/HyperdriveLong.sol\":{\"keccak256\":\"0x004b7cadd3e9090ca6f5a59510696e3b844839e6305c9076cd3fd31d9b0a3188\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://da04266d0c817b69cde906770f047e9add9f8983a12553413c67b2c60ff15c2f\",\"dweb:/ipfs/QmNmKcdUVGLmjxMvUq8kyETZrkfW43JDXfcPHJfP4GrF6V\"]},\"contracts/src/HyperdriveShort.sol\":{\"keccak256\":\"0x3bdfd1e33a2498c6183dfb1684b0db7e6775e9ae2e1097800aeccc869b9e2baa\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e5c9337dfb069d806644ea7ceabe425222f1bc5766248648ba7a9a420715bee8\",\"dweb:/ipfs/QmaL1ZHX4zyAXxMqNmJB4mZ5o54JUTWLnTrKGMBJmbnRDa\"]},\"contracts/src/HyperdriveStorage.sol\":{\"keccak256\":\"0xf02f44333981dfbf6c500bf979aab8cd7aee9731d103a6aafc247e09b90b76bc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6664cd66465073274f9c2c27fee39e1c64e8e21fff532e64cd3014800582b00a\",\"dweb:/ipfs/QmSGH1ixAUMu81yYf3pMFHo4uJxw6XgfnkBupjUSoFcdNY\"]},\"contracts/src/HyperdriveTWAP.sol\":{\"keccak256\":\"0x76cba088948ab50bb4956377235b302b28ef7c9f6cc68bda73211d66df41e92b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://74e1b28c8cd08aa9adf3b3f31f0379c095299cd2b9de3d3595d7d55b0e0697cc\",\"dweb:/ipfs/QmTTnkPF3jUmdfynnJK6kUBTYSBZFWJs69A9e9tPQzqiac\"]},\"contracts/src/factory/ERC4626HyperdriveDeployer.sol\":{\"keccak256\":\"0x8f79742098b3809d050204f18f887f9a1c38eaa8a2fc8d1949f4ab741041619c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://f6916922776e2cf110646eea4a728a802437b46596aeaaa9888e6d736fe1e4f1\",\"dweb:/ipfs/Qma9U1kEYdQz6WDBYdiMH2gJ7AnX8xfBUB8XfLqJ2ztX1p\"]},\"contracts/src/instances/ERC4626Hyperdrive.sol\":{\"keccak256\":\"0xee0cdfed80801cd31d14173548d63bf514ba1b5618504b607db4a9acf41c31f4\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://53234be5f647cef80eec3461170cc8271119d9d5019f65860e23fb5e4a5247d4\",\"dweb:/ipfs/QmXJM27Nf5NNfTayerGiv5C59u7gw5bW1VZ6gXyugzdxmk\"]},\"contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4642a027efffb3aa6cdc85e31796fb3b1bc4fff4316e6390874e6f4add37b86c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3720a6c1c427dcfcbdeeec15cbdb682115e44e0a9136af7e0ad9e5af2ea40672\",\"dweb:/ipfs/QmP4bmaHw8MfX9MQLhhgnVQ9U9BTQAR3e5cCCE9RcoeX7w\"]},\"contracts/src/interfaces/IERC4626.sol\":{\"keccak256\":\"0xaf48462596aa9c7544086c0a5e53adc7bf8f713662a5fb270ffb4e4db16e23cf\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b2e5e6d94edba7e97dce8b5e061d40955d39fa586579d170f66cbecdbd2348dc\",\"dweb:/ipfs/QmeUkSbHaBmCeZnmup5RujvxRAyhw1u9vpRRpzeuU2wiia\"]},\"contracts/src/interfaces/IHyperdrive.sol\":{\"keccak256\":\"0x3336dbc3128174594baa25c95f3be485aa61a77a06afbb75e2708987247a5bb5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e189558d4f78633d90ecdb3ff8d775109394a98cb18d19507642cb56c43dc1e\",\"dweb:/ipfs/QmZMVsor78To4nbXwLDBaZKD8m68PT53C9mxvR8iUkM5i5\"]},\"contracts/src/interfaces/IHyperdriveDeployer.sol\":{\"keccak256\":\"0x7f6184ad6c3b28650b6644e74d7fdf4af5854c6e80f813da468a496aeb8c6da0\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://ce31b67fc912729ee56d8b53abf699882ea44ddd4c62052dc1685c9694685587\",\"dweb:/ipfs/QmbUBE3V1ahsVKrKzHs8Ho5H4U1XVB182BsRDFgt4ZjLZB\"]},\"contracts/src/interfaces/IHyperdriveRead.sol\":{\"keccak256\":\"0x837939af4a9224c5f4ea564e9b33a5612442b7d7d50b7f8bb32be6bb3ce239b3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3bfebedcb31d2edf86a69f0dfbcc5aa7b96edc2d8197b4a4681a200cb6ffe993\",\"dweb:/ipfs/Qmeq4oAGxKv3mvRRWkqYBjfdozPkhi3MqBRFNnNkmAwCtt\"]},\"contracts/src/interfaces/IHyperdriveWrite.sol\":{\"keccak256\":\"0xe2ba8031ab98a81026010af00de9935b79ade6701dc486fd1c02d67f4eb81bf8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e6acf863128f355e6ad26130037797a08321054ac8e202274debf6730162467\",\"dweb:/ipfs/Qmbf6882o3a7mci1j4w2XJtUDfsJvECGF6Yz3PG8q4LQgk\"]},\"contracts/src/interfaces/IMultiToken.sol\":{\"keccak256\":\"0xe3d64871148bdae5a714107b8b1a55f39cd4ede601436d2777a165d20d768a1a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9ebc0bfda35e9b7299c43f0efff38012b8074fcca867b781c0cedeede10cf3d0\",\"dweb:/ipfs/QmbHRLezFhWavHakK5G26DB4ud5PueU6fNvZf3L3TwXnPb\"]},\"contracts/src/interfaces/IMultiTokenMetadata.sol\":{\"keccak256\":\"0xcdc60ba02194150741a78cb0c52c306f5f577c5c814c63e98a13d46c02d2d9cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8f5866cb2c8c4342dba88c0e4d78296fef0e170b18b3613c796c29dc31a5ca87\",\"dweb:/ipfs/QmZcoDTYhhYSB5ds3cNPJpdZTxrz6cF8M2vNVeuAcT8gw6\"]},\"contracts/src/interfaces/IMultiTokenRead.sol\":{\"keccak256\":\"0x2e55fa961123a8bb7284c8388af9bd1302a7153441ffe641804ea79021bdca05\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c7dc03bbab02976609dec59c201e5b57a2998d1c626cef58d7a9fa7c2b06b939\",\"dweb:/ipfs/QmSifWr9cVWaUEmyKpGFcgpKCYdoBYgWtQBLgemtwo4a7x\"]},\"contracts/src/interfaces/IMultiTokenWrite.sol\":{\"keccak256\":\"0xa5ba8812e06fb6d38e1872603c8b80321cfd2f96cecbe7b67b92cb33e93b3fc8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://73afa34919c7d457e925b4be83abb1b1ed2ed731a382ebffad95a3005c04bd5a\",\"dweb:/ipfs/QmauMxmgtYTS7RJQw1mS7Pwe5FUMDPHE2N1MBhFUjk6HPe\"]},\"contracts/src/libraries/AssetId.sol\":{\"keccak256\":\"0x82515c6d8fc8dbc940b0e40de0bfa584ade8a5a0f24ef14e352deced1e89a384\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://fa01b52b6e05d6c304ee938ab7181cacd6cfede09c5f6eca8f6d86b31e0fe806\",\"dweb:/ipfs/QmNVyKLPJnP71ADgTwvS9D2ME2xsPVwjD32yCnNdmvLmpT\"]},\"contracts/src/libraries/FixedPointMath.sol\":{\"keccak256\":\"0x0108762fdecfae06d7b8d76bb52b1a5757669cc2a4e5f3ad701499295ed635bd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a94cdbab2bdbb0212597f70cebea86fcf69be0702f6d6fe76571ee43992d7d6b\",\"dweb:/ipfs/QmXyncXgKixNzP7rgqoCA2dzehjPTAsEbtAKZGW6CQADFE\"]},\"contracts/src/libraries/HyperdriveMath.sol\":{\"keccak256\":\"0x81bccd15f87d6fb2df7fe455ab94b2f267b0cef1875890d89158f448bb7694b2\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e973fb36a335fa1b7993152f9b051bd52588b1624c3d76f9dd21d35fe45d5c75\",\"dweb:/ipfs/QmbYLW9GPe19dQVCYNdSwvcgqrUZtDRjPyYtF4QtMn49Zb\"]},\"contracts/src/libraries/SafeCast.sol\":{\"keccak256\":\"0x077e800ae4f47bda111e72f8c40d50a57b10a1c5bce81f2e83bb57f94752159f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8e9433729a73747a65ececae27a8f634300a4e02a66577f796f596e5894a4bb5\",\"dweb:/ipfs/QmT2fC2xaRoFuDBURAtcwqvpqXvw1AQybSgb4khVBzit2S\"]},\"contracts/src/libraries/YieldSpaceMath.sol\":{\"keccak256\":\"0xb8682a4823e01535b6bc73755f6304d0846c44526d882cefc0c3b04b807e2a04\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://836744182376d0cd9721e15334c3f972d77564586220b8db7b63737342b410ef\",\"dweb:/ipfs/QmVxEHgnVkDTNggxbC83wMzvDmsQaUq1vTbFosShjzgAmr\"]},\"contracts/src/token/MultiToken.sol\":{\"keccak256\":\"0x1c22e52ab701c2b7ce3c0b049540ecba5fc24cd8b8000464b5b15c99dfee6a19\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://089273a3f853bdb205d34b70750eeca2edda7aaf999726ed9df0621d1e92bb98\",\"dweb:/ipfs/QmPy3tUmJb7gtnL9ACiWhhekKXGo3z3cd4SMYiUQX4geHy\"]},\"contracts/src/token/MultiTokenStorage.sol\":{\"keccak256\":\"0x97a22d11197f185d6f17ff5ada60665b27af265c23b208f20004e22b26d7b7e8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://62f950f46f3de598776e8e8201a0d35ec51473cc0ea754be5c9e686078ebb3d6\",\"dweb:/ipfs/QmaKpZETx9zCV46XwcqvXUr7f8t2CPo1Tim2umTDwsk2bj\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/solmate/src/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xb282dd78aa7375d6b200b9a5d8dd214b2e5df1004f8217a4b4c2b07f0c5bfd01\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://5fca62eb8d3dbd2b3b7e4bb051f6da16f4d0ff9cee61c39cebb80f031f6a8800\",\"dweb:/ipfs/QmbrsXPK91iBFwHKwJs2HLRud2KzMoBDRiWYMUtyV5H57j\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.19+commit.7dd6d404" @@ -376,18 +376,18 @@ "license": "Apache-2.0" }, "contracts/src/HyperdriveLong.sol": { - "keccak256": "0x6d4bc7d1806f2c55799d3b833445f14f8d28bc8105c235a7c9ec805e17551c96", + "keccak256": "0x004b7cadd3e9090ca6f5a59510696e3b844839e6305c9076cd3fd31d9b0a3188", "urls": [ - "bzz-raw://2e25512de5766960063da80562a880cc068c2d45cc325a01aacaede5a005163e", - "dweb:/ipfs/QmQGyMWTyavZoikVvNi4UCqbJVqU3YHoPM3T2U99HS2DKn" + "bzz-raw://da04266d0c817b69cde906770f047e9add9f8983a12553413c67b2c60ff15c2f", + "dweb:/ipfs/QmNmKcdUVGLmjxMvUq8kyETZrkfW43JDXfcPHJfP4GrF6V" ], "license": "Apache-2.0" }, "contracts/src/HyperdriveShort.sol": { - "keccak256": "0x2abaef784c472d8652a55c42dacc4b64ee20c361e7a913d7d13a3e3db2c3a7b7", + "keccak256": "0x3bdfd1e33a2498c6183dfb1684b0db7e6775e9ae2e1097800aeccc869b9e2baa", "urls": [ - "bzz-raw://f083a8c7df071cf75f4332b31d0b6026ea0c22c5524b1f75369a6ee1bfbbbcf5", - "dweb:/ipfs/QmXWssg2uwMeTxrPEF6FPj4EV84LkaHSYm5gfmX8gwysZd" + "bzz-raw://e5c9337dfb069d806644ea7ceabe425222f1bc5766248648ba7a9a420715bee8", + "dweb:/ipfs/QmaL1ZHX4zyAXxMqNmJB4mZ5o54JUTWLnTrKGMBJmbnRDa" ], "license": "Apache-2.0" }, @@ -520,10 +520,10 @@ "license": "Apache-2.0" }, "contracts/src/libraries/HyperdriveMath.sol": { - "keccak256": "0x9acd606f849bec2b31ee37bbee4c3f3df02aef24491f01c4a965bca21dde3c4e", + "keccak256": "0x81bccd15f87d6fb2df7fe455ab94b2f267b0cef1875890d89158f448bb7694b2", "urls": [ - "bzz-raw://7000734fef6247718a99ca8bc902e4452fbc8445f09969521ac7330256e64518", - "dweb:/ipfs/QmSFp3AMhxcKexKPzLn6rJu9iG8qUCA41pNBAW7C4dhNaa" + "bzz-raw://e973fb36a335fa1b7993152f9b051bd52588b1624c3d76f9dd21d35fe45d5c75", + "dweb:/ipfs/QmbYLW9GPe19dQVCYNdSwvcgqrUZtDRjPyYtF4QtMn49Zb" ], "license": "Apache-2.0" }, @@ -604,29 +604,29 @@ }, "ast": { "absolutePath": "contracts/src/factory/ERC4626HyperdriveDeployer.sol", - "id": 5105, + "id": 5108, "exportedSymbols": { "ERC4626Hyperdrive": [ - 6379 + 6382 ], "ERC4626HyperdriveDeployer": [ - 5104 + 5107 ], "IERC4626": [ - 6683 + 6627 ], "IHyperdrive": [ - 7070 + 7014 ], "IHyperdriveDeployer": [ - 7094 + 7038 ] }, "nodeType": "SourceUnit", "src": "39:2410:9", "nodes": [ { - "id": 5036, + "id": 5039, "nodeType": "PragmaDirective", "src": "39:23:9", "nodes": [], @@ -637,23 +637,23 @@ ] }, { - "id": 5038, + "id": 5041, "nodeType": "ImportDirective", "src": "64:71:9", "nodes": [], "absolutePath": "contracts/src/instances/ERC4626Hyperdrive.sol", "file": "../instances/ERC4626Hyperdrive.sol", "nameLocation": "-1:-1:-1", - "scope": 5105, - "sourceUnit": 6380, + "scope": 5108, + "sourceUnit": 6383, "symbolAliases": [ { "foreign": { - "id": 5037, + "id": 5040, "name": "ERC4626Hyperdrive", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6379, + "referencedDeclaration": 6382, "src": "73:17:9", "typeDescriptions": {} }, @@ -663,23 +663,23 @@ "unitAlias": "" }, { - "id": 5040, + "id": 5043, "nodeType": "ImportDirective", "src": "136:54:9", "nodes": [], "absolutePath": "contracts/src/interfaces/IERC4626.sol", "file": "../interfaces/IERC4626.sol", "nameLocation": "-1:-1:-1", - "scope": 5105, - "sourceUnit": 6684, + "scope": 5108, + "sourceUnit": 6628, "symbolAliases": [ { "foreign": { - "id": 5039, + "id": 5042, "name": "IERC4626", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6683, + "referencedDeclaration": 6627, "src": "145:8:9", "typeDescriptions": {} }, @@ -689,23 +689,23 @@ "unitAlias": "" }, { - "id": 5042, + "id": 5045, "nodeType": "ImportDirective", "src": "191:60:9", "nodes": [], "absolutePath": "contracts/src/interfaces/IHyperdrive.sol", "file": "../interfaces/IHyperdrive.sol", "nameLocation": "-1:-1:-1", - "scope": 5105, - "sourceUnit": 7071, + "scope": 5108, + "sourceUnit": 7015, "symbolAliases": [ { "foreign": { - "id": 5041, + "id": 5044, "name": "IHyperdrive", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7070, + "referencedDeclaration": 7014, "src": "200:11:9", "typeDescriptions": {} }, @@ -715,23 +715,23 @@ "unitAlias": "" }, { - "id": 5044, + "id": 5047, "nodeType": "ImportDirective", "src": "252:76:9", "nodes": [], "absolutePath": "contracts/src/interfaces/IHyperdriveDeployer.sol", "file": "../interfaces/IHyperdriveDeployer.sol", "nameLocation": "-1:-1:-1", - "scope": 5105, - "sourceUnit": 7095, + "scope": 5108, + "sourceUnit": 7039, "symbolAliases": [ { "foreign": { - "id": 5043, + "id": 5046, "name": "IHyperdriveDeployer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7094, + "referencedDeclaration": 7038, "src": "261:19:9", "typeDescriptions": {} }, @@ -741,12 +741,12 @@ "unitAlias": "" }, { - "id": 5104, + "id": 5107, "nodeType": "ContractDefinition", "src": "910:1538:9", "nodes": [ { - "id": 5050, + "id": 5053, "nodeType": "VariableDeclaration", "src": "974:32:9", "nodes": [], @@ -754,86 +754,86 @@ "mutability": "immutable", "name": "pool", "nameLocation": "1002:4:9", - "scope": 5104, + "scope": 5107, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6683", + "typeIdentifier": "t_contract$_IERC4626_$6627", "typeString": "contract IERC4626" }, "typeName": { - "id": 5049, + "id": 5052, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 5048, + "id": 5051, "name": "IERC4626", "nameLocations": [ "974:8:9" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6683, + "referencedDeclaration": 6627, "src": "974:8:9" }, - "referencedDeclaration": 6683, + "referencedDeclaration": 6627, "src": "974:8:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6683", + "typeIdentifier": "t_contract$_IERC4626_$6627", "typeString": "contract IERC4626" } }, "visibility": "internal" }, { - "id": 5061, + "id": 5064, "nodeType": "FunctionDefinition", "src": "1013:57:9", "nodes": [], "body": { - "id": 5060, + "id": 5063, "nodeType": "Block", "src": "1041:29:9", "nodes": [], "statements": [ { "expression": { - "id": 5058, + "id": 5061, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 5056, + "id": 5059, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5050, + "referencedDeclaration": 5053, "src": "1051:4:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6683", + "typeIdentifier": "t_contract$_IERC4626_$6627", "typeString": "contract IERC4626" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 5057, + "id": 5060, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5053, + "referencedDeclaration": 5056, "src": "1058:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6683", + "typeIdentifier": "t_contract$_IERC4626_$6627", "typeString": "contract IERC4626" } }, "src": "1051:12:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6683", + "typeIdentifier": "t_contract$_IERC4626_$6627", "typeString": "contract IERC4626" } }, - "id": 5059, + "id": 5062, "nodeType": "ExpressionStatement", "src": "1051:12:9" } @@ -845,41 +845,41 @@ "name": "", "nameLocation": "-1:-1:-1", "parameters": { - "id": 5054, + "id": 5057, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 5053, + "id": 5056, "mutability": "mutable", "name": "_pool", "nameLocation": "1034:5:9", "nodeType": "VariableDeclaration", - "scope": 5061, + "scope": 5064, "src": "1025:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6683", + "typeIdentifier": "t_contract$_IERC4626_$6627", "typeString": "contract IERC4626" }, "typeName": { - "id": 5052, + "id": 5055, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 5051, + "id": 5054, "name": "IERC4626", "nameLocations": [ "1025:8:9" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6683, + "referencedDeclaration": 6627, "src": "1025:8:9" }, - "referencedDeclaration": 6683, + "referencedDeclaration": 6627, "src": "1025:8:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6683", + "typeIdentifier": "t_contract$_IERC4626_$6627", "typeString": "contract IERC4626" } }, @@ -889,40 +889,40 @@ "src": "1024:16:9" }, "returnParameters": { - "id": 5055, + "id": 5058, "nodeType": "ParameterList", "parameters": [], "src": "1041:0:9" }, - "scope": 5104, + "scope": 5107, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 5103, + "id": 5106, "nodeType": "FunctionDefinition", "src": "1651:795:9", "nodes": [], "body": { - "id": 5102, + "id": 5105, "nodeType": "Block", "src": "1889:557:9", "nodes": [], "statements": [ { "assignments": [ - 5084 + 5087 ], "declarations": [ { "constant": false, - "id": 5084, + "id": 5087, "mutability": "mutable", "name": "sweepTargets", "nameLocation": "1976:12:9", "nodeType": "VariableDeclaration", - "scope": 5102, + "scope": 5105, "src": "1959:29:9", "stateVariable": false, "storageLocation": "memory", @@ -932,7 +932,7 @@ }, "typeName": { "baseType": { - "id": 5082, + "id": 5085, "name": "address", "nodeType": "ElementaryTypeName", "src": "1959:7:9", @@ -941,7 +941,7 @@ "typeString": "address" } }, - "id": 5083, + "id": 5086, "nodeType": "ArrayTypeName", "src": "1959:9:9", "typeDescriptions": { @@ -952,7 +952,7 @@ "visibility": "internal" } ], - "id": 5085, + "id": 5088, "nodeType": "VariableDeclarationStatement", "src": "1959:29:9" }, @@ -982,14 +982,14 @@ "evmVersion": "paris", "externalReferences": [ { - "declaration": 5074, + "declaration": 5077, "isOffset": false, "isSlot": false, "src": "2053:10:9", "valueSize": 1 }, { - "declaration": 5084, + "declaration": 5087, "isOffset": false, "isSlot": false, "src": "2037:12:9", @@ -999,7 +999,7 @@ "flags": [ "memory-safe" ], - "id": 5086, + "id": 5089, "nodeType": "InlineAssembly", "src": "1998:75:9" }, @@ -1011,23 +1011,23 @@ { "arguments": [ { - "id": 5092, + "id": 5095, "name": "_config", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5065, + "referencedDeclaration": 5068, "src": "2222:7:9", "typeDescriptions": { - "typeIdentifier": "t_struct$_PoolConfig_$6891_memory_ptr", + "typeIdentifier": "t_struct$_PoolConfig_$6835_memory_ptr", "typeString": "struct IHyperdrive.PoolConfig memory" } }, { - "id": 5093, + "id": 5096, "name": "_dataProvider", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5067, + "referencedDeclaration": 5070, "src": "2251:13:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1035,11 +1035,11 @@ } }, { - "id": 5094, + "id": 5097, "name": "_linkerCodeHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5069, + "referencedDeclaration": 5072, "src": "2286:15:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -1047,11 +1047,11 @@ } }, { - "id": 5095, + "id": 5098, "name": "_linkerFactory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5071, + "referencedDeclaration": 5074, "src": "2323:14:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1059,23 +1059,23 @@ } }, { - "id": 5096, + "id": 5099, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5050, + "referencedDeclaration": 5053, "src": "2359:4:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6683", + "typeIdentifier": "t_contract$_IERC4626_$6627", "typeString": "contract IERC4626" } }, { - "id": 5097, + "id": 5100, "name": "sweepTargets", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5084, + "referencedDeclaration": 5087, "src": "2385:12:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", @@ -1086,7 +1086,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_PoolConfig_$6891_memory_ptr", + "typeIdentifier": "t_struct$_PoolConfig_$6835_memory_ptr", "typeString": "struct IHyperdrive.PoolConfig memory" }, { @@ -1102,7 +1102,7 @@ "typeString": "address" }, { - "typeIdentifier": "t_contract$_IERC4626_$6683", + "typeIdentifier": "t_contract$_IERC4626_$6627", "typeString": "contract IERC4626" }, { @@ -1110,7 +1110,7 @@ "typeString": "address[] memory" } ], - "id": 5091, + "id": 5094, "isConstant": false, "isLValue": false, "isPure": false, @@ -1118,31 +1118,31 @@ "nodeType": "NewExpression", "src": "2179:21:9", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_struct$_PoolConfig_$6891_memory_ptr_$_t_address_$_t_bytes32_$_t_address_$_t_contract$_IERC4626_$6683_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_contract$_ERC4626Hyperdrive_$6379_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_struct$_PoolConfig_$6835_memory_ptr_$_t_address_$_t_bytes32_$_t_address_$_t_contract$_IERC4626_$6627_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_contract$_ERC4626Hyperdrive_$6382_$", "typeString": "function (struct IHyperdrive.PoolConfig memory,address,bytes32,address,contract IERC4626,address[] memory) returns (contract ERC4626Hyperdrive)" }, "typeName": { - "id": 5090, + "id": 5093, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 5089, + "id": 5092, "name": "ERC4626Hyperdrive", "nameLocations": [ "2183:17:9" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6379, + "referencedDeclaration": 6382, "src": "2183:17:9" }, - "referencedDeclaration": 6379, + "referencedDeclaration": 6382, "src": "2183:17:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC4626Hyperdrive_$6379", + "typeIdentifier": "t_contract$_ERC4626Hyperdrive_$6382", "typeString": "contract ERC4626Hyperdrive" } } }, - "id": 5098, + "id": 5101, "isConstant": false, "isLValue": false, "isPure": false, @@ -1154,7 +1154,7 @@ "src": "2179:236:9", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC4626Hyperdrive_$6379", + "typeIdentifier": "t_contract$_ERC4626Hyperdrive_$6382", "typeString": "contract ERC4626Hyperdrive" } } @@ -1162,11 +1162,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ERC4626Hyperdrive_$6379", + "typeIdentifier": "t_contract$_ERC4626Hyperdrive_$6382", "typeString": "contract ERC4626Hyperdrive" } ], - "id": 5088, + "id": 5091, "isConstant": false, "isLValue": false, "isPure": true, @@ -1178,14 +1178,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 5087, + "id": 5090, "name": "address", "nodeType": "ElementaryTypeName", "src": "2154:7:9", "typeDescriptions": {} } }, - "id": 5099, + "id": 5102, "isConstant": false, "isLValue": false, "isPure": false, @@ -1202,7 +1202,7 @@ } } ], - "id": 5100, + "id": 5103, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -1215,18 +1215,18 @@ "typeString": "address" } }, - "functionReturnParameters": 5079, - "id": 5101, + "functionReturnParameters": 5082, + "id": 5104, "nodeType": "Return", "src": "2133:306:9" } ] }, "baseFunctions": [ - 7093 + 7037 ], "documentation": { - "id": 5062, + "id": 5065, "nodeType": "StructuredDocumentation", "src": "1076:570:9", "text": "@notice Deploys a copy of hyperdrive with the given params.\n @param _config The configuration of the Hyperdrive pool.\n @param _dataProvider The address of the data provider.\n @param _extraData The extra data that contains the sweep targets.\n @param _linkerCodeHash The hash of the ERC20 linker contract's\n constructor code.\n @param _linkerFactory The address of the factory which is used to deploy\n the ERC20 linker contracts.\n @return The address of the newly deployed ERC4626Hyperdrive Instance" @@ -1238,48 +1238,48 @@ "name": "deploy", "nameLocation": "1660:6:9", "overrides": { - "id": 5076, + "id": 5079, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1862:8:9" }, "parameters": { - "id": 5075, + "id": 5078, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 5065, + "id": 5068, "mutability": "mutable", "name": "_config", "nameLocation": "1706:7:9", "nodeType": "VariableDeclaration", - "scope": 5103, + "scope": 5106, "src": "1676:37:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_PoolConfig_$6891_memory_ptr", + "typeIdentifier": "t_struct$_PoolConfig_$6835_memory_ptr", "typeString": "struct IHyperdrive.PoolConfig" }, "typeName": { - "id": 5064, + "id": 5067, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 5063, + "id": 5066, "name": "IHyperdrive.PoolConfig", "nameLocations": [ "1676:11:9", "1688:10:9" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6891, + "referencedDeclaration": 6835, "src": "1676:22:9" }, - "referencedDeclaration": 6891, + "referencedDeclaration": 6835, "src": "1676:22:9", "typeDescriptions": { - "typeIdentifier": "t_struct$_PoolConfig_$6891_storage_ptr", + "typeIdentifier": "t_struct$_PoolConfig_$6835_storage_ptr", "typeString": "struct IHyperdrive.PoolConfig" } }, @@ -1287,12 +1287,12 @@ }, { "constant": false, - "id": 5067, + "id": 5070, "mutability": "mutable", "name": "_dataProvider", "nameLocation": "1731:13:9", "nodeType": "VariableDeclaration", - "scope": 5103, + "scope": 5106, "src": "1723:21:9", "stateVariable": false, "storageLocation": "default", @@ -1301,7 +1301,7 @@ "typeString": "address" }, "typeName": { - "id": 5066, + "id": 5069, "name": "address", "nodeType": "ElementaryTypeName", "src": "1723:7:9", @@ -1315,12 +1315,12 @@ }, { "constant": false, - "id": 5069, + "id": 5072, "mutability": "mutable", "name": "_linkerCodeHash", "nameLocation": "1762:15:9", "nodeType": "VariableDeclaration", - "scope": 5103, + "scope": 5106, "src": "1754:23:9", "stateVariable": false, "storageLocation": "default", @@ -1329,7 +1329,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 5068, + "id": 5071, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1754:7:9", @@ -1342,12 +1342,12 @@ }, { "constant": false, - "id": 5071, + "id": 5074, "mutability": "mutable", "name": "_linkerFactory", "nameLocation": "1795:14:9", "nodeType": "VariableDeclaration", - "scope": 5103, + "scope": 5106, "src": "1787:22:9", "stateVariable": false, "storageLocation": "default", @@ -1356,7 +1356,7 @@ "typeString": "address" }, "typeName": { - "id": 5070, + "id": 5073, "name": "address", "nodeType": "ElementaryTypeName", "src": "1787:7:9", @@ -1370,12 +1370,12 @@ }, { "constant": false, - "id": 5074, + "id": 5077, "mutability": "mutable", "name": "_extraData", "nameLocation": "1836:10:9", "nodeType": "VariableDeclaration", - "scope": 5103, + "scope": 5106, "src": "1819:27:9", "stateVariable": false, "storageLocation": "memory", @@ -1385,7 +1385,7 @@ }, "typeName": { "baseType": { - "id": 5072, + "id": 5075, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1819:7:9", @@ -1394,7 +1394,7 @@ "typeString": "bytes32" } }, - "id": 5073, + "id": 5076, "nodeType": "ArrayTypeName", "src": "1819:9:9", "typeDescriptions": { @@ -1408,17 +1408,17 @@ "src": "1666:186:9" }, "returnParameters": { - "id": 5079, + "id": 5082, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 5078, + "id": 5081, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 5103, + "scope": 5106, "src": "1880:7:9", "stateVariable": false, "storageLocation": "default", @@ -1427,7 +1427,7 @@ "typeString": "address" }, "typeName": { - "id": 5077, + "id": 5080, "name": "address", "nodeType": "ElementaryTypeName", "src": "1880:7:9", @@ -1442,7 +1442,7 @@ ], "src": "1879:9:9" }, - "scope": 5104, + "scope": 5107, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" @@ -1452,39 +1452,39 @@ "baseContracts": [ { "baseName": { - "id": 5046, + "id": 5049, "name": "IHyperdriveDeployer", "nameLocations": [ "948:19:9" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7094, + "referencedDeclaration": 7038, "src": "948:19:9" }, - "id": 5047, + "id": 5050, "nodeType": "InheritanceSpecifier", "src": "948:19:9" } ], "canonicalName": "ERC4626HyperdriveDeployer", "contractDependencies": [ - 6379 + 6382 ], "contractKind": "contract", "documentation": { - "id": 5045, + "id": 5048, "nodeType": "StructuredDocumentation", "src": "330:580:9", "text": "@author DELV\n @title ERC4626HyperdriveFactory\n @notice This is a minimal factory which contains only the logic to deploy\n hyperdrive and is called by a more complex factory which\n initializes the Hyperdrive instances and acts as a registry.\n @dev We use two contracts to avoid any code size limit issues with Hyperdrive.\n @custom:disclaimer The language used in this code is for coding convenience\n only, and is not intended to, and does not, have any\n particular legal or regulatory significance." }, "fullyImplemented": true, "linearizedBaseContracts": [ - 5104, - 7094 + 5107, + 7038 ], "name": "ERC4626HyperdriveDeployer", "nameLocation": "919:25:9", - "scope": 5105, + "scope": 5108, "usedErrors": [] } ], diff --git a/packages/hyperdrive/src/abis/ERC4626HyperdriveFactory.sol/ERC4626HyperdriveFactory.json b/packages/hyperdrive/src/abis/ERC4626HyperdriveFactory.sol/ERC4626HyperdriveFactory.json index fb5c7a3c23..77679c0580 100644 --- a/packages/hyperdrive/src/abis/ERC4626HyperdriveFactory.sol/ERC4626HyperdriveFactory.json +++ b/packages/hyperdrive/src/abis/ERC4626HyperdriveFactory.sol/ERC4626HyperdriveFactory.json @@ -735,34 +735,34 @@ } ], "bytecode": { - "object": "0x610100604052600180553480156200001657600080fd5b50604051620040ea380380620040ea8339810160408190526200003991620003d3565b60808087018051519182905280516020015160a052516040015160c0528690869086908690670de0b6b3a764000010806200007d5750670de0b6b3a764000060a051115b80620000925750670de0b6b3a764000060c051115b15620000b15760405163a3932d2d60e01b815260040160405180910390fd5b6080516060850151511180620000d0575060a051846060015160200151115b80620000e5575060c051846060015160400151115b15620001045760405163cd4e616760e01b815260040160405180910390fd5b606084015180516007556020808201516008556040918201516009558551600080546001600160a01b03199081166001600160a01b03938416179091558288015160048054831691841691909117905592870151600a805490941691161790915560a085015180516200017c92600b920190620001d8565b50600380546001600160a01b03199081166001600160a01b03958616179091556005805490911692841692909217909155600655831660e052508051620001cb90600c906020840190620001d8565b5050505050505062000516565b82805482825590600052602060002090810192821562000230579160200282015b828111156200023057825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620001f9565b506200023e92915062000242565b5090565b5b808211156200023e576000815560010162000243565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b038111828210171562000294576200029462000259565b60405290565b6001600160a01b0381168114620002b057600080fd5b50565b8051620002c0816200029a565b919050565b600060608284031215620002d857600080fd5b604051606081016001600160401b0381118282101715620002fd57620002fd62000259565b80604052508091508251815260208301516020820152604083015160408201525092915050565b600082601f8301126200033657600080fd5b815160206001600160401b038083111562000355576200035562000259565b8260051b604051601f19603f830116810181811084821117156200037d576200037d62000259565b6040529384528581018301938381019250878511156200039c57600080fd5b83870191505b84821015620003c8578151620003b8816200029a565b83529183019190830190620003a2565b979650505050505050565b60008060008060008060c08789031215620003ed57600080fd5b86516001600160401b03808211156200040557600080fd5b90880190610140828b0312156200041b57600080fd5b620004256200026f565b825162000432816200029a565b8152602083015162000444816200029a565b60208201526200045760408401620002b3565b60408201526200046b8b60608501620002c5565b60608201526200047f8b60c08501620002c5565b6080820152610120830151828111156200049857600080fd5b620004a68c82860162000324565b60a0830152509750620004bc60208a01620002b3565b9650620004cc60408a01620002b3565b955060608901519450620004e360808a01620002b3565b935060a0890151915080821115620004fa57600080fd5b506200050989828a0162000324565b9150509295509295509295565b60805160a05160c05160e051613b9a620005506000396000610e0801526000610615015260006105e6015260006105bb0152613b9a6000f3fe608060405260043610620001435760003560e01c806394ad46d911620000b9578063c415b95c1162000078578063c415b95c14620003a3578063c905a4b514620003c5578063d2c35ce814620003dd578063dd2b8fbb1462000402578063dd6d30c11462000427578063e3331555146200043f57600080fd5b806394ad46d914620002e257806399623bb114620002fa5780639af1d35a146200031c5780639af252621462000359578063b2561263146200037e57600080fd5b80637613b08c11620001065780637613b08c146200021a57806377b81aac146200023f5780637f7c5a7d146200027f5780638522978514620002a65780638927f4e914620002cb57600080fd5b8063025b22bc146200014857806303a5aa92146200016f57806309b9075f14620001ae5780634fbfee7714620001d35780635aa6e67514620001f8575b600080fd5b3480156200015557600080fd5b506200016d6200016736600462000f11565b62000461565b005b3480156200017c57600080fd5b5060035462000191906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015620001bb57600080fd5b506200016d620001cd36600462000f38565b620004f2565b348015620001e057600080fd5b506200016d620001f236600462000fb2565b62000530565b3480156200020557600080fd5b5060005462000191906001600160a01b031681565b3480156200022757600080fd5b506200016d6200023936600462000fcc565b6200058e565b3480156200024c57600080fd5b50620002706200025e36600462000f11565b60026020526000908152604090205481565b604051908152602001620001a5565b3480156200028c57600080fd5b506200029762000670565b604051620001a5919062000ff7565b348015620002b357600080fd5b506200016d620002c536600462000f11565b620006d4565b62000191620002dc3660046200118e565b6200075d565b348015620002ef57600080fd5b5062000297620007e0565b3480156200030757600080fd5b5060055462000191906001600160a01b031681565b3480156200032957600080fd5b506007546008546009546200033d92919083565b60408051938452602084019290925290820152606001620001a5565b3480156200036657600080fd5b506200016d6200037836600462000f38565b62000842565b3480156200038b57600080fd5b506200016d6200039d36600462000f11565b6200087b565b348015620003b057600080fd5b50600a5462000191906001600160a01b031681565b348015620003d257600080fd5b506200027060065481565b348015620003ea57600080fd5b506200016d620003fc36600462000f11565b620008ee565b3480156200040f57600080fd5b506200016d6200042136600462000f11565b62000963565b3480156200043457600080fd5b506200027060015481565b3480156200044c57600080fd5b5060045462000191906001600160a01b031681565b6000546001600160a01b031633146200048c576040516282b42960e81b815260040160405180910390fd5b6001600160a01b038116620004a057600080fd5b600380546001600160a01b0319166001600160a01b03831690811790915560018054810190556040517f310ba5f1d2ed074b51e2eccd052a47ae9ab7c6b800d1fca3db3999d6a592ca0390600090a250565b6000546001600160a01b031633146200051d576040516282b42960e81b815260040160405180910390fd5b6200052b600c838362000e6b565b505050565b6000546001600160a01b031633146200055b576040516282b42960e81b815260040160405180910390fd5b600681905560405181907f395a61259037298d1c4cd4bf177b64ad5995d38a9394573fcd9060d649314ad090600090a250565b6000546001600160a01b03163314620005b9576040516282b42960e81b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000813511806200060c57507f00000000000000000000000000000000000000000000000000000000000000008160200135115b806200063b57507f00000000000000000000000000000000000000000000000000000000000000008160400135115b156200065a5760405163cd4e616760e01b815260040160405180910390fd5b8035600755602081013560085560400135600955565b6060600b805480602002602001604051908101604052809291908181526020018280548015620006ca57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620006ab575b5050505050905090565b6000546001600160a01b03163314620006ff576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0381166200071357600080fd5b600580546001600160a01b0319166001600160a01b0383169081179091556040517f03aa5b0fb65014eea89fda04a7bc11742014881f3c078f2c75b7226ce10d941890600090a250565b600080600c805480602002602001604051908101604052809291908181526020018280548015620007b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000799575b5050505050905060608190506000620007d488838888620009d8565b98975050505050505050565b6060600c805480602002602001604051908101604052809291908181526020018280548015620006ca576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620006ab575050505050905090565b6000546001600160a01b031633146200086d576040516282b42960e81b815260040160405180910390fd5b6200052b600b838362000e6b565b6000546001600160a01b03163314620008a6576040516282b42960e81b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b038316908117825560405190917f9d3e522e1e47a2f6009739342b9cc7b252a1888154e843ab55ee1c81745795ab91a250565b6000546001600160a01b0316331462000919576040516282b42960e81b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0383169081179091556040517fe5693914d19c789bdee50a362998c0bc8d035a835f9871da5d51152f0582c34f90600090a250565b6000546001600160a01b031633146200098e576040516282b42960e81b815260040160405180910390fd5b600480546001600160a01b0319166001600160a01b0383169081179091556040517ff3e07b4bb4394f2ff320bd1dd151551dff304d5e948b401d8558b228482c97d890600090a250565b60003415620009fa57604051638fbc3bd960e01b815260040160405180910390fd5b600a546001600160a01b039081166101008701523060e0870152604080516060810182526007548152600854602082015260095491810191909152610120870152600654600554909116600062000a548888858562000e01565b60035460405163e3420f4f60e01b81529192506000916001600160a01b039091169063e3420f4f9062000a94908c908690899089908f906004016200139c565b6020604051808303816000875af115801562000ab4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ada9190620013e4565b6001546001600160a01b038083166000908152600260205260409081902083905560045490911660e08d015251919250907fc6f4867fb04085fae8d5bc8a6eb6bd83992441fe62b92acc3710f0cedf0e753a9062000b429084908d9088908a908f9062001404565b60405180910390a288516040516323b872dd60e01b8152336004820152306024820152604481018990526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801562000ba1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bc791906200144d565b50885160405163095ea7b360e01b81526001600160a01b03838116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af115801562000c1c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c4291906200144d565b62000c60576040516340b27c2160e11b815260040160405180910390fd5b604051632002b33360e01b81526004810188905260248101879052336044820152600160648201526001600160a01b03821690632002b333906084016020604051808303816000875af115801562000cbc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ce2919062001471565b5060005b600b5481101562000d9057816001600160a01b0316637180c8ca600b838154811062000d165762000d166200148b565b60009182526020909120015460405160e083901b6001600160e01b03191681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b15801562000d6b57600080fd5b505af115801562000d80573d6000803e3d6000fd5b5050505080600101905062000ce6565b506004805460405163ab033ea960e01b81526001600160a01b039182169281019290925282169063ab033ea990602401600060405180830381600087803b15801562000ddb57600080fd5b505af115801562000df0573d6000803e3d6000fd5b50929b9a5050505050505050505050565b60008483837f000000000000000000000000000000000000000000000000000000000000000060405162000e359062000ed3565b62000e449493929190620014a1565b604051809103906000f08015801562000e61573d6000803e3d6000fd5b5095945050505050565b82805482825590600052602060002090810192821562000ec1579160200282015b8281111562000ec15781546001600160a01b0319166001600160a01b0384351617825560209092019160019091019062000e8c565b5062000ecf92915062000ee1565b5090565b61268a80620014db83390190565b5b8082111562000ecf576000815560010162000ee2565b6001600160a01b038116811462000f0e57600080fd5b50565b60006020828403121562000f2457600080fd5b813562000f318162000ef8565b9392505050565b6000806020838503121562000f4c57600080fd5b823567ffffffffffffffff8082111562000f6557600080fd5b818501915085601f83011262000f7a57600080fd5b81358181111562000f8a57600080fd5b8660208260051b850101111562000fa057600080fd5b60209290920196919550909350505050565b60006020828403121562000fc557600080fd5b5035919050565b60006060828403121562000fdf57600080fd5b50919050565b803562000ff28162000ef8565b919050565b6020808252825182820181905260009190848201906040850190845b818110156200103a5783516001600160a01b03168352928401929184019160010162001013565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051610180810167ffffffffffffffff8111828210171562001083576200108362001046565b60405290565b6000606082840312156200109c57600080fd5b6040516060810181811067ffffffffffffffff82111715620010c257620010c262001046565b80604052508091508235815260208301356020820152604083013560408201525092915050565b600082601f830112620010fb57600080fd5b8135602067ffffffffffffffff808311156200111b576200111b62001046565b8260051b604051601f19603f8301168101818110848211171562001143576200114362001046565b6040529384528581018301938381019250878511156200116257600080fd5b83870191505b84821015620011835781358352918301919083019062001168565b979650505050505050565b600080600080848603610220811215620011a757600080fd5b6101c080821215620011b857600080fd5b620011c26200105c565b9150620011cf8762000fe5565b82526020870135602083015260408701356040830152606087013560608301526080870135608083015260a087013560a083015260c087013560c08301526200121b60e0880162000fe5565b60e08301526101006200123081890162000fe5565b90830152610120620012458989830162001089565b908301526101808701356101408301526101a087013561016083015290945085013567ffffffffffffffff8111156200127d57600080fd5b6200128b87828801620010e9565b94979496505050506101e0830135926102000135919050565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e08101516200130860e08401826001600160a01b03169052565b50610100818101516001600160a01b0381168483015250506101208181015180518483015260208101516101408501526040810151610160850152505061014081015161018083015261016001516101a090910152565b600081518084526020808501945080840160005b83811015620013915781518752958201959082019060010162001373565b509495945050505050565b6000610240620013ad8389620012a4565b6001600160a01b038781166101c08501526101e0840187905285166102008401526102208301819052620007d4818401856200135f565b600060208284031215620013f757600080fd5b815162000f318162000ef8565b6001600160a01b03868116825260009061024090620014276020850189620012a4565b8087166101e0850152508461020084015280610220840152620007d4818401856200135f565b6000602082840312156200146057600080fd5b8151801515811462000f3157600080fd5b6000602082840312156200148457600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6102208101620014b28287620012a4565b6101c08201949094526001600160a01b039283166101e082015291166102009091015291905056fe61026060405260016000553480156200001757600080fd5b506040516200268a3803806200268a8339810160408190526200003a91620002bc565b6001600160a01b0380831660805260a084905284511660c052604084015184908490849083906103e8111562000083576040516349db44f560e01b815260040160405180910390fd5b60408101516101605260608101516101805260a0810151600003620000bb57604051635428734d60e01b815260040160405180910390fd5b60a08101805160e0525160808201511080620000eb57508060a001518160800151620000e89190620003c2565b15155b156200010a5760405163253fffcf60e11b815260040160405180910390fd5b608081015161010090815260c082015161012090815260208301516101405260e0830151601180546001600160a01b0319166001600160a01b03928316179055918301519091166102005281015151670de0b6b3a764000010806200017f5750670de0b6b3a764000081610120015160200151115b806200019b5750670de0b6b3a764000081610120015160400151115b15620001ba576040516322f72cc360e11b815260040160405180910390fd5b61012081018051516101a0528051602001516101c05251604001516101e0526101600151610220525050506001600160a01b03166102405250620003e5915050565b60405161018081016001600160401b03811182821017156200022e57634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b03811681146200024c57600080fd5b919050565b6000606082840312156200026457600080fd5b604051606081016001600160401b03811182821017156200029557634e487b7160e01b600052604160045260246000fd5b80604052508091508251815260208301516020820152604083015160408201525092915050565b600080600080848603610220811215620002d557600080fd5b6101c080821215620002e657600080fd5b620002f0620001fc565b9150620002fd8762000234565b82526020870151602083015260408701516040830152606087015160608301526080870151608083015260a087015160a083015260c087015160c08301526200034960e0880162000234565b60e08301526101006200035e81890162000234565b90830152610120620003738989830162000251565b908301526101808701516101408301526101a08701516101608301528601519094509250620003a66101e0860162000234565b9150620003b7610200860162000234565b905092959194509250565b600082620003e057634e487b7160e01b600052601260045260246000fd5b500690565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e0516102005161022051610240516121c1620004c9600039600081816103660152610def01526000610a87015260006109d701526000610a5001526000610a2b01526000610a080152600061093101526000818161090c0152610f2a0152600081816108e20152610f040152600081816109a70152610f5001526000818161095b01526112b401526000818161098101526115090152600081816108bd0152610be801526000610c3b01526000610ba801526121c16000f3fe608060405234801561001057600080fd5b506004361061012b5760003560e01c8063bd85b039116100ad578063c905a4b511610071578063c905a4b514610295578063cc962f8e1461029d578063d8165743146102c0578063e985e9c5146102d5578063fba56008146102e857600080fd5b8063bd85b0391461024a578063becee9c31461025d578063c45a01551461027d578063c55dae6314610285578063c69e16ad1461028d57600080fd5b80634e41a1fb116100f45780634e41a1fb146101e757806360246c88146101fa5780637ecebe001461020f578063afdac68d14610222578063b0d965801461023557600080fd5b8062ad800c1461013057806316f0115b1461015957806320fc48811461017957806321ff32a9146101b35780633656eec2146101d4575b600080fd5b61014361013e366004611ad5565b610317565b6040516101509190611b34565b60405180910390f35b610161610358565b6040516001600160a01b039091168152602001610150565b61018c610187366004611ad5565b61039b565b6040805182516001600160801b03168152602092830151600f0b9281019290925201610150565b6101c66101c1366004611b5e565b6103ed565b604051908152602001610150565b6101c66101e2366004611b9a565b610433565b6101436101f5366004611ad5565b61046c565b610202610494565b6040516101509190611bc6565b6101c661021d366004611c51565b61068e565b6101c6610230366004611ad5565b6106ba565b61023d6108a0565b6040516101509190611c6c565b6101c6610258366004611ad5565b610abd565b61027061026b366004611d2e565b610adf565b6040516101509190611da3565b610161610b9a565b610161610bda565b6101c6610c1a565b6101c6610c34565b6102b06102ab366004611c51565b610c6c565b6040519015158152602001610150565b6102c8610ca2565b6040516101509190611de7565b6102b06102e3366004611ed4565b610d08565b6102f0610d4c565b6040805182516001600160801b039081168252602093840151169281019290925201610150565b60606103536005600084815260200190815260200160002060405160200161033f9190611efe565b604051602081830303815290604052610dab565b919050565b604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152600091610398910161033f565b90565b6040805180820190915260008082526020820152610353600e600084815260200190815260200160002060405160200161033f91546001600160801b038116825260801d600f0b602082015260400190565b60008381526004602090815260408083206001600160a01b038681168552908352818420908516845282528083205481519283015261042c910161033f565b9392505050565b60008281526001602090815260408083206001600160a01b0385168452825280832054815192830152610466910161033f565b92915050565b60606103536006600084815260200190815260200160002060405160200161033f9190611efe565b6104ff604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000610509610dcf565b600d5460026020527f3ccfbaf375b4885450e3887dab0704e32e03acfeaf0442976372f6750e322c1f5460008080527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b54939450926001600160801b03909216916105749190611fc0565b61057e9190611fd3565b905060008083116105905760006105ab565b6105ab836105a56105a086610e67565b610fcd565b9061123f565b604080516101a0810182526008546001600160801b038082168352600954600f0b6020840152600160801b918290048116938301939093526060820186905260808201879052600a5480841660a0840152600b5480851660c085015290829004841660e08401528190048316610100830152600d5480841661012084015204909116610140820152909150600090610160810184156106535761064e8486611254565b610656565b60005b8152600954600160801b90046001600160801b03166020918201526040519192506106879161033f91849101611bc6565b5050505090565b6001600160a01b038116600090815260076020908152604080832054815192830152610353910161033f565b601354601280546000926001600160801b03600160801b8204811693911691849190839081106106ec576106ec611fe6565b600091825260208083206040805180820190915292015463ffffffff8116835264010000000090046001600160e01b031690820152915061072d8685611fd3565b90506000831561074757610742600185611fd3565b610756565b60125461075690600190611fd3565b60408051808201909152600080825260208201529091505b8482146108055760006012838154811061078a5761078a611fe6565b6000918252602090912001805490915063ffffffff1684106107d85760408051808201909152905463ffffffff8116825264010000000090046001600160e01b031660208201529050610805565b82156107ee576107e9600184611fd3565b6107fd565b6012546107fd90600190611fd3565b92505061076e565b805163ffffffff1660000361082d57604051630a89817b60e41b815260040160405180910390fd5b600081602001516001600160e01b031685602001516001600160e01b03166108559190611fd3565b825186519192506000916108729163ffffffff9081169116611fd3565b90506108936108818284612012565b60405160200161033f91815260200190565b5050505050505050919050565b6108a8611a37565b60408051610180810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f00000000000000000000000000000000000000000000000000000000000000006020808401919091527f0000000000000000000000000000000000000000000000000000000000000000838501527f00000000000000000000000000000000000000000000000000000000000000006060808501919091527f000000000000000000000000000000000000000000000000000000000000000060808501527f000000000000000000000000000000000000000000000000000000000000000060a08501527f000000000000000000000000000000000000000000000000000000000000000060c0850152601154831660e08501527f0000000000000000000000000000000000000000000000000000000000000000909216610100840152835191820184527f000000000000000000000000000000000000000000000000000000000000000082527f0000000000000000000000000000000000000000000000000000000000000000828201527f0000000000000000000000000000000000000000000000000000000000000000828501526101208301919091526012546101408301527f000000000000000000000000000000000000000000000000000000000000000061016083015291516103989261033f929101611c6c565b600081815260026020908152604080832054815192830152610353910161033f565b606060008267ffffffffffffffff811115610afc57610afc612026565b604051908082528060200260200182016040528015610b25578160200160208202803683370190505b50905060005b83811015610b7e576000858583818110610b4757610b47611fe6565b90506020020135905060008154905080848481518110610b6957610b69611fe6565b60209081029190910101525050600101610b2b565b50610b938160405160200161033f9190611da3565b5092915050565b604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152600091610398910161033f565b604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152600091610398910161033f565b600061039860105460405160200161033f91815260200190565b60006103987f000000000000000000000000000000000000000000000000000000000000000060405160200161033f91815260200190565b6001600160a01b03811660009081526014602090815260408083205490516103539261033f9260ff169101901515815260200190565b6040805161014081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810191909152610398600860405160200161033f919061203c565b6001600160a01b038281166000908152600360209081526040808320938516835292815282822054835160ff9091161515918101919091529091610466910161033f565b6040805180820190915260008082526020820152604080518082018252600d546001600160801b03808216808452600160801b90920481166020938401908152845193840192909252905116918101919091526103989060600161033f565b80604051636e64089360e11b8152600401610dc69190611b34565b60405180910390fd5b6040516303d1689d60e11b8152670de0b6b3a764000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a90602401602060405180830381865afa158015610e3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6291906120bd565b905090565b610ec460405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60408051610160810182526008546001600160801b038082168352600954600f0b6020840152600160801b909104811692820192909252606081018490527f000000000000000000000000000000000000000000000000000000000000000060808201527f000000000000000000000000000000000000000000000000000000000000000060a08201527f000000000000000000000000000000000000000000000000000000000000000060c0820152600a54821660e0820152600b549091610100830191610f939116611269565b8152600a546001600160801b03600160801b9182900481166020840152600b54604090930192610fc592900416611269565b905292915050565b600080610fed83610140015184610120015161123f90919063ffffffff16565b61010084015160e08501516110019161123f565b61100b91906120d6565b90506000611021846000015185602001516112df565b905060008213156110c35760006110638286604001518760a001518860c00151670de0b6b3a76400006110549190611fd3565b89606001518a608001516112fc565b915061107190508184611385565b905080156110bd576110aa828660400151838860c00151670de0b6b3a764000061109b9190611fd3565b89606001518a6080015161139a565b855186906110b9908390611fd3565b9052505b50611181565b6000821215611181576110d5826120f6565b915060006111098286604001518760c00151670de0b6b3a76400006110fa9190611fd3565b886060015189608001516113d9565b915061111790508184611385565b9050801561116357611150828660400151838860c00151670de0b6b3a76400006111419190611fd3565b89606001518a60800151611463565b8551869061115f908390611fc0565b9052505b61116d8184611fd3565b8551869061117c908390611fc0565b905250505b60006111b0856101000151670de0b6b3a764000061119f9190611fd3565b606087015160e088015191906114e4565b6111de866101400151670de0b6b3a76400006111cc9190611fd3565b606088015161012089015191906114e4565b6111e891906120d6565b905060008186600001516111fc9190612112565b90508560a001518112156112235760405163aeeb825d60e01b815260040160405180910390fd5b80865260a08601516112359082611fd3565b9695505050505050565b600061042c8383670de0b6b3a76400006114e4565b600061042c83670de0b6b3a7640000846114e4565b600080670de0b6b3a764000061127d611502565b6112879190612132565b90508083116112975760006112a1565b6112a18184611fd3565b915061042c6112d8670de0b6b3a76400007f0000000000000000000000000000000000000000000000000000000000000000612132565b8390611254565b6000806112ec83856120d6565b9050600081121561042c57600080fd5b6000808061130a8585611254565b9050600061131b82868c8a8d611538565b9050600061135c611334670de0b6b3a76400008a611254565b61135261134b8b6113458b8f61123f565b90611566565b869061123f565b6113459085611fd3565b9050611368898c611fd3565b6113728b83611fd3565b945094505050505b965096945050505050565b6000818311611394578261042c565b50919050565b6000806113ab8888888888886115bd565b9092509050806113ce57604051637ac17d2560e01b815260040160405180910390fd5b509695505050505050565b600080806113e78585611254565b905060006113f882868b8a8c611538565b9050600061142d611411670de0b6b3a76400008a611254565b611345611426670de0b6b3a764000087611fc0565b8590611254565b9050600061143b8288611254565b90506114478b82611fd3565b611451838c611fd3565b95509550505050509550959350505050565b6000806114708484611254565b9050600061148182858b898c611538565b905061149186611345898b611fd3565b975060006114be6114aa670de0b6b3a76400008961165e565b611345856114b88d87611fd3565b90611254565b90506114ca8186611254565b90506114d68a82611fd3565b9a9950505050505050505050565b60008260001904841183021582026114fb57600080fd5b5091020490565b600061152e7f000000000000000000000000000000000000000000000000000000000000000042612149565b610e629042611fd3565b60006115448284611566565b61155c61155585611345898961123f565b889061123f565b6112359190611fc0565b60008160000361157f5750670de0b6b3a7640000610466565b8260000361158f57506000610466565b81600061159b85611673565b90508181026115b2670de0b6b3a76400008261215d565b905061123581611886565b600080806115cb8585611254565b905060006115dc82868c8a8d611538565b90506115ec876113458a8c611fc0565b9850888110156116045760008093509350505061137a565b600061162961161b670de0b6b3a76400008a61165e565b611345856114b88e87611fd3565b90506116358187611254565b9050808b111561164c57611649818c611fd3565b94505b60019350505050965096945050505050565b600061042c83670de0b6b3a764000084611a11565b600080821361169557604051636838feed60e11b815260040160405180910390fd5b5060606001600160801b03821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110600190811b90911783811c90911017609f81810383019390931b90921c6c465772b2bbbb5f824b15207a3081018102821d6d0388eaa27412d5aca026815d636e018102821d6d0df99ac502031bf953eff472fdcc018102821d6d13cdffb29d51d99322bdff5f2211018102821d6d0a0f742023def783a307a986912e018102821d6d01920d8043ca89b5239253284e42018102821d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7882018202831d6d0139601a2efabe717e604cbb4894018202831d6d02247f7a7b6594320649aa03aba1018202831d6c8c3f38e95a6b1ff2ab1c3b343619018202831d6d02384773bdf1ac5676facced60901901820290921d6cb9a025d814b29c212b8b1a07cd190102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a550602605f19919091017d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b6000680248ce36a70cb26b3e1982136118a157506000919050565b680755bf798b4a1bf1e582126118ca5760405163df92cc9d60e01b815260040160405180910390fd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6000826000190484118302158202611a2857600080fd5b50910281810615159190040190565b60405180610180016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b03168152602001611ac160405180606001604052806000815260200160008152602001600081525090565b815260200160008152602001600081525090565b600060208284031215611ae757600080fd5b5035919050565b6000815180845260005b81811015611b1457602081850181015186830182015201611af8565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061042c6020830184611aee565b80356001600160a01b038116811461035357600080fd5b600080600060608486031215611b7357600080fd5b83359250611b8360208501611b47565b9150611b9160408501611b47565b90509250925092565b60008060408385031215611bad57600080fd5b82359150611bbd60208401611b47565b90509250929050565b815181526020808301519082015260408083015190820152606080830151908201526080808301519082015260a0808301519082015260c0808301519082015260e08083015190820152610100808301519082015261012080830151908201526101408083015190820152610160808301519082015261018091820151918101919091526101a00190565b600060208284031215611c6357600080fd5b61042c82611b47565b81516001600160a01b031681526101c081016020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e0830151611cd460e08401826001600160a01b03169052565b50610100838101516001600160a01b03811684830152505061012083810151805184830152602081015161014085015260408101516101608501525050610140830151610180830152610160909201516101a09091015290565b60008060208385031215611d4157600080fd5b823567ffffffffffffffff80821115611d5957600080fd5b818501915085601f830112611d6d57600080fd5b813581811115611d7c57600080fd5b8660208260051b8501011115611d9157600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b81811015611ddb57835183529284019291840191600101611dbf565b50909695505050505050565b81516001600160801b0316815261014081016020830151611e1360208401826001600160801b03169052565b506040830151611e286040840182600f0b9052565b506060830151611e4360608401826001600160801b03169052565b506080830151611e5e60808401826001600160801b03169052565b5060a0830151611e7960a08401826001600160801b03169052565b5060c0830151611e9460c08401826001600160801b03169052565b5060e0830151611eaf60e08401826001600160801b03169052565b506101008381015115159083015261012080840151801515828501525b505092915050565b60008060408385031215611ee757600080fd5b611ef083611b47565b9150611bbd60208401611b47565b600060208083526000845481600182811c915080831680611f2057607f831692505b8583108103611f3d57634e487b7160e01b85526022600452602485fd5b878601838152602001818015611f5a5760018114611f7057611f9b565b60ff198616825284151560051b82019650611f9b565b60008b81526020902060005b86811015611f9557815484820152908501908901611f7c565b83019750505b50949998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561046657610466611faa565b8181038181111561046657610466611faa565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60008261202157612021611ffc565b500490565b634e487b7160e01b600052604160045260246000fd5b81546001600160801b038082168352608091821c60208401526001840154600f81900b6040850152821c6060840152600284015480821683850152821c60a0840152600384015490811660c0840152901c60e0820152600482015460ff8082161515610100840152600882901c161515610120830152610140820190610b93565b6000602082840312156120cf57600080fd5b5051919050565b8181036000831280158383131683831282161715610b9357610b93611faa565b6000600160ff1b820161210b5761210b611faa565b5060000390565b8082018281126000831280158216821582161715611ecc57611ecc611faa565b808202811582820484141761046657610466611faa565b60008261215857612158611ffc565b500690565b60008261216c5761216c611ffc565b600160ff1b82146000198414161561218657612186611faa565b50059056fea26469706673582212203dd3a41b6e8e98243ae13770c29f488bc3b96cd1e3d87bf93f08b21cf697e3ce64736f6c63430008130033a264697066735822122067304e6ff12c5ed9ba773930b6d776cfbd0750c49c74278ed86512186272ab4964736f6c63430008130033", - "sourceMap": "861:3637:10:-:0;;;2123:1:11;2091:33;;1714:539:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4847:22:11;;;;;;:28;4833:42;;;;4898:22;;:27;;;4885:40;;4954:22;:33;;;4935:52;;1985:14:10;;2013:9;;2036:14;;2064:15;;565:4:31;-1:-1:-1;5014:35:11;:85;;;565:4:31;5065:10:11;;:34;5014:85;:141;;;;565:4:31;5115:16:11;;:40;5014:141;4997:228;;;5187:27;;-1:-1:-1;;;5187:27:11;;;;;;;;;;;4997:228;5279:11;;5251:19;;;;:25;:39;;:92;;;5333:10;;5306:14;:19;;;:24;;;:37;5251:92;:157;;;;5392:16;;5359:14;:19;;;:30;;;:49;5251:157;5234:241;;;5440:24;;-1:-1:-1;;;5440:24:11;;;;;;;;;;;5234:241;5491:19;;;;5484:26;;:4;:26;;;;;;;;;;;;;;;5578:25;;-1:-1:-1;5565:38:11;;-1:-1:-1;;;;;;5565:38:11;;;-1:-1:-1;;;;;5565:38:11;;;;;;;5636:35;;;;5613:20;:58;;;;;;;;;;;;;5696:27;;;;5681:12;:42;;;;;;;;;;;5751:29;;;;5733:47;;;;:15;;:47;;;:::i;:::-;-1:-1:-1;5790:18:11;:30;;-1:-1:-1;;;;;;5790:30:11;;;-1:-1:-1;;;;;5790:30:11;;;;;;;5830:13;:30;;;;;;;;;;;;;;;5870:14;:32;2144:12:10;::::1;;::::0;-1:-1:-1;2216:30:10;;::::1;::::0;:13:::1;::::0;:30:::1;::::0;::::1;::::0;::::1;:::i;:::-;;1714:539:::0;;;;;;861:3637;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;861:3637:10;-1:-1:-1;;;;;861:3637:10;;;;;;;;;;;-1:-1:-1;861:3637:10;;;;;;;-1:-1:-1;861:3637:10;;;-1:-1:-1;861:3637:10;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:162;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:247;213:2;207:9;255:3;243:16;;-1:-1:-1;;;;;274:34:162;;310:22;;;271:62;268:88;;;336:18;;:::i;:::-;372:2;365:22;146:247;:::o;398:131::-;-1:-1:-1;;;;;473:31:162;;463:42;;453:70;;519:1;516;509:12;453:70;398:131;:::o;534:138::-;613:13;;635:31;613:13;635:31;:::i;:::-;534:138;;;:::o;677:525::-;739:5;787:4;775:9;770:3;766:19;762:30;759:50;;;805:1;802;795:12;759:50;838:2;832:9;880:4;868:17;;-1:-1:-1;;;;;900:34:162;;936:22;;;897:62;894:88;;;962:18;;:::i;:::-;1002:10;998:2;991:22;;1031:6;1022:15;;1067:9;1061:16;1053:6;1046:32;1132:2;1121:9;1117:18;1111:25;1106:2;1098:6;1094:15;1087:50;1191:2;1180:9;1176:18;1170:25;1165:2;1157:6;1153:15;1146:50;;677:525;;;;:::o;1207:974::-;1272:5;1325:3;1318:4;1310:6;1306:17;1302:27;1292:55;;1343:1;1340;1333:12;1292:55;1366:13;;1398:4;-1:-1:-1;;;;;1451:10:162;;;1448:36;;;1464:18;;:::i;:::-;1510:2;1507:1;1503:10;1542:2;1536:9;1605:2;1601:7;1596:2;1592;1588:11;1584:25;1576:6;1572:38;1660:6;1648:10;1645:22;1640:2;1628:10;1625:18;1622:46;1619:72;;;1671:18;;:::i;:::-;1707:2;1700:22;1757:18;;;1833:15;;;1829:24;;;1791:15;;;;-1:-1:-1;1865:15:162;;;1862:35;;;1893:1;1890;1883:12;1862:35;1929:2;1921:6;1917:15;1906:26;;1941:210;1957:6;1952:3;1949:15;1941:210;;;2030:3;2024:10;2047:31;2072:5;2047:31;:::i;:::-;2091:18;;2129:12;;;;1974;;;;1941:210;;;2169:6;1207:974;-1:-1:-1;;;;;;;1207:974:162:o;2186:1732::-;2402:6;2410;2418;2426;2434;2442;2495:3;2483:9;2474:7;2470:23;2466:33;2463:53;;;2512:1;2509;2502:12;2463:53;2539:16;;-1:-1:-1;;;;;2604:14:162;;;2601:34;;;2631:1;2628;2621:12;2601:34;2654:22;;;;2710:6;2692:16;;;2688:29;2685:49;;;2730:1;2727;2720:12;2685:49;2756:17;;:::i;:::-;2803:2;2797:9;2815:33;2840:7;2815:33;:::i;:::-;2857:22;;2917:2;2909:11;;2903:18;2930:33;2903:18;2930:33;:::i;:::-;2990:2;2979:14;;2972:31;3035:42;3073:2;3065:11;;3035:42;:::i;:::-;3030:2;3023:5;3019:14;3012:66;3110:55;3157:7;3152:2;3148;3144:11;3110:55;:::i;:::-;3105:2;3098:5;3094:14;3087:79;3200:56;3248:7;3242:3;3238:2;3234:12;3200:56;:::i;:::-;3193:4;3186:5;3182:16;3175:82;3296:3;3292:2;3288:12;3282:19;3326:2;3316:8;3313:16;3310:36;;;3342:1;3339;3332:12;3310:36;3380:67;3439:7;3428:8;3424:2;3420:17;3380:67;:::i;:::-;3373:4;3362:16;;3355:93;-1:-1:-1;3366:5:162;-1:-1:-1;3491:49:162;3536:2;3521:18;;3491:49;:::i;:::-;3481:59;;3559:49;3604:2;3593:9;3589:18;3559:49;:::i;:::-;3549:59;;3648:2;3637:9;3633:18;3627:25;3617:35;;3671:51;3716:4;3705:9;3701:20;3671:51;:::i;:::-;3661:61;;3768:4;3757:9;3753:20;3747:27;3731:43;;3799:2;3789:8;3786:16;3783:36;;;3815:1;3812;3805:12;3783:36;;3838:74;3904:7;3893:8;3882:9;3878:24;3838:74;:::i;:::-;3828:84;;;2186:1732;;;;;;;;:::o;:::-;861:3637:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", + "object": "0x610100604052600180553480156200001657600080fd5b50604051620040ea380380620040ea8339810160408190526200003991620003d3565b60808087018051519182905280516020015160a052516040015160c0528690869086908690670de0b6b3a764000010806200007d5750670de0b6b3a764000060a051115b80620000925750670de0b6b3a764000060c051115b15620000b15760405163a3932d2d60e01b815260040160405180910390fd5b6080516060850151511180620000d0575060a051846060015160200151115b80620000e5575060c051846060015160400151115b15620001045760405163cd4e616760e01b815260040160405180910390fd5b606084015180516007556020808201516008556040918201516009558551600080546001600160a01b03199081166001600160a01b03938416179091558288015160048054831691841691909117905592870151600a805490941691161790915560a085015180516200017c92600b920190620001d8565b50600380546001600160a01b03199081166001600160a01b03958616179091556005805490911692841692909217909155600655831660e052508051620001cb90600c906020840190620001d8565b5050505050505062000516565b82805482825590600052602060002090810192821562000230579160200282015b828111156200023057825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620001f9565b506200023e92915062000242565b5090565b5b808211156200023e576000815560010162000243565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b038111828210171562000294576200029462000259565b60405290565b6001600160a01b0381168114620002b057600080fd5b50565b8051620002c0816200029a565b919050565b600060608284031215620002d857600080fd5b604051606081016001600160401b0381118282101715620002fd57620002fd62000259565b80604052508091508251815260208301516020820152604083015160408201525092915050565b600082601f8301126200033657600080fd5b815160206001600160401b038083111562000355576200035562000259565b8260051b604051601f19603f830116810181811084821117156200037d576200037d62000259565b6040529384528581018301938381019250878511156200039c57600080fd5b83870191505b84821015620003c8578151620003b8816200029a565b83529183019190830190620003a2565b979650505050505050565b60008060008060008060c08789031215620003ed57600080fd5b86516001600160401b03808211156200040557600080fd5b90880190610140828b0312156200041b57600080fd5b620004256200026f565b825162000432816200029a565b8152602083015162000444816200029a565b60208201526200045760408401620002b3565b60408201526200046b8b60608501620002c5565b60608201526200047f8b60c08501620002c5565b6080820152610120830151828111156200049857600080fd5b620004a68c82860162000324565b60a0830152509750620004bc60208a01620002b3565b9650620004cc60408a01620002b3565b955060608901519450620004e360808a01620002b3565b935060a0890151915080821115620004fa57600080fd5b506200050989828a0162000324565b9150509295509295509295565b60805160a05160c05160e051613b9a620005506000396000610e0801526000610615015260006105e6015260006105bb0152613b9a6000f3fe608060405260043610620001435760003560e01c806394ad46d911620000b9578063c415b95c1162000078578063c415b95c14620003a3578063c905a4b514620003c5578063d2c35ce814620003dd578063dd2b8fbb1462000402578063dd6d30c11462000427578063e3331555146200043f57600080fd5b806394ad46d914620002e257806399623bb114620002fa5780639af1d35a146200031c5780639af252621462000359578063b2561263146200037e57600080fd5b80637613b08c11620001065780637613b08c146200021a57806377b81aac146200023f5780637f7c5a7d146200027f5780638522978514620002a65780638927f4e914620002cb57600080fd5b8063025b22bc146200014857806303a5aa92146200016f57806309b9075f14620001ae5780634fbfee7714620001d35780635aa6e67514620001f8575b600080fd5b3480156200015557600080fd5b506200016d6200016736600462000f11565b62000461565b005b3480156200017c57600080fd5b5060035462000191906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015620001bb57600080fd5b506200016d620001cd36600462000f38565b620004f2565b348015620001e057600080fd5b506200016d620001f236600462000fb2565b62000530565b3480156200020557600080fd5b5060005462000191906001600160a01b031681565b3480156200022757600080fd5b506200016d6200023936600462000fcc565b6200058e565b3480156200024c57600080fd5b50620002706200025e36600462000f11565b60026020526000908152604090205481565b604051908152602001620001a5565b3480156200028c57600080fd5b506200029762000670565b604051620001a5919062000ff7565b348015620002b357600080fd5b506200016d620002c536600462000f11565b620006d4565b62000191620002dc3660046200118e565b6200075d565b348015620002ef57600080fd5b5062000297620007e0565b3480156200030757600080fd5b5060055462000191906001600160a01b031681565b3480156200032957600080fd5b506007546008546009546200033d92919083565b60408051938452602084019290925290820152606001620001a5565b3480156200036657600080fd5b506200016d6200037836600462000f38565b62000842565b3480156200038b57600080fd5b506200016d6200039d36600462000f11565b6200087b565b348015620003b057600080fd5b50600a5462000191906001600160a01b031681565b348015620003d257600080fd5b506200027060065481565b348015620003ea57600080fd5b506200016d620003fc36600462000f11565b620008ee565b3480156200040f57600080fd5b506200016d6200042136600462000f11565b62000963565b3480156200043457600080fd5b506200027060015481565b3480156200044c57600080fd5b5060045462000191906001600160a01b031681565b6000546001600160a01b031633146200048c576040516282b42960e81b815260040160405180910390fd5b6001600160a01b038116620004a057600080fd5b600380546001600160a01b0319166001600160a01b03831690811790915560018054810190556040517f310ba5f1d2ed074b51e2eccd052a47ae9ab7c6b800d1fca3db3999d6a592ca0390600090a250565b6000546001600160a01b031633146200051d576040516282b42960e81b815260040160405180910390fd5b6200052b600c838362000e6b565b505050565b6000546001600160a01b031633146200055b576040516282b42960e81b815260040160405180910390fd5b600681905560405181907f395a61259037298d1c4cd4bf177b64ad5995d38a9394573fcd9060d649314ad090600090a250565b6000546001600160a01b03163314620005b9576040516282b42960e81b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000813511806200060c57507f00000000000000000000000000000000000000000000000000000000000000008160200135115b806200063b57507f00000000000000000000000000000000000000000000000000000000000000008160400135115b156200065a5760405163cd4e616760e01b815260040160405180910390fd5b8035600755602081013560085560400135600955565b6060600b805480602002602001604051908101604052809291908181526020018280548015620006ca57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620006ab575b5050505050905090565b6000546001600160a01b03163314620006ff576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0381166200071357600080fd5b600580546001600160a01b0319166001600160a01b0383169081179091556040517f03aa5b0fb65014eea89fda04a7bc11742014881f3c078f2c75b7226ce10d941890600090a250565b600080600c805480602002602001604051908101604052809291908181526020018280548015620007b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000799575b5050505050905060608190506000620007d488838888620009d8565b98975050505050505050565b6060600c805480602002602001604051908101604052809291908181526020018280548015620006ca576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620006ab575050505050905090565b6000546001600160a01b031633146200086d576040516282b42960e81b815260040160405180910390fd5b6200052b600b838362000e6b565b6000546001600160a01b03163314620008a6576040516282b42960e81b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b038316908117825560405190917f9d3e522e1e47a2f6009739342b9cc7b252a1888154e843ab55ee1c81745795ab91a250565b6000546001600160a01b0316331462000919576040516282b42960e81b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0383169081179091556040517fe5693914d19c789bdee50a362998c0bc8d035a835f9871da5d51152f0582c34f90600090a250565b6000546001600160a01b031633146200098e576040516282b42960e81b815260040160405180910390fd5b600480546001600160a01b0319166001600160a01b0383169081179091556040517ff3e07b4bb4394f2ff320bd1dd151551dff304d5e948b401d8558b228482c97d890600090a250565b60003415620009fa57604051638fbc3bd960e01b815260040160405180910390fd5b600a546001600160a01b039081166101008701523060e0870152604080516060810182526007548152600854602082015260095491810191909152610120870152600654600554909116600062000a548888858562000e01565b60035460405163e3420f4f60e01b81529192506000916001600160a01b039091169063e3420f4f9062000a94908c908690899089908f906004016200139c565b6020604051808303816000875af115801562000ab4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ada9190620013e4565b6001546001600160a01b038083166000908152600260205260409081902083905560045490911660e08d015251919250907fc6f4867fb04085fae8d5bc8a6eb6bd83992441fe62b92acc3710f0cedf0e753a9062000b429084908d9088908a908f9062001404565b60405180910390a288516040516323b872dd60e01b8152336004820152306024820152604481018990526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801562000ba1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bc791906200144d565b50885160405163095ea7b360e01b81526001600160a01b03838116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af115801562000c1c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c4291906200144d565b62000c60576040516340b27c2160e11b815260040160405180910390fd5b604051632002b33360e01b81526004810188905260248101879052336044820152600160648201526001600160a01b03821690632002b333906084016020604051808303816000875af115801562000cbc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ce2919062001471565b5060005b600b5481101562000d9057816001600160a01b0316637180c8ca600b838154811062000d165762000d166200148b565b60009182526020909120015460405160e083901b6001600160e01b03191681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b15801562000d6b57600080fd5b505af115801562000d80573d6000803e3d6000fd5b5050505080600101905062000ce6565b506004805460405163ab033ea960e01b81526001600160a01b039182169281019290925282169063ab033ea990602401600060405180830381600087803b15801562000ddb57600080fd5b505af115801562000df0573d6000803e3d6000fd5b50929b9a5050505050505050505050565b60008483837f000000000000000000000000000000000000000000000000000000000000000060405162000e359062000ed3565b62000e449493929190620014a1565b604051809103906000f08015801562000e61573d6000803e3d6000fd5b5095945050505050565b82805482825590600052602060002090810192821562000ec1579160200282015b8281111562000ec15781546001600160a01b0319166001600160a01b0384351617825560209092019160019091019062000e8c565b5062000ecf92915062000ee1565b5090565b61268a80620014db83390190565b5b8082111562000ecf576000815560010162000ee2565b6001600160a01b038116811462000f0e57600080fd5b50565b60006020828403121562000f2457600080fd5b813562000f318162000ef8565b9392505050565b6000806020838503121562000f4c57600080fd5b823567ffffffffffffffff8082111562000f6557600080fd5b818501915085601f83011262000f7a57600080fd5b81358181111562000f8a57600080fd5b8660208260051b850101111562000fa057600080fd5b60209290920196919550909350505050565b60006020828403121562000fc557600080fd5b5035919050565b60006060828403121562000fdf57600080fd5b50919050565b803562000ff28162000ef8565b919050565b6020808252825182820181905260009190848201906040850190845b818110156200103a5783516001600160a01b03168352928401929184019160010162001013565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051610180810167ffffffffffffffff8111828210171562001083576200108362001046565b60405290565b6000606082840312156200109c57600080fd5b6040516060810181811067ffffffffffffffff82111715620010c257620010c262001046565b80604052508091508235815260208301356020820152604083013560408201525092915050565b600082601f830112620010fb57600080fd5b8135602067ffffffffffffffff808311156200111b576200111b62001046565b8260051b604051601f19603f8301168101818110848211171562001143576200114362001046565b6040529384528581018301938381019250878511156200116257600080fd5b83870191505b84821015620011835781358352918301919083019062001168565b979650505050505050565b600080600080848603610220811215620011a757600080fd5b6101c080821215620011b857600080fd5b620011c26200105c565b9150620011cf8762000fe5565b82526020870135602083015260408701356040830152606087013560608301526080870135608083015260a087013560a083015260c087013560c08301526200121b60e0880162000fe5565b60e08301526101006200123081890162000fe5565b90830152610120620012458989830162001089565b908301526101808701356101408301526101a087013561016083015290945085013567ffffffffffffffff8111156200127d57600080fd5b6200128b87828801620010e9565b94979496505050506101e0830135926102000135919050565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e08101516200130860e08401826001600160a01b03169052565b50610100818101516001600160a01b0381168483015250506101208181015180518483015260208101516101408501526040810151610160850152505061014081015161018083015261016001516101a090910152565b600081518084526020808501945080840160005b83811015620013915781518752958201959082019060010162001373565b509495945050505050565b6000610240620013ad8389620012a4565b6001600160a01b038781166101c08501526101e0840187905285166102008401526102208301819052620007d4818401856200135f565b600060208284031215620013f757600080fd5b815162000f318162000ef8565b6001600160a01b03868116825260009061024090620014276020850189620012a4565b8087166101e0850152508461020084015280610220840152620007d4818401856200135f565b6000602082840312156200146057600080fd5b8151801515811462000f3157600080fd5b6000602082840312156200148457600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6102208101620014b28287620012a4565b6101c08201949094526001600160a01b039283166101e082015291166102009091015291905056fe61026060405260016000553480156200001757600080fd5b506040516200268a3803806200268a8339810160408190526200003a91620002bc565b6001600160a01b0380831660805260a084905284511660c052604084015184908490849083906103e8111562000083576040516349db44f560e01b815260040160405180910390fd5b60408101516101605260608101516101805260a0810151600003620000bb57604051635428734d60e01b815260040160405180910390fd5b60a08101805160e0525160808201511080620000eb57508060a001518160800151620000e89190620003c2565b15155b156200010a5760405163253fffcf60e11b815260040160405180910390fd5b608081015161010090815260c082015161012090815260208301516101405260e0830151601180546001600160a01b0319166001600160a01b03928316179055918301519091166102005281015151670de0b6b3a764000010806200017f5750670de0b6b3a764000081610120015160200151115b806200019b5750670de0b6b3a764000081610120015160400151115b15620001ba576040516322f72cc360e11b815260040160405180910390fd5b61012081018051516101a0528051602001516101c05251604001516101e0526101600151610220525050506001600160a01b03166102405250620003e5915050565b60405161018081016001600160401b03811182821017156200022e57634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b03811681146200024c57600080fd5b919050565b6000606082840312156200026457600080fd5b604051606081016001600160401b03811182821017156200029557634e487b7160e01b600052604160045260246000fd5b80604052508091508251815260208301516020820152604083015160408201525092915050565b600080600080848603610220811215620002d557600080fd5b6101c080821215620002e657600080fd5b620002f0620001fc565b9150620002fd8762000234565b82526020870151602083015260408701516040830152606087015160608301526080870151608083015260a087015160a083015260c087015160c08301526200034960e0880162000234565b60e08301526101006200035e81890162000234565b90830152610120620003738989830162000251565b908301526101808701516101408301526101a08701516101608301528601519094509250620003a66101e0860162000234565b9150620003b7610200860162000234565b905092959194509250565b600082620003e057634e487b7160e01b600052601260045260246000fd5b500690565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e0516102005161022051610240516121c1620004c9600039600081816103660152610def01526000610a87015260006109d701526000610a5001526000610a2b01526000610a080152600061093101526000818161090c0152610f2a0152600081816108e20152610f040152600081816109a70152610f5001526000818161095b01526112b401526000818161098101526115090152600081816108bd0152610be801526000610c3b01526000610ba801526121c16000f3fe608060405234801561001057600080fd5b506004361061012b5760003560e01c8063bd85b039116100ad578063c905a4b511610071578063c905a4b514610295578063cc962f8e1461029d578063d8165743146102c0578063e985e9c5146102d5578063fba56008146102e857600080fd5b8063bd85b0391461024a578063becee9c31461025d578063c45a01551461027d578063c55dae6314610285578063c69e16ad1461028d57600080fd5b80634e41a1fb116100f45780634e41a1fb146101e757806360246c88146101fa5780637ecebe001461020f578063afdac68d14610222578063b0d965801461023557600080fd5b8062ad800c1461013057806316f0115b1461015957806320fc48811461017957806321ff32a9146101b35780633656eec2146101d4575b600080fd5b61014361013e366004611ad5565b610317565b6040516101509190611b34565b60405180910390f35b610161610358565b6040516001600160a01b039091168152602001610150565b61018c610187366004611ad5565b61039b565b6040805182516001600160801b03168152602092830151600f0b9281019290925201610150565b6101c66101c1366004611b5e565b6103ed565b604051908152602001610150565b6101c66101e2366004611b9a565b610433565b6101436101f5366004611ad5565b61046c565b610202610494565b6040516101509190611bc6565b6101c661021d366004611c51565b61068e565b6101c6610230366004611ad5565b6106ba565b61023d6108a0565b6040516101509190611c6c565b6101c6610258366004611ad5565b610abd565b61027061026b366004611d2e565b610adf565b6040516101509190611da3565b610161610b9a565b610161610bda565b6101c6610c1a565b6101c6610c34565b6102b06102ab366004611c51565b610c6c565b6040519015158152602001610150565b6102c8610ca2565b6040516101509190611de7565b6102b06102e3366004611ed4565b610d08565b6102f0610d4c565b6040805182516001600160801b039081168252602093840151169281019290925201610150565b60606103536005600084815260200190815260200160002060405160200161033f9190611efe565b604051602081830303815290604052610dab565b919050565b604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152600091610398910161033f565b90565b6040805180820190915260008082526020820152610353600e600084815260200190815260200160002060405160200161033f91546001600160801b038116825260801d600f0b602082015260400190565b60008381526004602090815260408083206001600160a01b038681168552908352818420908516845282528083205481519283015261042c910161033f565b9392505050565b60008281526001602090815260408083206001600160a01b0385168452825280832054815192830152610466910161033f565b92915050565b60606103536006600084815260200190815260200160002060405160200161033f9190611efe565b6104ff604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000610509610dcf565b600d5460026020527f3ccfbaf375b4885450e3887dab0704e32e03acfeaf0442976372f6750e322c1f5460008080527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b54939450926001600160801b03909216916105749190611fc0565b61057e9190611fd3565b905060008083116105905760006105ab565b6105ab836105a56105a086610e67565b610fcd565b9061123f565b604080516101a0810182526008546001600160801b038082168352600954600f0b6020840152600160801b918290048116938301939093526060820186905260808201879052600a5480841660a0840152600b5480851660c085015290829004841660e08401528190048316610100830152600d5480841661012084015204909116610140820152909150600090610160810184156106535761064e8486611254565b610656565b60005b8152600954600160801b90046001600160801b03166020918201526040519192506106879161033f91849101611bc6565b5050505090565b6001600160a01b038116600090815260076020908152604080832054815192830152610353910161033f565b601354601280546000926001600160801b03600160801b8204811693911691849190839081106106ec576106ec611fe6565b600091825260208083206040805180820190915292015463ffffffff8116835264010000000090046001600160e01b031690820152915061072d8685611fd3565b90506000831561074757610742600185611fd3565b610756565b60125461075690600190611fd3565b60408051808201909152600080825260208201529091505b8482146108055760006012838154811061078a5761078a611fe6565b6000918252602090912001805490915063ffffffff1684106107d85760408051808201909152905463ffffffff8116825264010000000090046001600160e01b031660208201529050610805565b82156107ee576107e9600184611fd3565b6107fd565b6012546107fd90600190611fd3565b92505061076e565b805163ffffffff1660000361082d57604051630a89817b60e41b815260040160405180910390fd5b600081602001516001600160e01b031685602001516001600160e01b03166108559190611fd3565b825186519192506000916108729163ffffffff9081169116611fd3565b90506108936108818284612012565b60405160200161033f91815260200190565b5050505050505050919050565b6108a8611a37565b60408051610180810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f00000000000000000000000000000000000000000000000000000000000000006020808401919091527f0000000000000000000000000000000000000000000000000000000000000000838501527f00000000000000000000000000000000000000000000000000000000000000006060808501919091527f000000000000000000000000000000000000000000000000000000000000000060808501527f000000000000000000000000000000000000000000000000000000000000000060a08501527f000000000000000000000000000000000000000000000000000000000000000060c0850152601154831660e08501527f0000000000000000000000000000000000000000000000000000000000000000909216610100840152835191820184527f000000000000000000000000000000000000000000000000000000000000000082527f0000000000000000000000000000000000000000000000000000000000000000828201527f0000000000000000000000000000000000000000000000000000000000000000828501526101208301919091526012546101408301527f000000000000000000000000000000000000000000000000000000000000000061016083015291516103989261033f929101611c6c565b600081815260026020908152604080832054815192830152610353910161033f565b606060008267ffffffffffffffff811115610afc57610afc612026565b604051908082528060200260200182016040528015610b25578160200160208202803683370190505b50905060005b83811015610b7e576000858583818110610b4757610b47611fe6565b90506020020135905060008154905080848481518110610b6957610b69611fe6565b60209081029190910101525050600101610b2b565b50610b938160405160200161033f9190611da3565b5092915050565b604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152600091610398910161033f565b604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152600091610398910161033f565b600061039860105460405160200161033f91815260200190565b60006103987f000000000000000000000000000000000000000000000000000000000000000060405160200161033f91815260200190565b6001600160a01b03811660009081526014602090815260408083205490516103539261033f9260ff169101901515815260200190565b6040805161014081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810191909152610398600860405160200161033f919061203c565b6001600160a01b038281166000908152600360209081526040808320938516835292815282822054835160ff9091161515918101919091529091610466910161033f565b6040805180820190915260008082526020820152604080518082018252600d546001600160801b03808216808452600160801b90920481166020938401908152845193840192909252905116918101919091526103989060600161033f565b80604051636e64089360e11b8152600401610dc69190611b34565b60405180910390fd5b6040516303d1689d60e11b8152670de0b6b3a764000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a90602401602060405180830381865afa158015610e3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6291906120bd565b905090565b610ec460405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60408051610160810182526008546001600160801b038082168352600954600f0b6020840152600160801b909104811692820192909252606081018490527f000000000000000000000000000000000000000000000000000000000000000060808201527f000000000000000000000000000000000000000000000000000000000000000060a08201527f000000000000000000000000000000000000000000000000000000000000000060c0820152600a54821660e0820152600b549091610100830191610f939116611269565b8152600a546001600160801b03600160801b9182900481166020840152600b54604090930192610fc592900416611269565b905292915050565b600080610fed83610140015184610120015161123f90919063ffffffff16565b61010084015160e08501516110019161123f565b61100b91906120d6565b90506000611021846000015185602001516112df565b905060008213156110c35760006110638286604001518760a001518860c00151670de0b6b3a76400006110549190611fd3565b89606001518a608001516112fc565b915061107190508184611385565b905080156110bd576110aa828660400151838860c00151670de0b6b3a764000061109b9190611fd3565b89606001518a6080015161139a565b855186906110b9908390611fd3565b9052505b50611181565b6000821215611181576110d5826120f6565b915060006111098286604001518760c00151670de0b6b3a76400006110fa9190611fd3565b886060015189608001516113d9565b915061111790508184611385565b9050801561116357611150828660400151838860c00151670de0b6b3a76400006111419190611fd3565b89606001518a60800151611463565b8551869061115f908390611fc0565b9052505b61116d8184611fd3565b8551869061117c908390611fc0565b905250505b60006111b0856101000151670de0b6b3a764000061119f9190611fd3565b606087015160e088015191906114e4565b6111de866101400151670de0b6b3a76400006111cc9190611fd3565b606088015161012089015191906114e4565b6111e891906120d6565b905060008186600001516111fc9190612112565b90508560a001518112156112235760405163aeeb825d60e01b815260040160405180910390fd5b80865260a08601516112359082611fd3565b9695505050505050565b600061042c8383670de0b6b3a76400006114e4565b600061042c83670de0b6b3a7640000846114e4565b600080670de0b6b3a764000061127d611502565b6112879190612132565b90508083116112975760006112a1565b6112a18184611fd3565b915061042c6112d8670de0b6b3a76400007f0000000000000000000000000000000000000000000000000000000000000000612132565b8390611254565b6000806112ec83856120d6565b9050600081121561042c57600080fd5b6000808061130a8585611254565b9050600061131b82868c8a8d611538565b9050600061135c611334670de0b6b3a76400008a611254565b61135261134b8b6113458b8f61123f565b90611566565b869061123f565b6113459085611fd3565b9050611368898c611fd3565b6113728b83611fd3565b945094505050505b965096945050505050565b6000818311611394578261042c565b50919050565b6000806113ab8888888888886115bd565b9092509050806113ce57604051637ac17d2560e01b815260040160405180910390fd5b509695505050505050565b600080806113e78585611254565b905060006113f882868b8a8c611538565b9050600061142d611411670de0b6b3a76400008a611254565b611345611426670de0b6b3a764000087611fc0565b8590611254565b9050600061143b8288611254565b90506114478b82611fd3565b611451838c611fd3565b95509550505050509550959350505050565b6000806114708484611254565b9050600061148182858b898c611538565b905061149186611345898b611fd3565b975060006114be6114aa670de0b6b3a76400008961165e565b611345856114b88d87611fd3565b90611254565b90506114ca8186611254565b90506114d68a82611fd3565b9a9950505050505050505050565b60008260001904841183021582026114fb57600080fd5b5091020490565b600061152e7f000000000000000000000000000000000000000000000000000000000000000042612149565b610e629042611fd3565b60006115448284611566565b61155c61155585611345898961123f565b889061123f565b6112359190611fc0565b60008160000361157f5750670de0b6b3a7640000610466565b8260000361158f57506000610466565b81600061159b85611673565b90508181026115b2670de0b6b3a76400008261215d565b905061123581611886565b600080806115cb8585611254565b905060006115dc82868c8a8d611538565b90506115ec876113458a8c611fc0565b9850888110156116045760008093509350505061137a565b600061162961161b670de0b6b3a76400008a61165e565b611345856114b88e87611fd3565b90506116358187611254565b9050808b111561164c57611649818c611fd3565b94505b60019350505050965096945050505050565b600061042c83670de0b6b3a764000084611a11565b600080821361169557604051636838feed60e11b815260040160405180910390fd5b5060606001600160801b03821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110600190811b90911783811c90911017609f81810383019390931b90921c6c465772b2bbbb5f824b15207a3081018102821d6d0388eaa27412d5aca026815d636e018102821d6d0df99ac502031bf953eff472fdcc018102821d6d13cdffb29d51d99322bdff5f2211018102821d6d0a0f742023def783a307a986912e018102821d6d01920d8043ca89b5239253284e42018102821d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7882018202831d6d0139601a2efabe717e604cbb4894018202831d6d02247f7a7b6594320649aa03aba1018202831d6c8c3f38e95a6b1ff2ab1c3b343619018202831d6d02384773bdf1ac5676facced60901901820290921d6cb9a025d814b29c212b8b1a07cd190102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a550602605f19919091017d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b6000680248ce36a70cb26b3e1982136118a157506000919050565b680755bf798b4a1bf1e582126118ca5760405163df92cc9d60e01b815260040160405180910390fd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6000826000190484118302158202611a2857600080fd5b50910281810615159190040190565b60405180610180016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b03168152602001611ac160405180606001604052806000815260200160008152602001600081525090565b815260200160008152602001600081525090565b600060208284031215611ae757600080fd5b5035919050565b6000815180845260005b81811015611b1457602081850181015186830182015201611af8565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061042c6020830184611aee565b80356001600160a01b038116811461035357600080fd5b600080600060608486031215611b7357600080fd5b83359250611b8360208501611b47565b9150611b9160408501611b47565b90509250925092565b60008060408385031215611bad57600080fd5b82359150611bbd60208401611b47565b90509250929050565b815181526020808301519082015260408083015190820152606080830151908201526080808301519082015260a0808301519082015260c0808301519082015260e08083015190820152610100808301519082015261012080830151908201526101408083015190820152610160808301519082015261018091820151918101919091526101a00190565b600060208284031215611c6357600080fd5b61042c82611b47565b81516001600160a01b031681526101c081016020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e0830151611cd460e08401826001600160a01b03169052565b50610100838101516001600160a01b03811684830152505061012083810151805184830152602081015161014085015260408101516101608501525050610140830151610180830152610160909201516101a09091015290565b60008060208385031215611d4157600080fd5b823567ffffffffffffffff80821115611d5957600080fd5b818501915085601f830112611d6d57600080fd5b813581811115611d7c57600080fd5b8660208260051b8501011115611d9157600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b81811015611ddb57835183529284019291840191600101611dbf565b50909695505050505050565b81516001600160801b0316815261014081016020830151611e1360208401826001600160801b03169052565b506040830151611e286040840182600f0b9052565b506060830151611e4360608401826001600160801b03169052565b506080830151611e5e60808401826001600160801b03169052565b5060a0830151611e7960a08401826001600160801b03169052565b5060c0830151611e9460c08401826001600160801b03169052565b5060e0830151611eaf60e08401826001600160801b03169052565b506101008381015115159083015261012080840151801515828501525b505092915050565b60008060408385031215611ee757600080fd5b611ef083611b47565b9150611bbd60208401611b47565b600060208083526000845481600182811c915080831680611f2057607f831692505b8583108103611f3d57634e487b7160e01b85526022600452602485fd5b878601838152602001818015611f5a5760018114611f7057611f9b565b60ff198616825284151560051b82019650611f9b565b60008b81526020902060005b86811015611f9557815484820152908501908901611f7c565b83019750505b50949998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561046657610466611faa565b8181038181111561046657610466611faa565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60008261202157612021611ffc565b500490565b634e487b7160e01b600052604160045260246000fd5b81546001600160801b038082168352608091821c60208401526001840154600f81900b6040850152821c6060840152600284015480821683850152821c60a0840152600384015490811660c0840152901c60e0820152600482015460ff8082161515610100840152600882901c161515610120830152610140820190610b93565b6000602082840312156120cf57600080fd5b5051919050565b8181036000831280158383131683831282161715610b9357610b93611faa565b6000600160ff1b820161210b5761210b611faa565b5060000390565b8082018281126000831280158216821582161715611ecc57611ecc611faa565b808202811582820484141761046657610466611faa565b60008261215857612158611ffc565b500690565b60008261216c5761216c611ffc565b600160ff1b82146000198414161561218657612186611faa565b50059056fea2646970667358221220073a59160e8b1c3ada75a5885baaa6c7da8f689efc4111e7510ef136dbf9f78364736f6c63430008130033a26469706673582212208d2ef6b515ce23cde925bc47f2012ab7ef7976332a3a0799f304da38e3333da164736f6c63430008130033", + "sourceMap": "861:3637:10:-:0;;;2123:1:11;2091:33;;1714:539:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4847:22:11;;;;;;:28;4833:42;;;;4898:22;;:27;;;4885:40;;4954:22;:33;;;4935:52;;1985:14:10;;2013:9;;2036:14;;2064:15;;565:4:27;-1:-1:-1;5014:35:11;:85;;;565:4:27;5065:10:11;;:34;5014:85;:141;;;;565:4:27;5115:16:11;;:40;5014:141;4997:228;;;5187:27;;-1:-1:-1;;;5187:27:11;;;;;;;;;;;4997:228;5279:11;;5251:19;;;;:25;:39;;:92;;;5333:10;;5306:14;:19;;;:24;;;:37;5251:92;:157;;;;5392:16;;5359:14;:19;;;:30;;;:49;5251:157;5234:241;;;5440:24;;-1:-1:-1;;;5440:24:11;;;;;;;;;;;5234:241;5491:19;;;;5484:26;;:4;:26;;;;;;;;;;;;;;;5578:25;;-1:-1:-1;5565:38:11;;-1:-1:-1;;;;;;5565:38:11;;;-1:-1:-1;;;;;5565:38:11;;;;;;;5636:35;;;;5613:20;:58;;;;;;;;;;;;;5696:27;;;;5681:12;:42;;;;;;;;;;;5751:29;;;;5733:47;;;;:15;;:47;;;:::i;:::-;-1:-1:-1;5790:18:11;:30;;-1:-1:-1;;;;;;5790:30:11;;;-1:-1:-1;;;;;5790:30:11;;;;;;;5830:13;:30;;;;;;;;;;;;;;;5870:14;:32;2144:12:10;::::1;;::::0;-1:-1:-1;2216:30:10;;::::1;::::0;:13:::1;::::0;:30:::1;::::0;::::1;::::0;::::1;:::i;:::-;;1714:539:::0;;;;;;861:3637;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;861:3637:10;-1:-1:-1;;;;;861:3637:10;;;;;;;;;;;-1:-1:-1;861:3637:10;;;;;;;-1:-1:-1;861:3637:10;;;-1:-1:-1;861:3637:10;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:153;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:247;213:2;207:9;255:3;243:16;;-1:-1:-1;;;;;274:34:153;;310:22;;;271:62;268:88;;;336:18;;:::i;:::-;372:2;365:22;146:247;:::o;398:131::-;-1:-1:-1;;;;;473:31:153;;463:42;;453:70;;519:1;516;509:12;453:70;398:131;:::o;534:138::-;613:13;;635:31;613:13;635:31;:::i;:::-;534:138;;;:::o;677:525::-;739:5;787:4;775:9;770:3;766:19;762:30;759:50;;;805:1;802;795:12;759:50;838:2;832:9;880:4;868:17;;-1:-1:-1;;;;;900:34:153;;936:22;;;897:62;894:88;;;962:18;;:::i;:::-;1002:10;998:2;991:22;;1031:6;1022:15;;1067:9;1061:16;1053:6;1046:32;1132:2;1121:9;1117:18;1111:25;1106:2;1098:6;1094:15;1087:50;1191:2;1180:9;1176:18;1170:25;1165:2;1157:6;1153:15;1146:50;;677:525;;;;:::o;1207:974::-;1272:5;1325:3;1318:4;1310:6;1306:17;1302:27;1292:55;;1343:1;1340;1333:12;1292:55;1366:13;;1398:4;-1:-1:-1;;;;;1451:10:153;;;1448:36;;;1464:18;;:::i;:::-;1510:2;1507:1;1503:10;1542:2;1536:9;1605:2;1601:7;1596:2;1592;1588:11;1584:25;1576:6;1572:38;1660:6;1648:10;1645:22;1640:2;1628:10;1625:18;1622:46;1619:72;;;1671:18;;:::i;:::-;1707:2;1700:22;1757:18;;;1833:15;;;1829:24;;;1791:15;;;;-1:-1:-1;1865:15:153;;;1862:35;;;1893:1;1890;1883:12;1862:35;1929:2;1921:6;1917:15;1906:26;;1941:210;1957:6;1952:3;1949:15;1941:210;;;2030:3;2024:10;2047:31;2072:5;2047:31;:::i;:::-;2091:18;;2129:12;;;;1974;;;;1941:210;;;2169:6;1207:974;-1:-1:-1;;;;;;;1207:974:153:o;2186:1732::-;2402:6;2410;2418;2426;2434;2442;2495:3;2483:9;2474:7;2470:23;2466:33;2463:53;;;2512:1;2509;2502:12;2463:53;2539:16;;-1:-1:-1;;;;;2604:14:153;;;2601:34;;;2631:1;2628;2621:12;2601:34;2654:22;;;;2710:6;2692:16;;;2688:29;2685:49;;;2730:1;2727;2720:12;2685:49;2756:17;;:::i;:::-;2803:2;2797:9;2815:33;2840:7;2815:33;:::i;:::-;2857:22;;2917:2;2909:11;;2903:18;2930:33;2903:18;2930:33;:::i;:::-;2990:2;2979:14;;2972:31;3035:42;3073:2;3065:11;;3035:42;:::i;:::-;3030:2;3023:5;3019:14;3012:66;3110:55;3157:7;3152:2;3148;3144:11;3110:55;:::i;:::-;3105:2;3098:5;3094:14;3087:79;3200:56;3248:7;3242:3;3238:2;3234:12;3200:56;:::i;:::-;3193:4;3186:5;3182:16;3175:82;3296:3;3292:2;3288:12;3282:19;3326:2;3316:8;3313:16;3310:36;;;3342:1;3339;3332:12;3310:36;3380:67;3439:7;3428:8;3424:2;3420:17;3380:67;:::i;:::-;3373:4;3362:16;;3355:93;-1:-1:-1;3366:5:153;-1:-1:-1;3491:49:153;3536:2;3521:18;;3491:49;:::i;:::-;3481:59;;3559:49;3604:2;3593:9;3589:18;3559:49;:::i;:::-;3549:59;;3648:2;3637:9;3633:18;3627:25;3617:35;;3671:51;3716:4;3705:9;3701:20;3671:51;:::i;:::-;3661:61;;3768:4;3757:9;3753:20;3747:27;3731:43;;3799:2;3789:8;3786:16;3783:36;;;3815:1;3812;3805:12;3783:36;;3838:74;3904:7;3893:8;3882:9;3878:24;3838:74;:::i;:::-;3828:84;;;2186:1732;;;;;;;;:::o;:::-;861:3637:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x608060405260043610620001435760003560e01c806394ad46d911620000b9578063c415b95c1162000078578063c415b95c14620003a3578063c905a4b514620003c5578063d2c35ce814620003dd578063dd2b8fbb1462000402578063dd6d30c11462000427578063e3331555146200043f57600080fd5b806394ad46d914620002e257806399623bb114620002fa5780639af1d35a146200031c5780639af252621462000359578063b2561263146200037e57600080fd5b80637613b08c11620001065780637613b08c146200021a57806377b81aac146200023f5780637f7c5a7d146200027f5780638522978514620002a65780638927f4e914620002cb57600080fd5b8063025b22bc146200014857806303a5aa92146200016f57806309b9075f14620001ae5780634fbfee7714620001d35780635aa6e67514620001f8575b600080fd5b3480156200015557600080fd5b506200016d6200016736600462000f11565b62000461565b005b3480156200017c57600080fd5b5060035462000191906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015620001bb57600080fd5b506200016d620001cd36600462000f38565b620004f2565b348015620001e057600080fd5b506200016d620001f236600462000fb2565b62000530565b3480156200020557600080fd5b5060005462000191906001600160a01b031681565b3480156200022757600080fd5b506200016d6200023936600462000fcc565b6200058e565b3480156200024c57600080fd5b50620002706200025e36600462000f11565b60026020526000908152604090205481565b604051908152602001620001a5565b3480156200028c57600080fd5b506200029762000670565b604051620001a5919062000ff7565b348015620002b357600080fd5b506200016d620002c536600462000f11565b620006d4565b62000191620002dc3660046200118e565b6200075d565b348015620002ef57600080fd5b5062000297620007e0565b3480156200030757600080fd5b5060055462000191906001600160a01b031681565b3480156200032957600080fd5b506007546008546009546200033d92919083565b60408051938452602084019290925290820152606001620001a5565b3480156200036657600080fd5b506200016d6200037836600462000f38565b62000842565b3480156200038b57600080fd5b506200016d6200039d36600462000f11565b6200087b565b348015620003b057600080fd5b50600a5462000191906001600160a01b031681565b348015620003d257600080fd5b506200027060065481565b348015620003ea57600080fd5b506200016d620003fc36600462000f11565b620008ee565b3480156200040f57600080fd5b506200016d6200042136600462000f11565b62000963565b3480156200043457600080fd5b506200027060015481565b3480156200044c57600080fd5b5060045462000191906001600160a01b031681565b6000546001600160a01b031633146200048c576040516282b42960e81b815260040160405180910390fd5b6001600160a01b038116620004a057600080fd5b600380546001600160a01b0319166001600160a01b03831690811790915560018054810190556040517f310ba5f1d2ed074b51e2eccd052a47ae9ab7c6b800d1fca3db3999d6a592ca0390600090a250565b6000546001600160a01b031633146200051d576040516282b42960e81b815260040160405180910390fd5b6200052b600c838362000e6b565b505050565b6000546001600160a01b031633146200055b576040516282b42960e81b815260040160405180910390fd5b600681905560405181907f395a61259037298d1c4cd4bf177b64ad5995d38a9394573fcd9060d649314ad090600090a250565b6000546001600160a01b03163314620005b9576040516282b42960e81b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000813511806200060c57507f00000000000000000000000000000000000000000000000000000000000000008160200135115b806200063b57507f00000000000000000000000000000000000000000000000000000000000000008160400135115b156200065a5760405163cd4e616760e01b815260040160405180910390fd5b8035600755602081013560085560400135600955565b6060600b805480602002602001604051908101604052809291908181526020018280548015620006ca57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620006ab575b5050505050905090565b6000546001600160a01b03163314620006ff576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0381166200071357600080fd5b600580546001600160a01b0319166001600160a01b0383169081179091556040517f03aa5b0fb65014eea89fda04a7bc11742014881f3c078f2c75b7226ce10d941890600090a250565b600080600c805480602002602001604051908101604052809291908181526020018280548015620007b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000799575b5050505050905060608190506000620007d488838888620009d8565b98975050505050505050565b6060600c805480602002602001604051908101604052809291908181526020018280548015620006ca576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620006ab575050505050905090565b6000546001600160a01b031633146200086d576040516282b42960e81b815260040160405180910390fd5b6200052b600b838362000e6b565b6000546001600160a01b03163314620008a6576040516282b42960e81b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b038316908117825560405190917f9d3e522e1e47a2f6009739342b9cc7b252a1888154e843ab55ee1c81745795ab91a250565b6000546001600160a01b0316331462000919576040516282b42960e81b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0383169081179091556040517fe5693914d19c789bdee50a362998c0bc8d035a835f9871da5d51152f0582c34f90600090a250565b6000546001600160a01b031633146200098e576040516282b42960e81b815260040160405180910390fd5b600480546001600160a01b0319166001600160a01b0383169081179091556040517ff3e07b4bb4394f2ff320bd1dd151551dff304d5e948b401d8558b228482c97d890600090a250565b60003415620009fa57604051638fbc3bd960e01b815260040160405180910390fd5b600a546001600160a01b039081166101008701523060e0870152604080516060810182526007548152600854602082015260095491810191909152610120870152600654600554909116600062000a548888858562000e01565b60035460405163e3420f4f60e01b81529192506000916001600160a01b039091169063e3420f4f9062000a94908c908690899089908f906004016200139c565b6020604051808303816000875af115801562000ab4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ada9190620013e4565b6001546001600160a01b038083166000908152600260205260409081902083905560045490911660e08d015251919250907fc6f4867fb04085fae8d5bc8a6eb6bd83992441fe62b92acc3710f0cedf0e753a9062000b429084908d9088908a908f9062001404565b60405180910390a288516040516323b872dd60e01b8152336004820152306024820152604481018990526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801562000ba1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bc791906200144d565b50885160405163095ea7b360e01b81526001600160a01b03838116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af115801562000c1c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c4291906200144d565b62000c60576040516340b27c2160e11b815260040160405180910390fd5b604051632002b33360e01b81526004810188905260248101879052336044820152600160648201526001600160a01b03821690632002b333906084016020604051808303816000875af115801562000cbc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ce2919062001471565b5060005b600b5481101562000d9057816001600160a01b0316637180c8ca600b838154811062000d165762000d166200148b565b60009182526020909120015460405160e083901b6001600160e01b03191681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b15801562000d6b57600080fd5b505af115801562000d80573d6000803e3d6000fd5b5050505080600101905062000ce6565b506004805460405163ab033ea960e01b81526001600160a01b039182169281019290925282169063ab033ea990602401600060405180830381600087803b15801562000ddb57600080fd5b505af115801562000df0573d6000803e3d6000fd5b50929b9a5050505050505050505050565b60008483837f000000000000000000000000000000000000000000000000000000000000000060405162000e359062000ed3565b62000e449493929190620014a1565b604051809103906000f08015801562000e61573d6000803e3d6000fd5b5095945050505050565b82805482825590600052602060002090810192821562000ec1579160200282015b8281111562000ec15781546001600160a01b0319166001600160a01b0384351617825560209092019160019091019062000e8c565b5062000ecf92915062000ee1565b5090565b61268a80620014db83390190565b5b8082111562000ecf576000815560010162000ee2565b6001600160a01b038116811462000f0e57600080fd5b50565b60006020828403121562000f2457600080fd5b813562000f318162000ef8565b9392505050565b6000806020838503121562000f4c57600080fd5b823567ffffffffffffffff8082111562000f6557600080fd5b818501915085601f83011262000f7a57600080fd5b81358181111562000f8a57600080fd5b8660208260051b850101111562000fa057600080fd5b60209290920196919550909350505050565b60006020828403121562000fc557600080fd5b5035919050565b60006060828403121562000fdf57600080fd5b50919050565b803562000ff28162000ef8565b919050565b6020808252825182820181905260009190848201906040850190845b818110156200103a5783516001600160a01b03168352928401929184019160010162001013565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051610180810167ffffffffffffffff8111828210171562001083576200108362001046565b60405290565b6000606082840312156200109c57600080fd5b6040516060810181811067ffffffffffffffff82111715620010c257620010c262001046565b80604052508091508235815260208301356020820152604083013560408201525092915050565b600082601f830112620010fb57600080fd5b8135602067ffffffffffffffff808311156200111b576200111b62001046565b8260051b604051601f19603f8301168101818110848211171562001143576200114362001046565b6040529384528581018301938381019250878511156200116257600080fd5b83870191505b84821015620011835781358352918301919083019062001168565b979650505050505050565b600080600080848603610220811215620011a757600080fd5b6101c080821215620011b857600080fd5b620011c26200105c565b9150620011cf8762000fe5565b82526020870135602083015260408701356040830152606087013560608301526080870135608083015260a087013560a083015260c087013560c08301526200121b60e0880162000fe5565b60e08301526101006200123081890162000fe5565b90830152610120620012458989830162001089565b908301526101808701356101408301526101a087013561016083015290945085013567ffffffffffffffff8111156200127d57600080fd5b6200128b87828801620010e9565b94979496505050506101e0830135926102000135919050565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e08101516200130860e08401826001600160a01b03169052565b50610100818101516001600160a01b0381168483015250506101208181015180518483015260208101516101408501526040810151610160850152505061014081015161018083015261016001516101a090910152565b600081518084526020808501945080840160005b83811015620013915781518752958201959082019060010162001373565b509495945050505050565b6000610240620013ad8389620012a4565b6001600160a01b038781166101c08501526101e0840187905285166102008401526102208301819052620007d4818401856200135f565b600060208284031215620013f757600080fd5b815162000f318162000ef8565b6001600160a01b03868116825260009061024090620014276020850189620012a4565b8087166101e0850152508461020084015280610220840152620007d4818401856200135f565b6000602082840312156200146057600080fd5b8151801515811462000f3157600080fd5b6000602082840312156200148457600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6102208101620014b28287620012a4565b6101c08201949094526001600160a01b039283166101e082015291166102009091015291905056fe61026060405260016000553480156200001757600080fd5b506040516200268a3803806200268a8339810160408190526200003a91620002bc565b6001600160a01b0380831660805260a084905284511660c052604084015184908490849083906103e8111562000083576040516349db44f560e01b815260040160405180910390fd5b60408101516101605260608101516101805260a0810151600003620000bb57604051635428734d60e01b815260040160405180910390fd5b60a08101805160e0525160808201511080620000eb57508060a001518160800151620000e89190620003c2565b15155b156200010a5760405163253fffcf60e11b815260040160405180910390fd5b608081015161010090815260c082015161012090815260208301516101405260e0830151601180546001600160a01b0319166001600160a01b03928316179055918301519091166102005281015151670de0b6b3a764000010806200017f5750670de0b6b3a764000081610120015160200151115b806200019b5750670de0b6b3a764000081610120015160400151115b15620001ba576040516322f72cc360e11b815260040160405180910390fd5b61012081018051516101a0528051602001516101c05251604001516101e0526101600151610220525050506001600160a01b03166102405250620003e5915050565b60405161018081016001600160401b03811182821017156200022e57634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b03811681146200024c57600080fd5b919050565b6000606082840312156200026457600080fd5b604051606081016001600160401b03811182821017156200029557634e487b7160e01b600052604160045260246000fd5b80604052508091508251815260208301516020820152604083015160408201525092915050565b600080600080848603610220811215620002d557600080fd5b6101c080821215620002e657600080fd5b620002f0620001fc565b9150620002fd8762000234565b82526020870151602083015260408701516040830152606087015160608301526080870151608083015260a087015160a083015260c087015160c08301526200034960e0880162000234565b60e08301526101006200035e81890162000234565b90830152610120620003738989830162000251565b908301526101808701516101408301526101a08701516101608301528601519094509250620003a66101e0860162000234565b9150620003b7610200860162000234565b905092959194509250565b600082620003e057634e487b7160e01b600052601260045260246000fd5b500690565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e0516102005161022051610240516121c1620004c9600039600081816103660152610def01526000610a87015260006109d701526000610a5001526000610a2b01526000610a080152600061093101526000818161090c0152610f2a0152600081816108e20152610f040152600081816109a70152610f5001526000818161095b01526112b401526000818161098101526115090152600081816108bd0152610be801526000610c3b01526000610ba801526121c16000f3fe608060405234801561001057600080fd5b506004361061012b5760003560e01c8063bd85b039116100ad578063c905a4b511610071578063c905a4b514610295578063cc962f8e1461029d578063d8165743146102c0578063e985e9c5146102d5578063fba56008146102e857600080fd5b8063bd85b0391461024a578063becee9c31461025d578063c45a01551461027d578063c55dae6314610285578063c69e16ad1461028d57600080fd5b80634e41a1fb116100f45780634e41a1fb146101e757806360246c88146101fa5780637ecebe001461020f578063afdac68d14610222578063b0d965801461023557600080fd5b8062ad800c1461013057806316f0115b1461015957806320fc48811461017957806321ff32a9146101b35780633656eec2146101d4575b600080fd5b61014361013e366004611ad5565b610317565b6040516101509190611b34565b60405180910390f35b610161610358565b6040516001600160a01b039091168152602001610150565b61018c610187366004611ad5565b61039b565b6040805182516001600160801b03168152602092830151600f0b9281019290925201610150565b6101c66101c1366004611b5e565b6103ed565b604051908152602001610150565b6101c66101e2366004611b9a565b610433565b6101436101f5366004611ad5565b61046c565b610202610494565b6040516101509190611bc6565b6101c661021d366004611c51565b61068e565b6101c6610230366004611ad5565b6106ba565b61023d6108a0565b6040516101509190611c6c565b6101c6610258366004611ad5565b610abd565b61027061026b366004611d2e565b610adf565b6040516101509190611da3565b610161610b9a565b610161610bda565b6101c6610c1a565b6101c6610c34565b6102b06102ab366004611c51565b610c6c565b6040519015158152602001610150565b6102c8610ca2565b6040516101509190611de7565b6102b06102e3366004611ed4565b610d08565b6102f0610d4c565b6040805182516001600160801b039081168252602093840151169281019290925201610150565b60606103536005600084815260200190815260200160002060405160200161033f9190611efe565b604051602081830303815290604052610dab565b919050565b604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152600091610398910161033f565b90565b6040805180820190915260008082526020820152610353600e600084815260200190815260200160002060405160200161033f91546001600160801b038116825260801d600f0b602082015260400190565b60008381526004602090815260408083206001600160a01b038681168552908352818420908516845282528083205481519283015261042c910161033f565b9392505050565b60008281526001602090815260408083206001600160a01b0385168452825280832054815192830152610466910161033f565b92915050565b60606103536006600084815260200190815260200160002060405160200161033f9190611efe565b6104ff604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000610509610dcf565b600d5460026020527f3ccfbaf375b4885450e3887dab0704e32e03acfeaf0442976372f6750e322c1f5460008080527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b54939450926001600160801b03909216916105749190611fc0565b61057e9190611fd3565b905060008083116105905760006105ab565b6105ab836105a56105a086610e67565b610fcd565b9061123f565b604080516101a0810182526008546001600160801b038082168352600954600f0b6020840152600160801b918290048116938301939093526060820186905260808201879052600a5480841660a0840152600b5480851660c085015290829004841660e08401528190048316610100830152600d5480841661012084015204909116610140820152909150600090610160810184156106535761064e8486611254565b610656565b60005b8152600954600160801b90046001600160801b03166020918201526040519192506106879161033f91849101611bc6565b5050505090565b6001600160a01b038116600090815260076020908152604080832054815192830152610353910161033f565b601354601280546000926001600160801b03600160801b8204811693911691849190839081106106ec576106ec611fe6565b600091825260208083206040805180820190915292015463ffffffff8116835264010000000090046001600160e01b031690820152915061072d8685611fd3565b90506000831561074757610742600185611fd3565b610756565b60125461075690600190611fd3565b60408051808201909152600080825260208201529091505b8482146108055760006012838154811061078a5761078a611fe6565b6000918252602090912001805490915063ffffffff1684106107d85760408051808201909152905463ffffffff8116825264010000000090046001600160e01b031660208201529050610805565b82156107ee576107e9600184611fd3565b6107fd565b6012546107fd90600190611fd3565b92505061076e565b805163ffffffff1660000361082d57604051630a89817b60e41b815260040160405180910390fd5b600081602001516001600160e01b031685602001516001600160e01b03166108559190611fd3565b825186519192506000916108729163ffffffff9081169116611fd3565b90506108936108818284612012565b60405160200161033f91815260200190565b5050505050505050919050565b6108a8611a37565b60408051610180810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f00000000000000000000000000000000000000000000000000000000000000006020808401919091527f0000000000000000000000000000000000000000000000000000000000000000838501527f00000000000000000000000000000000000000000000000000000000000000006060808501919091527f000000000000000000000000000000000000000000000000000000000000000060808501527f000000000000000000000000000000000000000000000000000000000000000060a08501527f000000000000000000000000000000000000000000000000000000000000000060c0850152601154831660e08501527f0000000000000000000000000000000000000000000000000000000000000000909216610100840152835191820184527f000000000000000000000000000000000000000000000000000000000000000082527f0000000000000000000000000000000000000000000000000000000000000000828201527f0000000000000000000000000000000000000000000000000000000000000000828501526101208301919091526012546101408301527f000000000000000000000000000000000000000000000000000000000000000061016083015291516103989261033f929101611c6c565b600081815260026020908152604080832054815192830152610353910161033f565b606060008267ffffffffffffffff811115610afc57610afc612026565b604051908082528060200260200182016040528015610b25578160200160208202803683370190505b50905060005b83811015610b7e576000858583818110610b4757610b47611fe6565b90506020020135905060008154905080848481518110610b6957610b69611fe6565b60209081029190910101525050600101610b2b565b50610b938160405160200161033f9190611da3565b5092915050565b604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152600091610398910161033f565b604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152600091610398910161033f565b600061039860105460405160200161033f91815260200190565b60006103987f000000000000000000000000000000000000000000000000000000000000000060405160200161033f91815260200190565b6001600160a01b03811660009081526014602090815260408083205490516103539261033f9260ff169101901515815260200190565b6040805161014081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810191909152610398600860405160200161033f919061203c565b6001600160a01b038281166000908152600360209081526040808320938516835292815282822054835160ff9091161515918101919091529091610466910161033f565b6040805180820190915260008082526020820152604080518082018252600d546001600160801b03808216808452600160801b90920481166020938401908152845193840192909252905116918101919091526103989060600161033f565b80604051636e64089360e11b8152600401610dc69190611b34565b60405180910390fd5b6040516303d1689d60e11b8152670de0b6b3a764000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a90602401602060405180830381865afa158015610e3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6291906120bd565b905090565b610ec460405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60408051610160810182526008546001600160801b038082168352600954600f0b6020840152600160801b909104811692820192909252606081018490527f000000000000000000000000000000000000000000000000000000000000000060808201527f000000000000000000000000000000000000000000000000000000000000000060a08201527f000000000000000000000000000000000000000000000000000000000000000060c0820152600a54821660e0820152600b549091610100830191610f939116611269565b8152600a546001600160801b03600160801b9182900481166020840152600b54604090930192610fc592900416611269565b905292915050565b600080610fed83610140015184610120015161123f90919063ffffffff16565b61010084015160e08501516110019161123f565b61100b91906120d6565b90506000611021846000015185602001516112df565b905060008213156110c35760006110638286604001518760a001518860c00151670de0b6b3a76400006110549190611fd3565b89606001518a608001516112fc565b915061107190508184611385565b905080156110bd576110aa828660400151838860c00151670de0b6b3a764000061109b9190611fd3565b89606001518a6080015161139a565b855186906110b9908390611fd3565b9052505b50611181565b6000821215611181576110d5826120f6565b915060006111098286604001518760c00151670de0b6b3a76400006110fa9190611fd3565b886060015189608001516113d9565b915061111790508184611385565b9050801561116357611150828660400151838860c00151670de0b6b3a76400006111419190611fd3565b89606001518a60800151611463565b8551869061115f908390611fc0565b9052505b61116d8184611fd3565b8551869061117c908390611fc0565b905250505b60006111b0856101000151670de0b6b3a764000061119f9190611fd3565b606087015160e088015191906114e4565b6111de866101400151670de0b6b3a76400006111cc9190611fd3565b606088015161012089015191906114e4565b6111e891906120d6565b905060008186600001516111fc9190612112565b90508560a001518112156112235760405163aeeb825d60e01b815260040160405180910390fd5b80865260a08601516112359082611fd3565b9695505050505050565b600061042c8383670de0b6b3a76400006114e4565b600061042c83670de0b6b3a7640000846114e4565b600080670de0b6b3a764000061127d611502565b6112879190612132565b90508083116112975760006112a1565b6112a18184611fd3565b915061042c6112d8670de0b6b3a76400007f0000000000000000000000000000000000000000000000000000000000000000612132565b8390611254565b6000806112ec83856120d6565b9050600081121561042c57600080fd5b6000808061130a8585611254565b9050600061131b82868c8a8d611538565b9050600061135c611334670de0b6b3a76400008a611254565b61135261134b8b6113458b8f61123f565b90611566565b869061123f565b6113459085611fd3565b9050611368898c611fd3565b6113728b83611fd3565b945094505050505b965096945050505050565b6000818311611394578261042c565b50919050565b6000806113ab8888888888886115bd565b9092509050806113ce57604051637ac17d2560e01b815260040160405180910390fd5b509695505050505050565b600080806113e78585611254565b905060006113f882868b8a8c611538565b9050600061142d611411670de0b6b3a76400008a611254565b611345611426670de0b6b3a764000087611fc0565b8590611254565b9050600061143b8288611254565b90506114478b82611fd3565b611451838c611fd3565b95509550505050509550959350505050565b6000806114708484611254565b9050600061148182858b898c611538565b905061149186611345898b611fd3565b975060006114be6114aa670de0b6b3a76400008961165e565b611345856114b88d87611fd3565b90611254565b90506114ca8186611254565b90506114d68a82611fd3565b9a9950505050505050505050565b60008260001904841183021582026114fb57600080fd5b5091020490565b600061152e7f000000000000000000000000000000000000000000000000000000000000000042612149565b610e629042611fd3565b60006115448284611566565b61155c61155585611345898961123f565b889061123f565b6112359190611fc0565b60008160000361157f5750670de0b6b3a7640000610466565b8260000361158f57506000610466565b81600061159b85611673565b90508181026115b2670de0b6b3a76400008261215d565b905061123581611886565b600080806115cb8585611254565b905060006115dc82868c8a8d611538565b90506115ec876113458a8c611fc0565b9850888110156116045760008093509350505061137a565b600061162961161b670de0b6b3a76400008a61165e565b611345856114b88e87611fd3565b90506116358187611254565b9050808b111561164c57611649818c611fd3565b94505b60019350505050965096945050505050565b600061042c83670de0b6b3a764000084611a11565b600080821361169557604051636838feed60e11b815260040160405180910390fd5b5060606001600160801b03821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110600190811b90911783811c90911017609f81810383019390931b90921c6c465772b2bbbb5f824b15207a3081018102821d6d0388eaa27412d5aca026815d636e018102821d6d0df99ac502031bf953eff472fdcc018102821d6d13cdffb29d51d99322bdff5f2211018102821d6d0a0f742023def783a307a986912e018102821d6d01920d8043ca89b5239253284e42018102821d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7882018202831d6d0139601a2efabe717e604cbb4894018202831d6d02247f7a7b6594320649aa03aba1018202831d6c8c3f38e95a6b1ff2ab1c3b343619018202831d6d02384773bdf1ac5676facced60901901820290921d6cb9a025d814b29c212b8b1a07cd190102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a550602605f19919091017d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b6000680248ce36a70cb26b3e1982136118a157506000919050565b680755bf798b4a1bf1e582126118ca5760405163df92cc9d60e01b815260040160405180910390fd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6000826000190484118302158202611a2857600080fd5b50910281810615159190040190565b60405180610180016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b03168152602001611ac160405180606001604052806000815260200160008152602001600081525090565b815260200160008152602001600081525090565b600060208284031215611ae757600080fd5b5035919050565b6000815180845260005b81811015611b1457602081850181015186830182015201611af8565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061042c6020830184611aee565b80356001600160a01b038116811461035357600080fd5b600080600060608486031215611b7357600080fd5b83359250611b8360208501611b47565b9150611b9160408501611b47565b90509250925092565b60008060408385031215611bad57600080fd5b82359150611bbd60208401611b47565b90509250929050565b815181526020808301519082015260408083015190820152606080830151908201526080808301519082015260a0808301519082015260c0808301519082015260e08083015190820152610100808301519082015261012080830151908201526101408083015190820152610160808301519082015261018091820151918101919091526101a00190565b600060208284031215611c6357600080fd5b61042c82611b47565b81516001600160a01b031681526101c081016020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e0830151611cd460e08401826001600160a01b03169052565b50610100838101516001600160a01b03811684830152505061012083810151805184830152602081015161014085015260408101516101608501525050610140830151610180830152610160909201516101a09091015290565b60008060208385031215611d4157600080fd5b823567ffffffffffffffff80821115611d5957600080fd5b818501915085601f830112611d6d57600080fd5b813581811115611d7c57600080fd5b8660208260051b8501011115611d9157600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b81811015611ddb57835183529284019291840191600101611dbf565b50909695505050505050565b81516001600160801b0316815261014081016020830151611e1360208401826001600160801b03169052565b506040830151611e286040840182600f0b9052565b506060830151611e4360608401826001600160801b03169052565b506080830151611e5e60808401826001600160801b03169052565b5060a0830151611e7960a08401826001600160801b03169052565b5060c0830151611e9460c08401826001600160801b03169052565b5060e0830151611eaf60e08401826001600160801b03169052565b506101008381015115159083015261012080840151801515828501525b505092915050565b60008060408385031215611ee757600080fd5b611ef083611b47565b9150611bbd60208401611b47565b600060208083526000845481600182811c915080831680611f2057607f831692505b8583108103611f3d57634e487b7160e01b85526022600452602485fd5b878601838152602001818015611f5a5760018114611f7057611f9b565b60ff198616825284151560051b82019650611f9b565b60008b81526020902060005b86811015611f9557815484820152908501908901611f7c565b83019750505b50949998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561046657610466611faa565b8181038181111561046657610466611faa565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60008261202157612021611ffc565b500490565b634e487b7160e01b600052604160045260246000fd5b81546001600160801b038082168352608091821c60208401526001840154600f81900b6040850152821c6060840152600284015480821683850152821c60a0840152600384015490811660c0840152901c60e0820152600482015460ff8082161515610100840152600882901c161515610120830152610140820190610b93565b6000602082840312156120cf57600080fd5b5051919050565b8181036000831280158383131683831282161715610b9357610b93611faa565b6000600160ff1b820161210b5761210b611faa565b5060000390565b8082018281126000831280158216821582161715611ecc57611ecc611faa565b808202811582820484141761046657610466611faa565b60008261215857612158611ffc565b500690565b60008261216c5761216c611ffc565b600160ff1b82146000198414161561218657612186611faa565b50059056fea26469706673582212203dd3a41b6e8e98243ae13770c29f488bc3b96cd1e3d87bf93f08b21cf697e3ce64736f6c63430008130033a264697066735822122067304e6ff12c5ed9ba773930b6d776cfbd0750c49c74278ed86512186272ab4964736f6c63430008130033", - "sourceMap": "861:3637:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6224:396:11;;;;;;;;;;-1:-1:-1;6224:396:11;;;;;:::i;:::-;;:::i;:::-;;2387:45;;;;;;;;;;-1:-1:-1;2387:45:11;;;;-1:-1:-1;;;;;2387:45:11;;;;;;-1:-1:-1;;;;;794:32:162;;;776:51;;764:2;749:18;2387:45:11;;;;;;;;2418:148:10;;;;;;;;;;-1:-1:-1;2418:148:10;;;;;:::i;:::-;;:::i;7876:195:11:-;;;;;;;;;;-1:-1:-1;7876:195:11;;;;;:::i;:::-;;:::i;1982:25::-;;;;;;;;;;-1:-1:-1;1982:25:11;;;;-1:-1:-1;;;;;1982:25:11;;;8568:328;;;;;;;;;;-1:-1:-1;8568:328:11;;;;;:::i;:::-;;:::i;2259:62::-;;;;;;;;;;-1:-1:-1;2259:62:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2625:25:162;;;2613:2;2598:18;2259:62:11;2479:177:162;13269:109:11;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7420:236::-;;;;;;;;;;-1:-1:-1;7420:236:11;;;;;:::i;:::-;;:::i;2795:751:10:-;;;;;;:::i;:::-;;:::i;4391:105::-;;;;;;;;;;;;;:::i;2631:28:11:-;;;;;;;;;;-1:-1:-1;2631:28:11;;;;-1:-1:-1;;;;;2631:28:11;;;2850;;;;;;;;;;-1:-1:-1;2850:28:11;;;;;;;;;;;;;;;;7147:25:162;;;7203:2;7188:18;;7181:34;;;;7231:18;;;7224:34;7135:2;7120:18;2850:28:11;6945:319:162;9032:203:11;;;;;;;;;;-1:-1:-1;9032:203:11;;;;;:::i;:::-;;:::i;6748:157::-;;;;;;;;;;-1:-1:-1;6748:157:11;;;;;:::i;:::-;;:::i;2957:27::-;;;;;;;;;;-1:-1:-1;2957:27:11;;;;-1:-1:-1;;;;;2957:27:11;;;2741:29;;;;;;;;;;;;;;;;8208:169;;;;;;;;;;-1:-1:-1;8208:169:11;;;;;:::i;:::-;;:::i;7065:231::-;;;;;;;;;;-1:-1:-1;7065:231:11;;;;;:::i;:::-;;:::i;2091:33::-;;;;;;;;;;;;;;;;2516:35;;;;;;;;;;-1:-1:-1;2516:35:11;;;;-1:-1:-1;;;;;2516:35:11;;;6224:396;6032:10;;-1:-1:-1;;;;;6032:10:11;6018;:24;6014:63;;6051:26;;-1:-1:-1;;;6051:26:11;;;;;;;;;;;6014:63;-1:-1:-1;;;;;6375:34:11;::::1;6367:43;;;::::0;::::1;;6420:18;:32:::0;;-1:-1:-1;;;;;;6420:32:11::1;-1:-1:-1::0;;;;;6420:32:11;::::1;::::0;;::::1;::::0;;;-1:-1:-1;6528:16:11;;;::::1;::::0;;6570:43:::1;::::0;::::1;::::0;-1:-1:-1;;6570:43:11::1;6224:396:::0;:::o;2418:148:10:-;6032:10:11;;-1:-1:-1;;;;;6032:10:11;6018;:24;6014:63;;6051:26;;-1:-1:-1;;;6051:26:11;;;;;;;;;;;6014:63;2529:30:10::1;:13;2545:14:::0;;2529:30:::1;:::i;:::-;;2418:148:::0;;:::o;7876:195:11:-;6032:10;;-1:-1:-1;;;;;6032:10:11;6018;:24;6014:63;;6051:26;;-1:-1:-1;;;6051:26:11;;;;;;;;;;;6014:63;7979:14:::1;:32:::0;;;8026:38:::1;::::0;7996:15;;8026:38:::1;::::0;;;::::1;7876:195:::0;:::o;8568:328::-;6032:10;;-1:-1:-1;;;;;6032:10:11;6018;:24;6014:63;;6051:26;;-1:-1:-1;;;6051:26:11;;;;;;;;;;;6014:63;8700:11:::1;8686::::0;::::1;:25;::::0;:64:::1;;;8740:10;8727:5;:10;;;:23;8686:64;:115;;;;8785:16;8766:5;:16;;;:35;8686:115;8669:199;;;8833:24;;-1:-1:-1::0;;;8833:24:11::1;;;;;;;;;;;8669:199;7595:19:162::0;;8877:4:11::1;7582:33:162::0;7669:2;7658:14;;7645:28;7631:12;7624:50;7728:2;7717:14;7704:28;7690:12;7683:50;2418:148:10:o;13269:109:11:-;13321:16;13356:15;13349:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13349:22:11;;;;;;;;;;;;;;;;;;;;;;;13269:109;:::o;7420:236::-;6032:10;;-1:-1:-1;;;;;6032:10:11;6018;:24;6014:63;;6051:26;;-1:-1:-1;;;6051:26:11;;;;;;;;;;;6014:63;-1:-1:-1;;;;;7529:28:11;::::1;7521:37;;;::::0;::::1;;7568:13;:30:::0;;-1:-1:-1;;;;;;7568:30:11::1;-1:-1:-1::0;;;;;7568:30:11;::::1;::::0;;::::1;::::0;;;7613:36:::1;::::0;::::1;::::0;-1:-1:-1;;7613:36:11::1;7420:236:::0;:::o;2795:751:10:-;2989:11;3143:30;3176:13;3143:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3143:46:10;;;;;;;;;;;;;;;;;;;;;;;3199:26;3287:13;3274:26;;3319:22;3344:124;3383:7;3404:9;3427:13;3454:4;3344:25;:124::i;:::-;3319:149;2795:751;-1:-1:-1;;;;;;;;2795:751:10:o;4391:105::-;4441:16;4476:13;4469:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4469:20:10;;;;;;;;;;;;;;;;;;;;;;4391:105;:::o;9032:203:11:-;6032:10;;-1:-1:-1;;;;;6032:10:11;6018;:24;6014:63;;6051:26;;-1:-1:-1;;;6051:26:11;;;;;;;;;;;6014:63;9194:34:::1;:15;9212:16:::0;;9194:34:::1;:::i;6748:157::-:0;6032:10;;-1:-1:-1;;;;;6032:10:11;6018;:24;6014:63;;6051:26;;-1:-1:-1;;;6051:26:11;;;;;;;;;;;6014:63;6829:10:::1;:24:::0;;-1:-1:-1;;;;;;6829:24:11::1;-1:-1:-1::0;;;;;6829:24:11;::::1;::::0;;::::1;::::0;;6868:30:::1;::::0;6829:24;;6868:30:::1;::::0;::::1;6748:157:::0;:::o;8208:169::-;6032:10;;-1:-1:-1;;;;;6032:10:11;6018;:24;6014:63;;6051:26;;-1:-1:-1;;;6051:26:11;;;;;;;;;;;6014:63;8293:12:::1;:28:::0;;-1:-1:-1;;;;;;8293:28:11::1;-1:-1:-1::0;;;;;8293:28:11;::::1;::::0;;::::1;::::0;;;8336:34:::1;::::0;::::1;::::0;-1:-1:-1;;8336:34:11::1;8208:169:::0;:::o;7065:231::-;6032:10;;-1:-1:-1;;;;;6032:10:11;6018;:24;6014:63;;6051:26;;-1:-1:-1;;;6051:26:11;;;;;;;;;;;6014:63;7180:20:::1;:44:::0;;-1:-1:-1;;;;;;7180:44:11::1;-1:-1:-1::0;;;;;7180:44:11;::::1;::::0;;::::1;::::0;;;7239:50:::1;::::0;::::1;::::0;-1:-1:-1;;7239:50:11::1;7065:231:::0;:::o;9787:2493::-;9991:11;10018:9;:13;10014:89;;10054:38;;-1:-1:-1;;;10054:38:11;;;;;;;;;;;10014:89;10563:12;;-1:-1:-1;;;;;10563:12:11;;;;10540:20;;:35;10614:4;10585:18;;;:34;10629:19;;;;;;;;10644:4;10629:19;;;;;-1:-1:-1;10629:19:11;;;;;;;;;;;;:12;;;:19;10684:14;;10733:13;;10684:14;;10733:13;10563:12;10779:130;10540:7;10832:10;10684:14;10733:13;10779:18;:130::i;:::-;10969:18;;:187;;-1:-1:-1;;;10969:187:11;;10756:153;;-1:-1:-1;10919:22:11;;-1:-1:-1;;;;;10969:18:11;;;;:25;;:187;;11012:7;;10756:153;;11067:15;;11100:14;;11132:10;;10969:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11210:14;;-1:-1:-1;;;;;11176:31:11;;;;;;;:10;:31;;;;;;;:48;;;11255:20;;;;;11234:18;;;:41;11290:181;10919:247;;-1:-1:-1;11210:14:11;11290:181;;;;10919:247;;11234:7;;11394:14;;11422:15;;11451:10;;11290:181;:::i;:::-;;;;;;;;11529:17;;:118;;-1:-1:-1;;;11529:118:11;;11573:10;11529:118;;;11338:34:162;11605:4:11;11388:18:162;;;11381:43;11440:18;;;11433:34;;;-1:-1:-1;;;;;11529:30:11;;;;;;11273:18:162;;11529:118:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11675:17:11;;:65;;-1:-1:-1;;;11675:65:11;;-1:-1:-1;;;;;11952:32:162;;;11675:65:11;;;11934:51:162;-1:-1:-1;;12001:18:162;;;11994:34;11675:25:11;;;;;;11907:18:162;;11675:65:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11657:154;;11772:28;;-1:-1:-1;;;11772:28:11;;;;;;;;;;;11657:154;11820:60;;-1:-1:-1;;;11820:60:11;;;;;12264:25:162;;;12305:18;;;12298:34;;;11863:10:11;12348:18:162;;;12341:60;11875:4:11;12417:18:162;;;12410:50;-1:-1:-1;;;;;11820:21:11;;;;;12236:19:162;;11820:60:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12015:9;12010:180;12034:15;:22;12030:26;;12010:180;;;12074:10;-1:-1:-1;;;;;12074:20:11;;12095:15;12111:1;12095:18;;;;;;;;:::i;:::-;;;;;;;;;;;12074:46;;;;;;-1:-1:-1;;;;;;12074:46:11;;;-1:-1:-1;;;;;12095:18:11;;;12074:46;;;12960:51:162;12095:18:11;13027::162;;;13020:50;12933:18;;12074:46:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12162:3;;;;;12010:180;;;-1:-1:-1;12224:20:11;;;12199:46;;-1:-1:-1;;;12199:46:11;;-1:-1:-1;;;;;12224:20:11;;;12199:46;;;776:51:162;;;;12199:24:11;;;;;749:18:162;;12199:46:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12263:10:11;;9787:2493;-1:-1:-1;;;;;;;;;;;9787:2493:11:o;3846:464:10:-;4045:7;4155;4184:15;4221:14;4257:4;4110:169;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4064:239:10;3846:464;-1:-1:-1;;;;;3846:464:10:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;14:152:162;-1:-1:-1;;;;;110:31:162;;100:42;;90:70;;156:1;153;146:12;90:70;14:152;:::o;171:296::-;258:6;311:2;299:9;290:7;286:23;282:32;279:52;;;327:1;324;317:12;279:52;366:9;353:23;385:52;431:5;385:52;:::i;:::-;456:5;171:296;-1:-1:-1;;;171:296:162:o;838:615::-;924:6;932;985:2;973:9;964:7;960:23;956:32;953:52;;;1001:1;998;991:12;953:52;1041:9;1028:23;1070:18;1111:2;1103:6;1100:14;1097:34;;;1127:1;1124;1117:12;1097:34;1165:6;1154:9;1150:22;1140:32;;1210:7;1203:4;1199:2;1195:13;1191:27;1181:55;;1232:1;1229;1222:12;1181:55;1272:2;1259:16;1298:2;1290:6;1287:14;1284:34;;;1314:1;1311;1304:12;1284:34;1367:7;1362:2;1352:6;1349:1;1345:14;1341:2;1337:23;1333:32;1330:45;1327:65;;;1388:1;1385;1378:12;1327:65;1419:2;1411:11;;;;;1441:6;;-1:-1:-1;838:615:162;;-1:-1:-1;;;;838:615:162:o;1458:180::-;1517:6;1570:2;1558:9;1549:7;1545:23;1541:32;1538:52;;;1586:1;1583;1576:12;1538:52;-1:-1:-1;1609:23:162;;1458:180;-1:-1:-1;1458:180:162:o;1851:190::-;1934:6;1987:2;1975:9;1966:7;1962:23;1958:32;1955:52;;;2003:1;2000;1993:12;1955:52;-1:-1:-1;2026:9:162;1851:190;-1:-1:-1;1851:190:162:o;2046:155::-;2114:20;;2143:52;2114:20;2143:52;:::i;:::-;2046:155;;;:::o;2661:658::-;2832:2;2884:21;;;2954:13;;2857:18;;;2976:22;;;2803:4;;2832:2;3055:15;;;;3029:2;3014:18;;;2803:4;3098:195;3112:6;3109:1;3106:13;3098:195;;;3177:13;;-1:-1:-1;;;;;3173:39:162;3161:52;;3268:15;;;;3233:12;;;;3209:1;3127:9;3098:195;;;-1:-1:-1;3310:3:162;;2661:658;-1:-1:-1;;;;;;2661:658:162:o;3324:127::-;3385:10;3380:3;3376:20;3373:1;3366:31;3416:4;3413:1;3406:15;3440:4;3437:1;3430:15;3456:250;3523:2;3517:9;3565:6;3553:19;;3602:18;3587:34;;3623:22;;;3584:62;3581:88;;;3649:18;;:::i;:::-;3685:2;3678:22;3456:250;:::o;3711:535::-;3762:5;3810:4;3798:9;3793:3;3789:19;3785:30;3782:50;;;3828:1;3825;3818:12;3782:50;3861:2;3855:9;3903:4;3895:6;3891:17;3974:6;3962:10;3959:22;3938:18;3926:10;3923:34;3920:62;3917:88;;;3985:18;;:::i;:::-;4025:10;4021:2;4014:22;;4054:6;4045:15;;4097:9;4084:23;4076:6;4069:39;4169:2;4158:9;4154:18;4141:32;4136:2;4128:6;4124:15;4117:57;4235:2;4224:9;4220:18;4207:32;4202:2;4194:6;4190:15;4183:57;;3711:535;;;;:::o;4251:902::-;4305:5;4358:3;4351:4;4343:6;4339:17;4335:27;4325:55;;4376:1;4373;4366:12;4325:55;4412:6;4399:20;4438:4;4461:18;4498:2;4494;4491:10;4488:36;;;4504:18;;:::i;:::-;4550:2;4547:1;4543:10;4582:2;4576:9;4645:2;4641:7;4636:2;4632;4628:11;4624:25;4616:6;4612:38;4700:6;4688:10;4685:22;4680:2;4668:10;4665:18;4662:46;4659:72;;;4711:18;;:::i;:::-;4747:2;4740:22;4797:18;;;4873:15;;;4869:24;;;4831:15;;;;-1:-1:-1;4905:15:162;;;4902:35;;;4933:1;4930;4923:12;4902:35;4969:2;4961:6;4957:15;4946:26;;4981:142;4997:6;4992:3;4989:15;4981:142;;;5063:17;;5051:30;;5101:12;;;;5014;;;;4981:142;;;5141:6;4251:902;-1:-1:-1;;;;;;;4251:902:162:o;5158:1554::-;5297:6;5305;5313;5321;5365:9;5356:7;5352:23;5395:3;5391:2;5387:12;5384:32;;;5412:1;5409;5402:12;5384:32;5435:6;5461:2;5457;5453:11;5450:31;;;5477:1;5474;5467:12;5450:31;5503:17;;:::i;:::-;5490:30;;5543:29;5562:9;5543:29;:::i;:::-;5536:5;5529:44;5633:2;5622:9;5618:18;5605:32;5600:2;5593:5;5589:14;5582:56;5698:2;5687:9;5683:18;5670:32;5665:2;5658:5;5654:14;5647:56;5763:2;5752:9;5748:18;5735:32;5730:2;5723:5;5719:14;5712:56;5829:3;5818:9;5814:19;5801:33;5795:3;5788:5;5784:15;5777:58;5896:3;5885:9;5881:19;5868:33;5862:3;5855:5;5851:15;5844:58;5963:3;5952:9;5948:19;5935:33;5929:3;5922:5;5918:15;5911:58;6002:39;6036:3;6025:9;6021:19;6002:39;:::i;:::-;5996:3;5989:5;5985:15;5978:64;6061:3;6096:38;6130:2;6119:9;6115:18;6096:38;:::i;:::-;6080:14;;;6073:62;6154:3;6189:51;6232:7;6212:18;;;6189:51;:::i;:::-;6173:14;;;6166:75;6305:6;6290:22;;6277:36;6268:6;6257:18;;6250:64;6378:3;6363:19;;6350:33;6341:6;6330:18;;6323:61;6177:5;;-1:-1:-1;6444:18:162;;6431:32;6486:18;6475:30;;6472:50;;;6518:1;6515;6508:12;6472:50;6541:61;6594:7;6585:6;6574:9;6570:22;6541:61;:::i;:::-;5158:1554;;6531:71;;-1:-1:-1;;;;6649:3:162;6634:19;;6621:33;;6701:3;6686:19;6673:33;;5158:1554;-1:-1:-1;5158:1554:162:o;7950:1007::-;8054:12;;-1:-1:-1;;;;;559:31:162;547:44;;8121:4;8114:5;8110:16;8104:23;8097:4;8092:3;8088:14;8081:47;8177:4;8170:5;8166:16;8160:23;8153:4;8148:3;8144:14;8137:47;8233:4;8226:5;8222:16;8216:23;8209:4;8204:3;8200:14;8193:47;8289:4;8282:5;8278:16;8272:23;8265:4;8260:3;8256:14;8249:47;8345:4;8338:5;8334:16;8328:23;8321:4;8316:3;8312:14;8305:47;8401:4;8394:5;8390:16;8384:23;8377:4;8372:3;8368:14;8361:47;8454:4;8447:5;8443:16;8437:23;8469:69;8532:4;8527:3;8523:14;8509:12;-1:-1:-1;;;;;559:31:162;547:44;;472:125;8469:69;-1:-1:-1;8557:6:162;8600:14;;;8594:21;-1:-1:-1;;;;;559:31:162;;8680:12;;;547:44;-1:-1:-1;;8712:6:162;8755:14;;;8749:21;7814:12;;8818;;;7802:25;7876:4;7865:16;;7859:23;7843:14;;;7836:47;7932:4;7921:16;;7915:23;7899:14;;;7892:47;-1:-1:-1;;8882:6:162;8871:18;;8865:25;8856:6;8847:16;;8840:51;8942:6;8931:18;8925:25;8916:6;8907:16;;;8900:51;7950:1007::o;8962:435::-;9015:3;9053:5;9047:12;9080:6;9075:3;9068:19;9106:4;9135:2;9130:3;9126:12;9119:19;;9172:2;9165:5;9161:14;9193:1;9203:169;9217:6;9214:1;9211:13;9203:169;;;9278:13;;9266:26;;9312:12;;;;9347:15;;;;9239:1;9232:9;9203:169;;;-1:-1:-1;9388:3:162;;8962:435;-1:-1:-1;;;;;8962:435:162:o;9402:705::-;9712:4;9741:3;9753:47;9790:9;9782:6;9753:47;:::i;:::-;-1:-1:-1;;;;;9875:15:162;;;9869:3;9854:19;;9847:44;9922:3;9907:19;;9900:35;;;9972:15;;9966:3;9951:19;;9944:44;10019:3;10004:19;;9997:31;;;10045:56;10082:18;;;10074:6;10045:56;:::i;10112:272::-;10182:6;10235:2;10223:9;10214:7;10210:23;10206:32;10203:52;;;10251:1;10248;10241:12;10203:52;10283:9;10277:16;10302:52;10348:5;10302:52;:::i;10389:704::-;-1:-1:-1;;;;;10796:15:162;;;10778:34;;10699:4;;10728:3;;10821:56;10873:2;10858:18;;10850:6;10821:56;:::i;:::-;10926:2;10918:6;10914:15;10908:3;10897:9;10893:19;10886:44;;10967:6;10961:3;10950:9;10946:19;10939:35;11011:2;11005:3;10994:9;10990:19;10983:31;11031:56;11083:2;11072:9;11068:18;11060:6;11031:56;:::i;11478:277::-;11545:6;11598:2;11586:9;11577:7;11573:23;11569:32;11566:52;;;11614:1;11611;11604:12;11566:52;11646:9;11640:16;11699:5;11692:13;11685:21;11678:5;11675:32;11665:60;;11721:1;11718;11711:12;12471:184;12541:6;12594:2;12582:9;12573:7;12569:23;12565:32;12562:52;;;12610:1;12607;12600:12;12562:52;-1:-1:-1;12633:16:162;;12471:184;-1:-1:-1;12471:184:162:o;12660:127::-;12721:10;12716:3;12712:20;12709:1;12702:31;12752:4;12749:1;12742:15;12776:4;12773:1;12766:15;13081:545;13372:3;13357:19;;13385:47;13361:9;13414:6;13385:47;:::i;:::-;13463:3;13448:19;;13441:35;;;;-1:-1:-1;;;;;13551:15:162;;;13545:3;13530:19;;13523:44;13604:15;;13598:3;13583:19;;;13576:44;13081:545;;-1:-1:-1;13081:545:162:o", + "object": "0x608060405260043610620001435760003560e01c806394ad46d911620000b9578063c415b95c1162000078578063c415b95c14620003a3578063c905a4b514620003c5578063d2c35ce814620003dd578063dd2b8fbb1462000402578063dd6d30c11462000427578063e3331555146200043f57600080fd5b806394ad46d914620002e257806399623bb114620002fa5780639af1d35a146200031c5780639af252621462000359578063b2561263146200037e57600080fd5b80637613b08c11620001065780637613b08c146200021a57806377b81aac146200023f5780637f7c5a7d146200027f5780638522978514620002a65780638927f4e914620002cb57600080fd5b8063025b22bc146200014857806303a5aa92146200016f57806309b9075f14620001ae5780634fbfee7714620001d35780635aa6e67514620001f8575b600080fd5b3480156200015557600080fd5b506200016d6200016736600462000f11565b62000461565b005b3480156200017c57600080fd5b5060035462000191906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015620001bb57600080fd5b506200016d620001cd36600462000f38565b620004f2565b348015620001e057600080fd5b506200016d620001f236600462000fb2565b62000530565b3480156200020557600080fd5b5060005462000191906001600160a01b031681565b3480156200022757600080fd5b506200016d6200023936600462000fcc565b6200058e565b3480156200024c57600080fd5b50620002706200025e36600462000f11565b60026020526000908152604090205481565b604051908152602001620001a5565b3480156200028c57600080fd5b506200029762000670565b604051620001a5919062000ff7565b348015620002b357600080fd5b506200016d620002c536600462000f11565b620006d4565b62000191620002dc3660046200118e565b6200075d565b348015620002ef57600080fd5b5062000297620007e0565b3480156200030757600080fd5b5060055462000191906001600160a01b031681565b3480156200032957600080fd5b506007546008546009546200033d92919083565b60408051938452602084019290925290820152606001620001a5565b3480156200036657600080fd5b506200016d6200037836600462000f38565b62000842565b3480156200038b57600080fd5b506200016d6200039d36600462000f11565b6200087b565b348015620003b057600080fd5b50600a5462000191906001600160a01b031681565b348015620003d257600080fd5b506200027060065481565b348015620003ea57600080fd5b506200016d620003fc36600462000f11565b620008ee565b3480156200040f57600080fd5b506200016d6200042136600462000f11565b62000963565b3480156200043457600080fd5b506200027060015481565b3480156200044c57600080fd5b5060045462000191906001600160a01b031681565b6000546001600160a01b031633146200048c576040516282b42960e81b815260040160405180910390fd5b6001600160a01b038116620004a057600080fd5b600380546001600160a01b0319166001600160a01b03831690811790915560018054810190556040517f310ba5f1d2ed074b51e2eccd052a47ae9ab7c6b800d1fca3db3999d6a592ca0390600090a250565b6000546001600160a01b031633146200051d576040516282b42960e81b815260040160405180910390fd5b6200052b600c838362000e6b565b505050565b6000546001600160a01b031633146200055b576040516282b42960e81b815260040160405180910390fd5b600681905560405181907f395a61259037298d1c4cd4bf177b64ad5995d38a9394573fcd9060d649314ad090600090a250565b6000546001600160a01b03163314620005b9576040516282b42960e81b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000813511806200060c57507f00000000000000000000000000000000000000000000000000000000000000008160200135115b806200063b57507f00000000000000000000000000000000000000000000000000000000000000008160400135115b156200065a5760405163cd4e616760e01b815260040160405180910390fd5b8035600755602081013560085560400135600955565b6060600b805480602002602001604051908101604052809291908181526020018280548015620006ca57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620006ab575b5050505050905090565b6000546001600160a01b03163314620006ff576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0381166200071357600080fd5b600580546001600160a01b0319166001600160a01b0383169081179091556040517f03aa5b0fb65014eea89fda04a7bc11742014881f3c078f2c75b7226ce10d941890600090a250565b600080600c805480602002602001604051908101604052809291908181526020018280548015620007b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000799575b5050505050905060608190506000620007d488838888620009d8565b98975050505050505050565b6060600c805480602002602001604051908101604052809291908181526020018280548015620006ca576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620006ab575050505050905090565b6000546001600160a01b031633146200086d576040516282b42960e81b815260040160405180910390fd5b6200052b600b838362000e6b565b6000546001600160a01b03163314620008a6576040516282b42960e81b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b038316908117825560405190917f9d3e522e1e47a2f6009739342b9cc7b252a1888154e843ab55ee1c81745795ab91a250565b6000546001600160a01b0316331462000919576040516282b42960e81b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0383169081179091556040517fe5693914d19c789bdee50a362998c0bc8d035a835f9871da5d51152f0582c34f90600090a250565b6000546001600160a01b031633146200098e576040516282b42960e81b815260040160405180910390fd5b600480546001600160a01b0319166001600160a01b0383169081179091556040517ff3e07b4bb4394f2ff320bd1dd151551dff304d5e948b401d8558b228482c97d890600090a250565b60003415620009fa57604051638fbc3bd960e01b815260040160405180910390fd5b600a546001600160a01b039081166101008701523060e0870152604080516060810182526007548152600854602082015260095491810191909152610120870152600654600554909116600062000a548888858562000e01565b60035460405163e3420f4f60e01b81529192506000916001600160a01b039091169063e3420f4f9062000a94908c908690899089908f906004016200139c565b6020604051808303816000875af115801562000ab4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ada9190620013e4565b6001546001600160a01b038083166000908152600260205260409081902083905560045490911660e08d015251919250907fc6f4867fb04085fae8d5bc8a6eb6bd83992441fe62b92acc3710f0cedf0e753a9062000b429084908d9088908a908f9062001404565b60405180910390a288516040516323b872dd60e01b8152336004820152306024820152604481018990526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801562000ba1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bc791906200144d565b50885160405163095ea7b360e01b81526001600160a01b03838116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af115801562000c1c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c4291906200144d565b62000c60576040516340b27c2160e11b815260040160405180910390fd5b604051632002b33360e01b81526004810188905260248101879052336044820152600160648201526001600160a01b03821690632002b333906084016020604051808303816000875af115801562000cbc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ce2919062001471565b5060005b600b5481101562000d9057816001600160a01b0316637180c8ca600b838154811062000d165762000d166200148b565b60009182526020909120015460405160e083901b6001600160e01b03191681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b15801562000d6b57600080fd5b505af115801562000d80573d6000803e3d6000fd5b5050505080600101905062000ce6565b506004805460405163ab033ea960e01b81526001600160a01b039182169281019290925282169063ab033ea990602401600060405180830381600087803b15801562000ddb57600080fd5b505af115801562000df0573d6000803e3d6000fd5b50929b9a5050505050505050505050565b60008483837f000000000000000000000000000000000000000000000000000000000000000060405162000e359062000ed3565b62000e449493929190620014a1565b604051809103906000f08015801562000e61573d6000803e3d6000fd5b5095945050505050565b82805482825590600052602060002090810192821562000ec1579160200282015b8281111562000ec15781546001600160a01b0319166001600160a01b0384351617825560209092019160019091019062000e8c565b5062000ecf92915062000ee1565b5090565b61268a80620014db83390190565b5b8082111562000ecf576000815560010162000ee2565b6001600160a01b038116811462000f0e57600080fd5b50565b60006020828403121562000f2457600080fd5b813562000f318162000ef8565b9392505050565b6000806020838503121562000f4c57600080fd5b823567ffffffffffffffff8082111562000f6557600080fd5b818501915085601f83011262000f7a57600080fd5b81358181111562000f8a57600080fd5b8660208260051b850101111562000fa057600080fd5b60209290920196919550909350505050565b60006020828403121562000fc557600080fd5b5035919050565b60006060828403121562000fdf57600080fd5b50919050565b803562000ff28162000ef8565b919050565b6020808252825182820181905260009190848201906040850190845b818110156200103a5783516001600160a01b03168352928401929184019160010162001013565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051610180810167ffffffffffffffff8111828210171562001083576200108362001046565b60405290565b6000606082840312156200109c57600080fd5b6040516060810181811067ffffffffffffffff82111715620010c257620010c262001046565b80604052508091508235815260208301356020820152604083013560408201525092915050565b600082601f830112620010fb57600080fd5b8135602067ffffffffffffffff808311156200111b576200111b62001046565b8260051b604051601f19603f8301168101818110848211171562001143576200114362001046565b6040529384528581018301938381019250878511156200116257600080fd5b83870191505b84821015620011835781358352918301919083019062001168565b979650505050505050565b600080600080848603610220811215620011a757600080fd5b6101c080821215620011b857600080fd5b620011c26200105c565b9150620011cf8762000fe5565b82526020870135602083015260408701356040830152606087013560608301526080870135608083015260a087013560a083015260c087013560c08301526200121b60e0880162000fe5565b60e08301526101006200123081890162000fe5565b90830152610120620012458989830162001089565b908301526101808701356101408301526101a087013561016083015290945085013567ffffffffffffffff8111156200127d57600080fd5b6200128b87828801620010e9565b94979496505050506101e0830135926102000135919050565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e08101516200130860e08401826001600160a01b03169052565b50610100818101516001600160a01b0381168483015250506101208181015180518483015260208101516101408501526040810151610160850152505061014081015161018083015261016001516101a090910152565b600081518084526020808501945080840160005b83811015620013915781518752958201959082019060010162001373565b509495945050505050565b6000610240620013ad8389620012a4565b6001600160a01b038781166101c08501526101e0840187905285166102008401526102208301819052620007d4818401856200135f565b600060208284031215620013f757600080fd5b815162000f318162000ef8565b6001600160a01b03868116825260009061024090620014276020850189620012a4565b8087166101e0850152508461020084015280610220840152620007d4818401856200135f565b6000602082840312156200146057600080fd5b8151801515811462000f3157600080fd5b6000602082840312156200148457600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6102208101620014b28287620012a4565b6101c08201949094526001600160a01b039283166101e082015291166102009091015291905056fe61026060405260016000553480156200001757600080fd5b506040516200268a3803806200268a8339810160408190526200003a91620002bc565b6001600160a01b0380831660805260a084905284511660c052604084015184908490849083906103e8111562000083576040516349db44f560e01b815260040160405180910390fd5b60408101516101605260608101516101805260a0810151600003620000bb57604051635428734d60e01b815260040160405180910390fd5b60a08101805160e0525160808201511080620000eb57508060a001518160800151620000e89190620003c2565b15155b156200010a5760405163253fffcf60e11b815260040160405180910390fd5b608081015161010090815260c082015161012090815260208301516101405260e0830151601180546001600160a01b0319166001600160a01b03928316179055918301519091166102005281015151670de0b6b3a764000010806200017f5750670de0b6b3a764000081610120015160200151115b806200019b5750670de0b6b3a764000081610120015160400151115b15620001ba576040516322f72cc360e11b815260040160405180910390fd5b61012081018051516101a0528051602001516101c05251604001516101e0526101600151610220525050506001600160a01b03166102405250620003e5915050565b60405161018081016001600160401b03811182821017156200022e57634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b03811681146200024c57600080fd5b919050565b6000606082840312156200026457600080fd5b604051606081016001600160401b03811182821017156200029557634e487b7160e01b600052604160045260246000fd5b80604052508091508251815260208301516020820152604083015160408201525092915050565b600080600080848603610220811215620002d557600080fd5b6101c080821215620002e657600080fd5b620002f0620001fc565b9150620002fd8762000234565b82526020870151602083015260408701516040830152606087015160608301526080870151608083015260a087015160a083015260c087015160c08301526200034960e0880162000234565b60e08301526101006200035e81890162000234565b90830152610120620003738989830162000251565b908301526101808701516101408301526101a08701516101608301528601519094509250620003a66101e0860162000234565b9150620003b7610200860162000234565b905092959194509250565b600082620003e057634e487b7160e01b600052601260045260246000fd5b500690565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e0516102005161022051610240516121c1620004c9600039600081816103660152610def01526000610a87015260006109d701526000610a5001526000610a2b01526000610a080152600061093101526000818161090c0152610f2a0152600081816108e20152610f040152600081816109a70152610f5001526000818161095b01526112b401526000818161098101526115090152600081816108bd0152610be801526000610c3b01526000610ba801526121c16000f3fe608060405234801561001057600080fd5b506004361061012b5760003560e01c8063bd85b039116100ad578063c905a4b511610071578063c905a4b514610295578063cc962f8e1461029d578063d8165743146102c0578063e985e9c5146102d5578063fba56008146102e857600080fd5b8063bd85b0391461024a578063becee9c31461025d578063c45a01551461027d578063c55dae6314610285578063c69e16ad1461028d57600080fd5b80634e41a1fb116100f45780634e41a1fb146101e757806360246c88146101fa5780637ecebe001461020f578063afdac68d14610222578063b0d965801461023557600080fd5b8062ad800c1461013057806316f0115b1461015957806320fc48811461017957806321ff32a9146101b35780633656eec2146101d4575b600080fd5b61014361013e366004611ad5565b610317565b6040516101509190611b34565b60405180910390f35b610161610358565b6040516001600160a01b039091168152602001610150565b61018c610187366004611ad5565b61039b565b6040805182516001600160801b03168152602092830151600f0b9281019290925201610150565b6101c66101c1366004611b5e565b6103ed565b604051908152602001610150565b6101c66101e2366004611b9a565b610433565b6101436101f5366004611ad5565b61046c565b610202610494565b6040516101509190611bc6565b6101c661021d366004611c51565b61068e565b6101c6610230366004611ad5565b6106ba565b61023d6108a0565b6040516101509190611c6c565b6101c6610258366004611ad5565b610abd565b61027061026b366004611d2e565b610adf565b6040516101509190611da3565b610161610b9a565b610161610bda565b6101c6610c1a565b6101c6610c34565b6102b06102ab366004611c51565b610c6c565b6040519015158152602001610150565b6102c8610ca2565b6040516101509190611de7565b6102b06102e3366004611ed4565b610d08565b6102f0610d4c565b6040805182516001600160801b039081168252602093840151169281019290925201610150565b60606103536005600084815260200190815260200160002060405160200161033f9190611efe565b604051602081830303815290604052610dab565b919050565b604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152600091610398910161033f565b90565b6040805180820190915260008082526020820152610353600e600084815260200190815260200160002060405160200161033f91546001600160801b038116825260801d600f0b602082015260400190565b60008381526004602090815260408083206001600160a01b038681168552908352818420908516845282528083205481519283015261042c910161033f565b9392505050565b60008281526001602090815260408083206001600160a01b0385168452825280832054815192830152610466910161033f565b92915050565b60606103536006600084815260200190815260200160002060405160200161033f9190611efe565b6104ff604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000610509610dcf565b600d5460026020527f3ccfbaf375b4885450e3887dab0704e32e03acfeaf0442976372f6750e322c1f5460008080527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b54939450926001600160801b03909216916105749190611fc0565b61057e9190611fd3565b905060008083116105905760006105ab565b6105ab836105a56105a086610e67565b610fcd565b9061123f565b604080516101a0810182526008546001600160801b038082168352600954600f0b6020840152600160801b918290048116938301939093526060820186905260808201879052600a5480841660a0840152600b5480851660c085015290829004841660e08401528190048316610100830152600d5480841661012084015204909116610140820152909150600090610160810184156106535761064e8486611254565b610656565b60005b8152600954600160801b90046001600160801b03166020918201526040519192506106879161033f91849101611bc6565b5050505090565b6001600160a01b038116600090815260076020908152604080832054815192830152610353910161033f565b601354601280546000926001600160801b03600160801b8204811693911691849190839081106106ec576106ec611fe6565b600091825260208083206040805180820190915292015463ffffffff8116835264010000000090046001600160e01b031690820152915061072d8685611fd3565b90506000831561074757610742600185611fd3565b610756565b60125461075690600190611fd3565b60408051808201909152600080825260208201529091505b8482146108055760006012838154811061078a5761078a611fe6565b6000918252602090912001805490915063ffffffff1684106107d85760408051808201909152905463ffffffff8116825264010000000090046001600160e01b031660208201529050610805565b82156107ee576107e9600184611fd3565b6107fd565b6012546107fd90600190611fd3565b92505061076e565b805163ffffffff1660000361082d57604051630a89817b60e41b815260040160405180910390fd5b600081602001516001600160e01b031685602001516001600160e01b03166108559190611fd3565b825186519192506000916108729163ffffffff9081169116611fd3565b90506108936108818284612012565b60405160200161033f91815260200190565b5050505050505050919050565b6108a8611a37565b60408051610180810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f00000000000000000000000000000000000000000000000000000000000000006020808401919091527f0000000000000000000000000000000000000000000000000000000000000000838501527f00000000000000000000000000000000000000000000000000000000000000006060808501919091527f000000000000000000000000000000000000000000000000000000000000000060808501527f000000000000000000000000000000000000000000000000000000000000000060a08501527f000000000000000000000000000000000000000000000000000000000000000060c0850152601154831660e08501527f0000000000000000000000000000000000000000000000000000000000000000909216610100840152835191820184527f000000000000000000000000000000000000000000000000000000000000000082527f0000000000000000000000000000000000000000000000000000000000000000828201527f0000000000000000000000000000000000000000000000000000000000000000828501526101208301919091526012546101408301527f000000000000000000000000000000000000000000000000000000000000000061016083015291516103989261033f929101611c6c565b600081815260026020908152604080832054815192830152610353910161033f565b606060008267ffffffffffffffff811115610afc57610afc612026565b604051908082528060200260200182016040528015610b25578160200160208202803683370190505b50905060005b83811015610b7e576000858583818110610b4757610b47611fe6565b90506020020135905060008154905080848481518110610b6957610b69611fe6565b60209081029190910101525050600101610b2b565b50610b938160405160200161033f9190611da3565b5092915050565b604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152600091610398910161033f565b604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152600091610398910161033f565b600061039860105460405160200161033f91815260200190565b60006103987f000000000000000000000000000000000000000000000000000000000000000060405160200161033f91815260200190565b6001600160a01b03811660009081526014602090815260408083205490516103539261033f9260ff169101901515815260200190565b6040805161014081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810191909152610398600860405160200161033f919061203c565b6001600160a01b038281166000908152600360209081526040808320938516835292815282822054835160ff9091161515918101919091529091610466910161033f565b6040805180820190915260008082526020820152604080518082018252600d546001600160801b03808216808452600160801b90920481166020938401908152845193840192909252905116918101919091526103989060600161033f565b80604051636e64089360e11b8152600401610dc69190611b34565b60405180910390fd5b6040516303d1689d60e11b8152670de0b6b3a764000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a90602401602060405180830381865afa158015610e3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6291906120bd565b905090565b610ec460405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60408051610160810182526008546001600160801b038082168352600954600f0b6020840152600160801b909104811692820192909252606081018490527f000000000000000000000000000000000000000000000000000000000000000060808201527f000000000000000000000000000000000000000000000000000000000000000060a08201527f000000000000000000000000000000000000000000000000000000000000000060c0820152600a54821660e0820152600b549091610100830191610f939116611269565b8152600a546001600160801b03600160801b9182900481166020840152600b54604090930192610fc592900416611269565b905292915050565b600080610fed83610140015184610120015161123f90919063ffffffff16565b61010084015160e08501516110019161123f565b61100b91906120d6565b90506000611021846000015185602001516112df565b905060008213156110c35760006110638286604001518760a001518860c00151670de0b6b3a76400006110549190611fd3565b89606001518a608001516112fc565b915061107190508184611385565b905080156110bd576110aa828660400151838860c00151670de0b6b3a764000061109b9190611fd3565b89606001518a6080015161139a565b855186906110b9908390611fd3565b9052505b50611181565b6000821215611181576110d5826120f6565b915060006111098286604001518760c00151670de0b6b3a76400006110fa9190611fd3565b886060015189608001516113d9565b915061111790508184611385565b9050801561116357611150828660400151838860c00151670de0b6b3a76400006111419190611fd3565b89606001518a60800151611463565b8551869061115f908390611fc0565b9052505b61116d8184611fd3565b8551869061117c908390611fc0565b905250505b60006111b0856101000151670de0b6b3a764000061119f9190611fd3565b606087015160e088015191906114e4565b6111de866101400151670de0b6b3a76400006111cc9190611fd3565b606088015161012089015191906114e4565b6111e891906120d6565b905060008186600001516111fc9190612112565b90508560a001518112156112235760405163aeeb825d60e01b815260040160405180910390fd5b80865260a08601516112359082611fd3565b9695505050505050565b600061042c8383670de0b6b3a76400006114e4565b600061042c83670de0b6b3a7640000846114e4565b600080670de0b6b3a764000061127d611502565b6112879190612132565b90508083116112975760006112a1565b6112a18184611fd3565b915061042c6112d8670de0b6b3a76400007f0000000000000000000000000000000000000000000000000000000000000000612132565b8390611254565b6000806112ec83856120d6565b9050600081121561042c57600080fd5b6000808061130a8585611254565b9050600061131b82868c8a8d611538565b9050600061135c611334670de0b6b3a76400008a611254565b61135261134b8b6113458b8f61123f565b90611566565b869061123f565b6113459085611fd3565b9050611368898c611fd3565b6113728b83611fd3565b945094505050505b965096945050505050565b6000818311611394578261042c565b50919050565b6000806113ab8888888888886115bd565b9092509050806113ce57604051637ac17d2560e01b815260040160405180910390fd5b509695505050505050565b600080806113e78585611254565b905060006113f882868b8a8c611538565b9050600061142d611411670de0b6b3a76400008a611254565b611345611426670de0b6b3a764000087611fc0565b8590611254565b9050600061143b8288611254565b90506114478b82611fd3565b611451838c611fd3565b95509550505050509550959350505050565b6000806114708484611254565b9050600061148182858b898c611538565b905061149186611345898b611fd3565b975060006114be6114aa670de0b6b3a76400008961165e565b611345856114b88d87611fd3565b90611254565b90506114ca8186611254565b90506114d68a82611fd3565b9a9950505050505050505050565b60008260001904841183021582026114fb57600080fd5b5091020490565b600061152e7f000000000000000000000000000000000000000000000000000000000000000042612149565b610e629042611fd3565b60006115448284611566565b61155c61155585611345898961123f565b889061123f565b6112359190611fc0565b60008160000361157f5750670de0b6b3a7640000610466565b8260000361158f57506000610466565b81600061159b85611673565b90508181026115b2670de0b6b3a76400008261215d565b905061123581611886565b600080806115cb8585611254565b905060006115dc82868c8a8d611538565b90506115ec876113458a8c611fc0565b9850888110156116045760008093509350505061137a565b600061162961161b670de0b6b3a76400008a61165e565b611345856114b88e87611fd3565b90506116358187611254565b9050808b111561164c57611649818c611fd3565b94505b60019350505050965096945050505050565b600061042c83670de0b6b3a764000084611a11565b600080821361169557604051636838feed60e11b815260040160405180910390fd5b5060606001600160801b03821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110600190811b90911783811c90911017609f81810383019390931b90921c6c465772b2bbbb5f824b15207a3081018102821d6d0388eaa27412d5aca026815d636e018102821d6d0df99ac502031bf953eff472fdcc018102821d6d13cdffb29d51d99322bdff5f2211018102821d6d0a0f742023def783a307a986912e018102821d6d01920d8043ca89b5239253284e42018102821d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7882018202831d6d0139601a2efabe717e604cbb4894018202831d6d02247f7a7b6594320649aa03aba1018202831d6c8c3f38e95a6b1ff2ab1c3b343619018202831d6d02384773bdf1ac5676facced60901901820290921d6cb9a025d814b29c212b8b1a07cd190102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a550602605f19919091017d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b6000680248ce36a70cb26b3e1982136118a157506000919050565b680755bf798b4a1bf1e582126118ca5760405163df92cc9d60e01b815260040160405180910390fd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6000826000190484118302158202611a2857600080fd5b50910281810615159190040190565b60405180610180016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b03168152602001611ac160405180606001604052806000815260200160008152602001600081525090565b815260200160008152602001600081525090565b600060208284031215611ae757600080fd5b5035919050565b6000815180845260005b81811015611b1457602081850181015186830182015201611af8565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061042c6020830184611aee565b80356001600160a01b038116811461035357600080fd5b600080600060608486031215611b7357600080fd5b83359250611b8360208501611b47565b9150611b9160408501611b47565b90509250925092565b60008060408385031215611bad57600080fd5b82359150611bbd60208401611b47565b90509250929050565b815181526020808301519082015260408083015190820152606080830151908201526080808301519082015260a0808301519082015260c0808301519082015260e08083015190820152610100808301519082015261012080830151908201526101408083015190820152610160808301519082015261018091820151918101919091526101a00190565b600060208284031215611c6357600080fd5b61042c82611b47565b81516001600160a01b031681526101c081016020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e0830151611cd460e08401826001600160a01b03169052565b50610100838101516001600160a01b03811684830152505061012083810151805184830152602081015161014085015260408101516101608501525050610140830151610180830152610160909201516101a09091015290565b60008060208385031215611d4157600080fd5b823567ffffffffffffffff80821115611d5957600080fd5b818501915085601f830112611d6d57600080fd5b813581811115611d7c57600080fd5b8660208260051b8501011115611d9157600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b81811015611ddb57835183529284019291840191600101611dbf565b50909695505050505050565b81516001600160801b0316815261014081016020830151611e1360208401826001600160801b03169052565b506040830151611e286040840182600f0b9052565b506060830151611e4360608401826001600160801b03169052565b506080830151611e5e60808401826001600160801b03169052565b5060a0830151611e7960a08401826001600160801b03169052565b5060c0830151611e9460c08401826001600160801b03169052565b5060e0830151611eaf60e08401826001600160801b03169052565b506101008381015115159083015261012080840151801515828501525b505092915050565b60008060408385031215611ee757600080fd5b611ef083611b47565b9150611bbd60208401611b47565b600060208083526000845481600182811c915080831680611f2057607f831692505b8583108103611f3d57634e487b7160e01b85526022600452602485fd5b878601838152602001818015611f5a5760018114611f7057611f9b565b60ff198616825284151560051b82019650611f9b565b60008b81526020902060005b86811015611f9557815484820152908501908901611f7c565b83019750505b50949998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561046657610466611faa565b8181038181111561046657610466611faa565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60008261202157612021611ffc565b500490565b634e487b7160e01b600052604160045260246000fd5b81546001600160801b038082168352608091821c60208401526001840154600f81900b6040850152821c6060840152600284015480821683850152821c60a0840152600384015490811660c0840152901c60e0820152600482015460ff8082161515610100840152600882901c161515610120830152610140820190610b93565b6000602082840312156120cf57600080fd5b5051919050565b8181036000831280158383131683831282161715610b9357610b93611faa565b6000600160ff1b820161210b5761210b611faa565b5060000390565b8082018281126000831280158216821582161715611ecc57611ecc611faa565b808202811582820484141761046657610466611faa565b60008261215857612158611ffc565b500690565b60008261216c5761216c611ffc565b600160ff1b82146000198414161561218657612186611faa565b50059056fea2646970667358221220073a59160e8b1c3ada75a5885baaa6c7da8f689efc4111e7510ef136dbf9f78364736f6c63430008130033a26469706673582212208d2ef6b515ce23cde925bc47f2012ab7ef7976332a3a0799f304da38e3333da164736f6c63430008130033", + "sourceMap": "861:3637:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6224:396:11;;;;;;;;;;-1:-1:-1;6224:396:11;;;;;:::i;:::-;;:::i;:::-;;2387:45;;;;;;;;;;-1:-1:-1;2387:45:11;;;;-1:-1:-1;;;;;2387:45:11;;;;;;-1:-1:-1;;;;;794:32:153;;;776:51;;764:2;749:18;2387:45:11;;;;;;;;2418:148:10;;;;;;;;;;-1:-1:-1;2418:148:10;;;;;:::i;:::-;;:::i;7876:195:11:-;;;;;;;;;;-1:-1:-1;7876:195:11;;;;;:::i;:::-;;:::i;1982:25::-;;;;;;;;;;-1:-1:-1;1982:25:11;;;;-1:-1:-1;;;;;1982:25:11;;;8568:328;;;;;;;;;;-1:-1:-1;8568:328:11;;;;;:::i;:::-;;:::i;2259:62::-;;;;;;;;;;-1:-1:-1;2259:62:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2625:25:153;;;2613:2;2598:18;2259:62:11;2479:177:153;13269:109:11;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7420:236::-;;;;;;;;;;-1:-1:-1;7420:236:11;;;;;:::i;:::-;;:::i;2795:751:10:-;;;;;;:::i;:::-;;:::i;4391:105::-;;;;;;;;;;;;;:::i;2631:28:11:-;;;;;;;;;;-1:-1:-1;2631:28:11;;;;-1:-1:-1;;;;;2631:28:11;;;2850;;;;;;;;;;-1:-1:-1;2850:28:11;;;;;;;;;;;;;;;;7147:25:153;;;7203:2;7188:18;;7181:34;;;;7231:18;;;7224:34;7135:2;7120:18;2850:28:11;6945:319:153;9032:203:11;;;;;;;;;;-1:-1:-1;9032:203:11;;;;;:::i;:::-;;:::i;6748:157::-;;;;;;;;;;-1:-1:-1;6748:157:11;;;;;:::i;:::-;;:::i;2957:27::-;;;;;;;;;;-1:-1:-1;2957:27:11;;;;-1:-1:-1;;;;;2957:27:11;;;2741:29;;;;;;;;;;;;;;;;8208:169;;;;;;;;;;-1:-1:-1;8208:169:11;;;;;:::i;:::-;;:::i;7065:231::-;;;;;;;;;;-1:-1:-1;7065:231:11;;;;;:::i;:::-;;:::i;2091:33::-;;;;;;;;;;;;;;;;2516:35;;;;;;;;;;-1:-1:-1;2516:35:11;;;;-1:-1:-1;;;;;2516:35:11;;;6224:396;6032:10;;-1:-1:-1;;;;;6032:10:11;6018;:24;6014:63;;6051:26;;-1:-1:-1;;;6051:26:11;;;;;;;;;;;6014:63;-1:-1:-1;;;;;6375:34:11;::::1;6367:43;;;::::0;::::1;;6420:18;:32:::0;;-1:-1:-1;;;;;;6420:32:11::1;-1:-1:-1::0;;;;;6420:32:11;::::1;::::0;;::::1;::::0;;;-1:-1:-1;6528:16:11;;;::::1;::::0;;6570:43:::1;::::0;::::1;::::0;-1:-1:-1;;6570:43:11::1;6224:396:::0;:::o;2418:148:10:-;6032:10:11;;-1:-1:-1;;;;;6032:10:11;6018;:24;6014:63;;6051:26;;-1:-1:-1;;;6051:26:11;;;;;;;;;;;6014:63;2529:30:10::1;:13;2545:14:::0;;2529:30:::1;:::i;:::-;;2418:148:::0;;:::o;7876:195:11:-;6032:10;;-1:-1:-1;;;;;6032:10:11;6018;:24;6014:63;;6051:26;;-1:-1:-1;;;6051:26:11;;;;;;;;;;;6014:63;7979:14:::1;:32:::0;;;8026:38:::1;::::0;7996:15;;8026:38:::1;::::0;;;::::1;7876:195:::0;:::o;8568:328::-;6032:10;;-1:-1:-1;;;;;6032:10:11;6018;:24;6014:63;;6051:26;;-1:-1:-1;;;6051:26:11;;;;;;;;;;;6014:63;8700:11:::1;8686::::0;::::1;:25;::::0;:64:::1;;;8740:10;8727:5;:10;;;:23;8686:64;:115;;;;8785:16;8766:5;:16;;;:35;8686:115;8669:199;;;8833:24;;-1:-1:-1::0;;;8833:24:11::1;;;;;;;;;;;8669:199;7595:19:153::0;;8877:4:11::1;7582:33:153::0;7669:2;7658:14;;7645:28;7631:12;7624:50;7728:2;7717:14;7704:28;7690:12;7683:50;2418:148:10:o;13269:109:11:-;13321:16;13356:15;13349:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13349:22:11;;;;;;;;;;;;;;;;;;;;;;;13269:109;:::o;7420:236::-;6032:10;;-1:-1:-1;;;;;6032:10:11;6018;:24;6014:63;;6051:26;;-1:-1:-1;;;6051:26:11;;;;;;;;;;;6014:63;-1:-1:-1;;;;;7529:28:11;::::1;7521:37;;;::::0;::::1;;7568:13;:30:::0;;-1:-1:-1;;;;;;7568:30:11::1;-1:-1:-1::0;;;;;7568:30:11;::::1;::::0;;::::1;::::0;;;7613:36:::1;::::0;::::1;::::0;-1:-1:-1;;7613:36:11::1;7420:236:::0;:::o;2795:751:10:-;2989:11;3143:30;3176:13;3143:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3143:46:10;;;;;;;;;;;;;;;;;;;;;;;3199:26;3287:13;3274:26;;3319:22;3344:124;3383:7;3404:9;3427:13;3454:4;3344:25;:124::i;:::-;3319:149;2795:751;-1:-1:-1;;;;;;;;2795:751:10:o;4391:105::-;4441:16;4476:13;4469:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4469:20:10;;;;;;;;;;;;;;;;;;;;;;4391:105;:::o;9032:203:11:-;6032:10;;-1:-1:-1;;;;;6032:10:11;6018;:24;6014:63;;6051:26;;-1:-1:-1;;;6051:26:11;;;;;;;;;;;6014:63;9194:34:::1;:15;9212:16:::0;;9194:34:::1;:::i;6748:157::-:0;6032:10;;-1:-1:-1;;;;;6032:10:11;6018;:24;6014:63;;6051:26;;-1:-1:-1;;;6051:26:11;;;;;;;;;;;6014:63;6829:10:::1;:24:::0;;-1:-1:-1;;;;;;6829:24:11::1;-1:-1:-1::0;;;;;6829:24:11;::::1;::::0;;::::1;::::0;;6868:30:::1;::::0;6829:24;;6868:30:::1;::::0;::::1;6748:157:::0;:::o;8208:169::-;6032:10;;-1:-1:-1;;;;;6032:10:11;6018;:24;6014:63;;6051:26;;-1:-1:-1;;;6051:26:11;;;;;;;;;;;6014:63;8293:12:::1;:28:::0;;-1:-1:-1;;;;;;8293:28:11::1;-1:-1:-1::0;;;;;8293:28:11;::::1;::::0;;::::1;::::0;;;8336:34:::1;::::0;::::1;::::0;-1:-1:-1;;8336:34:11::1;8208:169:::0;:::o;7065:231::-;6032:10;;-1:-1:-1;;;;;6032:10:11;6018;:24;6014:63;;6051:26;;-1:-1:-1;;;6051:26:11;;;;;;;;;;;6014:63;7180:20:::1;:44:::0;;-1:-1:-1;;;;;;7180:44:11::1;-1:-1:-1::0;;;;;7180:44:11;::::1;::::0;;::::1;::::0;;;7239:50:::1;::::0;::::1;::::0;-1:-1:-1;;7239:50:11::1;7065:231:::0;:::o;9787:2493::-;9991:11;10018:9;:13;10014:89;;10054:38;;-1:-1:-1;;;10054:38:11;;;;;;;;;;;10014:89;10563:12;;-1:-1:-1;;;;;10563:12:11;;;;10540:20;;:35;10614:4;10585:18;;;:34;10629:19;;;;;;;;10644:4;10629:19;;;;;-1:-1:-1;10629:19:11;;;;;;;;;;;;:12;;;:19;10684:14;;10733:13;;10684:14;;10733:13;10563:12;10779:130;10540:7;10832:10;10684:14;10733:13;10779:18;:130::i;:::-;10969:18;;:187;;-1:-1:-1;;;10969:187:11;;10756:153;;-1:-1:-1;10919:22:11;;-1:-1:-1;;;;;10969:18:11;;;;:25;;:187;;11012:7;;10756:153;;11067:15;;11100:14;;11132:10;;10969:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11210:14;;-1:-1:-1;;;;;11176:31:11;;;;;;;:10;:31;;;;;;;:48;;;11255:20;;;;;11234:18;;;:41;11290:181;10919:247;;-1:-1:-1;11210:14:11;11290:181;;;;10919:247;;11234:7;;11394:14;;11422:15;;11451:10;;11290:181;:::i;:::-;;;;;;;;11529:17;;:118;;-1:-1:-1;;;11529:118:11;;11573:10;11529:118;;;11338:34:153;11605:4:11;11388:18:153;;;11381:43;11440:18;;;11433:34;;;-1:-1:-1;;;;;11529:30:11;;;;;;11273:18:153;;11529:118:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11675:17:11;;:65;;-1:-1:-1;;;11675:65:11;;-1:-1:-1;;;;;11952:32:153;;;11675:65:11;;;11934:51:153;-1:-1:-1;;12001:18:153;;;11994:34;11675:25:11;;;;;;11907:18:153;;11675:65:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11657:154;;11772:28;;-1:-1:-1;;;11772:28:11;;;;;;;;;;;11657:154;11820:60;;-1:-1:-1;;;11820:60:11;;;;;12264:25:153;;;12305:18;;;12298:34;;;11863:10:11;12348:18:153;;;12341:60;11875:4:11;12417:18:153;;;12410:50;-1:-1:-1;;;;;11820:21:11;;;;;12236:19:153;;11820:60:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12015:9;12010:180;12034:15;:22;12030:26;;12010:180;;;12074:10;-1:-1:-1;;;;;12074:20:11;;12095:15;12111:1;12095:18;;;;;;;;:::i;:::-;;;;;;;;;;;12074:46;;;;;;-1:-1:-1;;;;;;12074:46:11;;;-1:-1:-1;;;;;12095:18:11;;;12074:46;;;12960:51:153;12095:18:11;13027::153;;;13020:50;12933:18;;12074:46:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12162:3;;;;;12010:180;;;-1:-1:-1;12224:20:11;;;12199:46;;-1:-1:-1;;;12199:46:11;;-1:-1:-1;;;;;12224:20:11;;;12199:46;;;776:51:153;;;;12199:24:11;;;;;749:18:153;;12199:46:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12263:10:11;;9787:2493;-1:-1:-1;;;;;;;;;;;9787:2493:11:o;3846:464:10:-;4045:7;4155;4184:15;4221:14;4257:4;4110:169;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4064:239:10;3846:464;-1:-1:-1;;;;;3846:464:10:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;14:152:153;-1:-1:-1;;;;;110:31:153;;100:42;;90:70;;156:1;153;146:12;90:70;14:152;:::o;171:296::-;258:6;311:2;299:9;290:7;286:23;282:32;279:52;;;327:1;324;317:12;279:52;366:9;353:23;385:52;431:5;385:52;:::i;:::-;456:5;171:296;-1:-1:-1;;;171:296:153:o;838:615::-;924:6;932;985:2;973:9;964:7;960:23;956:32;953:52;;;1001:1;998;991:12;953:52;1041:9;1028:23;1070:18;1111:2;1103:6;1100:14;1097:34;;;1127:1;1124;1117:12;1097:34;1165:6;1154:9;1150:22;1140:32;;1210:7;1203:4;1199:2;1195:13;1191:27;1181:55;;1232:1;1229;1222:12;1181:55;1272:2;1259:16;1298:2;1290:6;1287:14;1284:34;;;1314:1;1311;1304:12;1284:34;1367:7;1362:2;1352:6;1349:1;1345:14;1341:2;1337:23;1333:32;1330:45;1327:65;;;1388:1;1385;1378:12;1327:65;1419:2;1411:11;;;;;1441:6;;-1:-1:-1;838:615:153;;-1:-1:-1;;;;838:615:153:o;1458:180::-;1517:6;1570:2;1558:9;1549:7;1545:23;1541:32;1538:52;;;1586:1;1583;1576:12;1538:52;-1:-1:-1;1609:23:153;;1458:180;-1:-1:-1;1458:180:153:o;1851:190::-;1934:6;1987:2;1975:9;1966:7;1962:23;1958:32;1955:52;;;2003:1;2000;1993:12;1955:52;-1:-1:-1;2026:9:153;1851:190;-1:-1:-1;1851:190:153:o;2046:155::-;2114:20;;2143:52;2114:20;2143:52;:::i;:::-;2046:155;;;:::o;2661:658::-;2832:2;2884:21;;;2954:13;;2857:18;;;2976:22;;;2803:4;;2832:2;3055:15;;;;3029:2;3014:18;;;2803:4;3098:195;3112:6;3109:1;3106:13;3098:195;;;3177:13;;-1:-1:-1;;;;;3173:39:153;3161:52;;3268:15;;;;3233:12;;;;3209:1;3127:9;3098:195;;;-1:-1:-1;3310:3:153;;2661:658;-1:-1:-1;;;;;;2661:658:153:o;3324:127::-;3385:10;3380:3;3376:20;3373:1;3366:31;3416:4;3413:1;3406:15;3440:4;3437:1;3430:15;3456:250;3523:2;3517:9;3565:6;3553:19;;3602:18;3587:34;;3623:22;;;3584:62;3581:88;;;3649:18;;:::i;:::-;3685:2;3678:22;3456:250;:::o;3711:535::-;3762:5;3810:4;3798:9;3793:3;3789:19;3785:30;3782:50;;;3828:1;3825;3818:12;3782:50;3861:2;3855:9;3903:4;3895:6;3891:17;3974:6;3962:10;3959:22;3938:18;3926:10;3923:34;3920:62;3917:88;;;3985:18;;:::i;:::-;4025:10;4021:2;4014:22;;4054:6;4045:15;;4097:9;4084:23;4076:6;4069:39;4169:2;4158:9;4154:18;4141:32;4136:2;4128:6;4124:15;4117:57;4235:2;4224:9;4220:18;4207:32;4202:2;4194:6;4190:15;4183:57;;3711:535;;;;:::o;4251:902::-;4305:5;4358:3;4351:4;4343:6;4339:17;4335:27;4325:55;;4376:1;4373;4366:12;4325:55;4412:6;4399:20;4438:4;4461:18;4498:2;4494;4491:10;4488:36;;;4504:18;;:::i;:::-;4550:2;4547:1;4543:10;4582:2;4576:9;4645:2;4641:7;4636:2;4632;4628:11;4624:25;4616:6;4612:38;4700:6;4688:10;4685:22;4680:2;4668:10;4665:18;4662:46;4659:72;;;4711:18;;:::i;:::-;4747:2;4740:22;4797:18;;;4873:15;;;4869:24;;;4831:15;;;;-1:-1:-1;4905:15:153;;;4902:35;;;4933:1;4930;4923:12;4902:35;4969:2;4961:6;4957:15;4946:26;;4981:142;4997:6;4992:3;4989:15;4981:142;;;5063:17;;5051:30;;5101:12;;;;5014;;;;4981:142;;;5141:6;4251:902;-1:-1:-1;;;;;;;4251:902:153:o;5158:1554::-;5297:6;5305;5313;5321;5365:9;5356:7;5352:23;5395:3;5391:2;5387:12;5384:32;;;5412:1;5409;5402:12;5384:32;5435:6;5461:2;5457;5453:11;5450:31;;;5477:1;5474;5467:12;5450:31;5503:17;;:::i;:::-;5490:30;;5543:29;5562:9;5543:29;:::i;:::-;5536:5;5529:44;5633:2;5622:9;5618:18;5605:32;5600:2;5593:5;5589:14;5582:56;5698:2;5687:9;5683:18;5670:32;5665:2;5658:5;5654:14;5647:56;5763:2;5752:9;5748:18;5735:32;5730:2;5723:5;5719:14;5712:56;5829:3;5818:9;5814:19;5801:33;5795:3;5788:5;5784:15;5777:58;5896:3;5885:9;5881:19;5868:33;5862:3;5855:5;5851:15;5844:58;5963:3;5952:9;5948:19;5935:33;5929:3;5922:5;5918:15;5911:58;6002:39;6036:3;6025:9;6021:19;6002:39;:::i;:::-;5996:3;5989:5;5985:15;5978:64;6061:3;6096:38;6130:2;6119:9;6115:18;6096:38;:::i;:::-;6080:14;;;6073:62;6154:3;6189:51;6232:7;6212:18;;;6189:51;:::i;:::-;6173:14;;;6166:75;6305:6;6290:22;;6277:36;6268:6;6257:18;;6250:64;6378:3;6363:19;;6350:33;6341:6;6330:18;;6323:61;6177:5;;-1:-1:-1;6444:18:153;;6431:32;6486:18;6475:30;;6472:50;;;6518:1;6515;6508:12;6472:50;6541:61;6594:7;6585:6;6574:9;6570:22;6541:61;:::i;:::-;5158:1554;;6531:71;;-1:-1:-1;;;;6649:3:153;6634:19;;6621:33;;6701:3;6686:19;6673:33;;5158:1554;-1:-1:-1;5158:1554:153:o;7950:1007::-;8054:12;;-1:-1:-1;;;;;559:31:153;547:44;;8121:4;8114:5;8110:16;8104:23;8097:4;8092:3;8088:14;8081:47;8177:4;8170:5;8166:16;8160:23;8153:4;8148:3;8144:14;8137:47;8233:4;8226:5;8222:16;8216:23;8209:4;8204:3;8200:14;8193:47;8289:4;8282:5;8278:16;8272:23;8265:4;8260:3;8256:14;8249:47;8345:4;8338:5;8334:16;8328:23;8321:4;8316:3;8312:14;8305:47;8401:4;8394:5;8390:16;8384:23;8377:4;8372:3;8368:14;8361:47;8454:4;8447:5;8443:16;8437:23;8469:69;8532:4;8527:3;8523:14;8509:12;-1:-1:-1;;;;;559:31:153;547:44;;472:125;8469:69;-1:-1:-1;8557:6:153;8600:14;;;8594:21;-1:-1:-1;;;;;559:31:153;;8680:12;;;547:44;-1:-1:-1;;8712:6:153;8755:14;;;8749:21;7814:12;;8818;;;7802:25;7876:4;7865:16;;7859:23;7843:14;;;7836:47;7932:4;7921:16;;7915:23;7899:14;;;7892:47;-1:-1:-1;;8882:6:153;8871:18;;8865:25;8856:6;8847:16;;8840:51;8942:6;8931:18;8925:25;8916:6;8907:16;;;8900:51;7950:1007::o;8962:435::-;9015:3;9053:5;9047:12;9080:6;9075:3;9068:19;9106:4;9135:2;9130:3;9126:12;9119:19;;9172:2;9165:5;9161:14;9193:1;9203:169;9217:6;9214:1;9211:13;9203:169;;;9278:13;;9266:26;;9312:12;;;;9347:15;;;;9239:1;9232:9;9203:169;;;-1:-1:-1;9388:3:153;;8962:435;-1:-1:-1;;;;;8962:435:153:o;9402:705::-;9712:4;9741:3;9753:47;9790:9;9782:6;9753:47;:::i;:::-;-1:-1:-1;;;;;9875:15:153;;;9869:3;9854:19;;9847:44;9922:3;9907:19;;9900:35;;;9972:15;;9966:3;9951:19;;9944:44;10019:3;10004:19;;9997:31;;;10045:56;10082:18;;;10074:6;10045:56;:::i;10112:272::-;10182:6;10235:2;10223:9;10214:7;10210:23;10206:32;10203:52;;;10251:1;10248;10241:12;10203:52;10283:9;10277:16;10302:52;10348:5;10302:52;:::i;10389:704::-;-1:-1:-1;;;;;10796:15:153;;;10778:34;;10699:4;;10728:3;;10821:56;10873:2;10858:18;;10850:6;10821:56;:::i;:::-;10926:2;10918:6;10914:15;10908:3;10897:9;10893:19;10886:44;;10967:6;10961:3;10950:9;10946:19;10939:35;11011:2;11005:3;10994:9;10990:19;10983:31;11031:56;11083:2;11072:9;11068:18;11060:6;11031:56;:::i;11478:277::-;11545:6;11598:2;11586:9;11577:7;11573:23;11569:32;11566:52;;;11614:1;11611;11604:12;11566:52;11646:9;11640:16;11699:5;11692:13;11685:21;11678:5;11675:32;11665:60;;11721:1;11718;11711:12;12471:184;12541:6;12594:2;12582:9;12573:7;12569:23;12565:32;12562:52;;;12610:1;12607;12600:12;12562:52;-1:-1:-1;12633:16:153;;12471:184;-1:-1:-1;12471:184:153:o;12660:127::-;12721:10;12716:3;12712:20;12709:1;12702:31;12752:4;12749:1;12742:15;12776:4;12773:1;12766:15;13081:545;13372:3;13357:19;;13385:47;13361:9;13414:6;13385:47;:::i;:::-;13463:3;13448:19;;13441:35;;;;-1:-1:-1;;;;;13551:15:153;;;13545:3;13530:19;;13523:44;13604:15;;13598:3;13583:19;;;13576:44;13081:545;;-1:-1:-1;13081:545:153:o", "linkReferences": {}, "immutableReferences": { - "5125": [ + "5128": [ { "start": 3592, "length": 32 } ], - "5361": [ + "5364": [ { "start": 1467, "length": 32 } ], - "5363": [ + "5366": [ { "start": 1510, "length": 32 } ], - "5365": [ + "5368": [ { "start": 1557, "length": 32 @@ -793,7 +793,7 @@ "updateSweepTargets(address[])": "09b9075f", "versionCounter()": "dd6d30c1" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"hyperdriveGovernance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeCollector\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.Fees\",\"name\":\"fees\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.Fees\",\"name\":\"maxFees\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"defaultPausers\",\"type\":\"address[]\"}],\"internalType\":\"struct HyperdriveFactory.FactoryConfig\",\"name\":\"_factoryConfig\",\"type\":\"tuple\"},{\"internalType\":\"contract IHyperdriveDeployer\",\"name\":\"_deployer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_linkerFactory\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_linkerCodeHash\",\"type\":\"bytes32\"},{\"internalType\":\"contract IERC4626\",\"name\":\"_pool\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"_sweepTargets_\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxFeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonPayableInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"hyperdrive\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialSharePrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumShareReserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumTransactionAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"checkpointDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeStretch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeCollector\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.Fees\",\"name\":\"fees\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"oracleSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updateGap\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct IHyperdrive.PoolConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"linkerFactory\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"linkerCodeHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"extraData\",\"type\":\"bytes32[]\"}],\"name\":\"Deployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newFeeCollector\",\"type\":\"address\"}],\"name\":\"FeeCollectorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"}],\"name\":\"GovernanceUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"hyperdriveGovernance\",\"type\":\"address\"}],\"name\":\"HyperdriveGovernanceUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newDeployer\",\"type\":\"address\"}],\"name\":\"ImplementationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newCodeHash\",\"type\":\"bytes32\"}],\"name\":\"LinkerCodeHashUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newLinkerFactory\",\"type\":\"address\"}],\"name\":\"LinkerFactoryUpdated\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialSharePrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumShareReserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumTransactionAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"checkpointDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeStretch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeCollector\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.Fees\",\"name\":\"fees\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"oracleSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updateGap\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.PoolConfig\",\"name\":\"_config\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"_contribution\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_apr\",\"type\":\"uint256\"}],\"name\":\"deployAndInitialize\",\"outputs\":[{\"internalType\":\"contract IHyperdrive\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeCollector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDefaultPausers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSweepTargets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"governance\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hyperdriveDeployer\",\"outputs\":[{\"internalType\":\"contract IHyperdriveDeployer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hyperdriveGovernance\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"instance\",\"type\":\"address\"}],\"name\":\"isOfficial\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"linkerCodeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"linkerFactory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_defaultPausers_\",\"type\":\"address[]\"}],\"name\":\"updateDefaultPausers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeCollector\",\"type\":\"address\"}],\"name\":\"updateFeeCollector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.Fees\",\"name\":\"_fees\",\"type\":\"tuple\"}],\"name\":\"updateFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_governance\",\"type\":\"address\"}],\"name\":\"updateGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_hyperdriveGovernance\",\"type\":\"address\"}],\"name\":\"updateHyperdriveGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IHyperdriveDeployer\",\"name\":\"newDeployer\",\"type\":\"address\"}],\"name\":\"updateImplementation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_linkerCodeHash\",\"type\":\"bytes32\"}],\"name\":\"updateLinkerCodeHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_linkerFactory\",\"type\":\"address\"}],\"name\":\"updateLinkerFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_sweepTargets_\",\"type\":\"address[]\"}],\"name\":\"updateSweepTargets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"versionCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"DELV\",\"custom:disclaimer\":\"The language used in this code is for coding convenience only, and is not intended to, and does not, have any particular legal or regulatory significance.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_deployer\":\"The contract that deploys new hyperdrive instances.\",\"_factoryConfig\":\"The variables that configure the factory;\",\"_linkerCodeHash\":\"The hash of the linker contract's constructor code.\",\"_linkerFactory\":\"The linker factory.\",\"_pool\":\"The ERC4626 pool.\",\"_sweepTargets_\":\"The addresses that can be swept by the fee collector.\"}},\"deployAndInitialize((address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),bytes32[],uint256,uint256)\":{\"params\":{\"_apr\":\"The initial spot rate.\",\"_config\":\"The pool configuration.\",\"_contribution\":\"The contribution amount.\"}},\"getDefaultPausers()\":{\"returns\":{\"_0\":\"The default pausers.\"}},\"getSweepTargets()\":{\"returns\":{\"_0\":\"The sweep targets.\"}},\"updateDefaultPausers(address[])\":{\"params\":{\"_defaultPausers_\":\"The new list of default pausers.\"}},\"updateFeeCollector(address)\":{\"params\":{\"_feeCollector\":\"The new fee collector address.\"}},\"updateFees((uint256,uint256,uint256))\":{\"params\":{\"_fees\":\"The new defaults for the fee parameters.\"}},\"updateGovernance(address)\":{\"params\":{\"_governance\":\"The new governance address.\"}},\"updateHyperdriveGovernance(address)\":{\"params\":{\"_hyperdriveGovernance\":\"The new hyperdrive governance address.\"}},\"updateImplementation(address)\":{\"params\":{\"newDeployer\":\"The new deployment contract.\"}},\"updateLinkerCodeHash(bytes32)\":{\"params\":{\"_linkerCodeHash\":\"The new linker code hash.\"}},\"updateLinkerFactory(address)\":{\"params\":{\"_linkerFactory\":\"The new linker factory.\"}},\"updateSweepTargets(address[])\":{\"params\":{\"_sweepTargets_\":\"The new sweep targets.\"}}},\"stateVariables\":{\"pool\":{\"details\":\"The address of the ERC4626 pool used in this factory.\"}},\"title\":\"ERC4626HyperdriveFactory\",\"version\":1},\"userdoc\":{\"errors\":{\"ApprovalFailed()\":[{\"notice\":\"################## ### Hyperdrive ### ##################\"}],\"Unauthorized()\":[{\"notice\":\"############### ### Factory ### ###############\"}]},\"events\":{\"Deployed(uint256,address,(address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),address,bytes32,bytes32[])\":{\"notice\":\"The event that is emitted when new instances are deployed.\"},\"FeeCollectorUpdated(address)\":{\"notice\":\"Emitted when the fee collector is updated.\"},\"GovernanceUpdated(address)\":{\"notice\":\"Emitted when governance is transferred.\"},\"HyperdriveGovernanceUpdated(address)\":{\"notice\":\"Emitted when the Hyperdrive governance address is updated.\"},\"ImplementationUpdated(address)\":{\"notice\":\"Emitted when the Hyperdrive implementation is updated.\"},\"LinkerCodeHashUpdated(bytes32)\":{\"notice\":\"Emitted when the linker code hash is updated.\"},\"LinkerFactoryUpdated(address)\":{\"notice\":\"Emitted when the linker factory is updated.\"}},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Initializes the factory.\"},\"deployAndInitialize((address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),bytes32[],uint256,uint256)\":{\"notice\":\"This deploys and initializes a new ERC4626Hyperdrive instance.\"},\"feeCollector()\":{\"notice\":\"The fee collector used when new instances are deployed.\"},\"fees()\":{\"notice\":\"The fee parameters used when new instances are deployed.\"},\"getDefaultPausers()\":{\"notice\":\"Gets the default pausers.\"},\"getSweepTargets()\":{\"notice\":\"Gets the sweep targets.\"},\"governance()\":{\"notice\":\"The governance address that updates the factory's configuration.\"},\"hyperdriveDeployer()\":{\"notice\":\"The contract used to deploy new instances.\"},\"hyperdriveGovernance()\":{\"notice\":\"The governance address used when new instances are deployed.\"},\"isOfficial(address)\":{\"notice\":\"A mapping from deployed Hyperdrive instances to the version of the deployer that deployed them.\"},\"linkerCodeHash()\":{\"notice\":\"The linker code hash used when new instances are deployed.\"},\"linkerFactory()\":{\"notice\":\"The linker factory used when new instances are deployed.\"},\"updateDefaultPausers(address[])\":{\"notice\":\"Allows governance to change the default pausers.\"},\"updateFeeCollector(address)\":{\"notice\":\"Allows governance to change the fee collector address.\"},\"updateFees((uint256,uint256,uint256))\":{\"notice\":\"Allows governance to update the default fee schedule that will be used in new deployments.\"},\"updateGovernance(address)\":{\"notice\":\"Allows governance to transfer the governance role.\"},\"updateHyperdriveGovernance(address)\":{\"notice\":\"Allows governance to change the hyperdrive governance address\"},\"updateImplementation(address)\":{\"notice\":\"Allows governance to update the deployer contract.\"},\"updateLinkerCodeHash(bytes32)\":{\"notice\":\"Allows governance to change the linker code hash. This allows governance to update the implementation of the ERC20Forwarder.\"},\"updateLinkerFactory(address)\":{\"notice\":\"Allows governance to change the linker factory.\"},\"updateSweepTargets(address[])\":{\"notice\":\"Allows governance to change the sweep targets used in deployed instances.\"},\"versionCounter()\":{\"notice\":\"The number of times the factory's deployer has been updated.\"}},\"notice\":\"Deploys hyperdrive instances and initializes them. It also holds a registry of all deployed hyperdrive instances.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/src/factory/ERC4626HyperdriveFactory.sol\":\"ERC4626HyperdriveFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@aave/=lib/aave-v3-core/contracts/\",\":aave-v3-core/=lib/aave-v3-core/\",\":create3-factory/=lib/yield-daddy/lib/create3-factory/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":yield-daddy/=lib/yield-daddy/\"]},\"sources\":{\"contracts/src/HyperdriveDataProvider.sol\":{\"keccak256\":\"0x548a0d3b7b46f4e7f99745aa1b83ac1d264e6e82af61e6580a05335bd94bc39d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6505d7514910ff3a44932a42376f323f739204d6154bc4b997c60e5cbee050e5\",\"dweb:/ipfs/QmdKke5nXGZDxAcGDXFenJ6emxSUhE2QT8rdBZ8JhNpFaA\"]},\"contracts/src/HyperdriveStorage.sol\":{\"keccak256\":\"0xf02f44333981dfbf6c500bf979aab8cd7aee9731d103a6aafc247e09b90b76bc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6664cd66465073274f9c2c27fee39e1c64e8e21fff532e64cd3014800582b00a\",\"dweb:/ipfs/QmSGH1ixAUMu81yYf3pMFHo4uJxw6XgfnkBupjUSoFcdNY\"]},\"contracts/src/factory/ERC4626HyperdriveFactory.sol\":{\"keccak256\":\"0xa27700f8c837640247830835a7db53b96c7aa493861b46effae4d4e99430ee0a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8a8b27fb4deadab0be3a4eedcea74c3fad676f51a8ebb8a0ea4f2f61aaadb871\",\"dweb:/ipfs/QmZiWw6gmiFnrNrnqrxkJM6y4gLNLKc2CYQbTA2ZA2TnLP\"]},\"contracts/src/factory/HyperdriveFactory.sol\":{\"keccak256\":\"0x92862278de3e329a32c6f200088a183ecd257f1071eef6e8499a9ca86f93bdde\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9476f0cd7dc221cbc1373c59a3a0bd264784cf3985014ae560422e465c9142a1\",\"dweb:/ipfs/QmXEZf6YynAAvN2iodwNifooWSo2fRfFTRXnBwYS3pb5q2\"]},\"contracts/src/instances/ERC4626DataProvider.sol\":{\"keccak256\":\"0xff9052b6730f9f730426a45026a2bd0f0201b457c899f8faed0b4c69c6ee1985\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://88f763a766bf86163d7bf417737a3980a1ee4dbd7959bbbf4c7d60e7b59c6c37\",\"dweb:/ipfs/QmdqVv7iUpopKYcXLo97JBC5fjXnYUGSb1wcBdYYQCYmW9\"]},\"contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4642a027efffb3aa6cdc85e31796fb3b1bc4fff4316e6390874e6f4add37b86c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3720a6c1c427dcfcbdeeec15cbdb682115e44e0a9136af7e0ad9e5af2ea40672\",\"dweb:/ipfs/QmP4bmaHw8MfX9MQLhhgnVQ9U9BTQAR3e5cCCE9RcoeX7w\"]},\"contracts/src/interfaces/IERC4626.sol\":{\"keccak256\":\"0xaf48462596aa9c7544086c0a5e53adc7bf8f713662a5fb270ffb4e4db16e23cf\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b2e5e6d94edba7e97dce8b5e061d40955d39fa586579d170f66cbecdbd2348dc\",\"dweb:/ipfs/QmeUkSbHaBmCeZnmup5RujvxRAyhw1u9vpRRpzeuU2wiia\"]},\"contracts/src/interfaces/IHyperdrive.sol\":{\"keccak256\":\"0x3336dbc3128174594baa25c95f3be485aa61a77a06afbb75e2708987247a5bb5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e189558d4f78633d90ecdb3ff8d775109394a98cb18d19507642cb56c43dc1e\",\"dweb:/ipfs/QmZMVsor78To4nbXwLDBaZKD8m68PT53C9mxvR8iUkM5i5\"]},\"contracts/src/interfaces/IHyperdriveDeployer.sol\":{\"keccak256\":\"0x7f6184ad6c3b28650b6644e74d7fdf4af5854c6e80f813da468a496aeb8c6da0\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://ce31b67fc912729ee56d8b53abf699882ea44ddd4c62052dc1685c9694685587\",\"dweb:/ipfs/QmbUBE3V1ahsVKrKzHs8Ho5H4U1XVB182BsRDFgt4ZjLZB\"]},\"contracts/src/interfaces/IHyperdriveRead.sol\":{\"keccak256\":\"0x837939af4a9224c5f4ea564e9b33a5612442b7d7d50b7f8bb32be6bb3ce239b3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3bfebedcb31d2edf86a69f0dfbcc5aa7b96edc2d8197b4a4681a200cb6ffe993\",\"dweb:/ipfs/Qmeq4oAGxKv3mvRRWkqYBjfdozPkhi3MqBRFNnNkmAwCtt\"]},\"contracts/src/interfaces/IHyperdriveWrite.sol\":{\"keccak256\":\"0xe2ba8031ab98a81026010af00de9935b79ade6701dc486fd1c02d67f4eb81bf8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e6acf863128f355e6ad26130037797a08321054ac8e202274debf6730162467\",\"dweb:/ipfs/Qmbf6882o3a7mci1j4w2XJtUDfsJvECGF6Yz3PG8q4LQgk\"]},\"contracts/src/interfaces/IMultiToken.sol\":{\"keccak256\":\"0xe3d64871148bdae5a714107b8b1a55f39cd4ede601436d2777a165d20d768a1a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9ebc0bfda35e9b7299c43f0efff38012b8074fcca867b781c0cedeede10cf3d0\",\"dweb:/ipfs/QmbHRLezFhWavHakK5G26DB4ud5PueU6fNvZf3L3TwXnPb\"]},\"contracts/src/interfaces/IMultiTokenMetadata.sol\":{\"keccak256\":\"0xcdc60ba02194150741a78cb0c52c306f5f577c5c814c63e98a13d46c02d2d9cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8f5866cb2c8c4342dba88c0e4d78296fef0e170b18b3613c796c29dc31a5ca87\",\"dweb:/ipfs/QmZcoDTYhhYSB5ds3cNPJpdZTxrz6cF8M2vNVeuAcT8gw6\"]},\"contracts/src/interfaces/IMultiTokenRead.sol\":{\"keccak256\":\"0x2e55fa961123a8bb7284c8388af9bd1302a7153441ffe641804ea79021bdca05\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c7dc03bbab02976609dec59c201e5b57a2998d1c626cef58d7a9fa7c2b06b939\",\"dweb:/ipfs/QmSifWr9cVWaUEmyKpGFcgpKCYdoBYgWtQBLgemtwo4a7x\"]},\"contracts/src/interfaces/IMultiTokenWrite.sol\":{\"keccak256\":\"0xa5ba8812e06fb6d38e1872603c8b80321cfd2f96cecbe7b67b92cb33e93b3fc8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://73afa34919c7d457e925b4be83abb1b1ed2ed731a382ebffad95a3005c04bd5a\",\"dweb:/ipfs/QmauMxmgtYTS7RJQw1mS7Pwe5FUMDPHE2N1MBhFUjk6HPe\"]},\"contracts/src/libraries/AssetId.sol\":{\"keccak256\":\"0x82515c6d8fc8dbc940b0e40de0bfa584ade8a5a0f24ef14e352deced1e89a384\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://fa01b52b6e05d6c304ee938ab7181cacd6cfede09c5f6eca8f6d86b31e0fe806\",\"dweb:/ipfs/QmNVyKLPJnP71ADgTwvS9D2ME2xsPVwjD32yCnNdmvLmpT\"]},\"contracts/src/libraries/FixedPointMath.sol\":{\"keccak256\":\"0x0108762fdecfae06d7b8d76bb52b1a5757669cc2a4e5f3ad701499295ed635bd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a94cdbab2bdbb0212597f70cebea86fcf69be0702f6d6fe76571ee43992d7d6b\",\"dweb:/ipfs/QmXyncXgKixNzP7rgqoCA2dzehjPTAsEbtAKZGW6CQADFE\"]},\"contracts/src/libraries/HyperdriveMath.sol\":{\"keccak256\":\"0x9acd606f849bec2b31ee37bbee4c3f3df02aef24491f01c4a965bca21dde3c4e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7000734fef6247718a99ca8bc902e4452fbc8445f09969521ac7330256e64518\",\"dweb:/ipfs/QmSFp3AMhxcKexKPzLn6rJu9iG8qUCA41pNBAW7C4dhNaa\"]},\"contracts/src/libraries/SafeCast.sol\":{\"keccak256\":\"0x077e800ae4f47bda111e72f8c40d50a57b10a1c5bce81f2e83bb57f94752159f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8e9433729a73747a65ececae27a8f634300a4e02a66577f796f596e5894a4bb5\",\"dweb:/ipfs/QmT2fC2xaRoFuDBURAtcwqvpqXvw1AQybSgb4khVBzit2S\"]},\"contracts/src/libraries/YieldSpaceMath.sol\":{\"keccak256\":\"0xb8682a4823e01535b6bc73755f6304d0846c44526d882cefc0c3b04b807e2a04\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://836744182376d0cd9721e15334c3f972d77564586220b8db7b63737342b410ef\",\"dweb:/ipfs/QmVxEHgnVkDTNggxbC83wMzvDmsQaUq1vTbFosShjzgAmr\"]},\"contracts/src/token/MultiTokenDataProvider.sol\":{\"keccak256\":\"0x1b2f98b9d6feaf0fc13ac4010dee2d2f49ecd33bf75d0c5be7e3318a6df2620f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4230f69efbb31e8194a78fb3ef5e2a69d349fe6f8b8aa4cf6b280484f3653cef\",\"dweb:/ipfs/QmScBP66WMXxXh28ScmU6SgSCWYhsRQHpZ755NyxTfCJoV\"]},\"contracts/src/token/MultiTokenStorage.sol\":{\"keccak256\":\"0x97a22d11197f185d6f17ff5ada60665b27af265c23b208f20004e22b26d7b7e8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://62f950f46f3de598776e8e8201a0d35ec51473cc0ea754be5c9e686078ebb3d6\",\"dweb:/ipfs/QmaKpZETx9zCV46XwcqvXUr7f8t2CPo1Tim2umTDwsk2bj\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/solmate/src/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xb282dd78aa7375d6b200b9a5d8dd214b2e5df1004f8217a4b4c2b07f0c5bfd01\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://5fca62eb8d3dbd2b3b7e4bb051f6da16f4d0ff9cee61c39cebb80f031f6a8800\",\"dweb:/ipfs/QmbrsXPK91iBFwHKwJs2HLRud2KzMoBDRiWYMUtyV5H57j\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"hyperdriveGovernance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeCollector\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.Fees\",\"name\":\"fees\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.Fees\",\"name\":\"maxFees\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"defaultPausers\",\"type\":\"address[]\"}],\"internalType\":\"struct HyperdriveFactory.FactoryConfig\",\"name\":\"_factoryConfig\",\"type\":\"tuple\"},{\"internalType\":\"contract IHyperdriveDeployer\",\"name\":\"_deployer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_linkerFactory\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_linkerCodeHash\",\"type\":\"bytes32\"},{\"internalType\":\"contract IERC4626\",\"name\":\"_pool\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"_sweepTargets_\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxFeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonPayableInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"hyperdrive\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialSharePrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumShareReserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumTransactionAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"checkpointDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeStretch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeCollector\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.Fees\",\"name\":\"fees\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"oracleSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updateGap\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct IHyperdrive.PoolConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"linkerFactory\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"linkerCodeHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"extraData\",\"type\":\"bytes32[]\"}],\"name\":\"Deployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newFeeCollector\",\"type\":\"address\"}],\"name\":\"FeeCollectorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"}],\"name\":\"GovernanceUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"hyperdriveGovernance\",\"type\":\"address\"}],\"name\":\"HyperdriveGovernanceUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newDeployer\",\"type\":\"address\"}],\"name\":\"ImplementationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newCodeHash\",\"type\":\"bytes32\"}],\"name\":\"LinkerCodeHashUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newLinkerFactory\",\"type\":\"address\"}],\"name\":\"LinkerFactoryUpdated\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialSharePrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumShareReserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumTransactionAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"checkpointDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeStretch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeCollector\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.Fees\",\"name\":\"fees\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"oracleSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updateGap\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.PoolConfig\",\"name\":\"_config\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"_contribution\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_apr\",\"type\":\"uint256\"}],\"name\":\"deployAndInitialize\",\"outputs\":[{\"internalType\":\"contract IHyperdrive\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeCollector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDefaultPausers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSweepTargets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"governance\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hyperdriveDeployer\",\"outputs\":[{\"internalType\":\"contract IHyperdriveDeployer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hyperdriveGovernance\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"instance\",\"type\":\"address\"}],\"name\":\"isOfficial\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"linkerCodeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"linkerFactory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_defaultPausers_\",\"type\":\"address[]\"}],\"name\":\"updateDefaultPausers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeCollector\",\"type\":\"address\"}],\"name\":\"updateFeeCollector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.Fees\",\"name\":\"_fees\",\"type\":\"tuple\"}],\"name\":\"updateFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_governance\",\"type\":\"address\"}],\"name\":\"updateGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_hyperdriveGovernance\",\"type\":\"address\"}],\"name\":\"updateHyperdriveGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IHyperdriveDeployer\",\"name\":\"newDeployer\",\"type\":\"address\"}],\"name\":\"updateImplementation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_linkerCodeHash\",\"type\":\"bytes32\"}],\"name\":\"updateLinkerCodeHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_linkerFactory\",\"type\":\"address\"}],\"name\":\"updateLinkerFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_sweepTargets_\",\"type\":\"address[]\"}],\"name\":\"updateSweepTargets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"versionCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"DELV\",\"custom:disclaimer\":\"The language used in this code is for coding convenience only, and is not intended to, and does not, have any particular legal or regulatory significance.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_deployer\":\"The contract that deploys new hyperdrive instances.\",\"_factoryConfig\":\"The variables that configure the factory;\",\"_linkerCodeHash\":\"The hash of the linker contract's constructor code.\",\"_linkerFactory\":\"The linker factory.\",\"_pool\":\"The ERC4626 pool.\",\"_sweepTargets_\":\"The addresses that can be swept by the fee collector.\"}},\"deployAndInitialize((address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),bytes32[],uint256,uint256)\":{\"params\":{\"_apr\":\"The initial spot rate.\",\"_config\":\"The pool configuration.\",\"_contribution\":\"The contribution amount.\"}},\"getDefaultPausers()\":{\"returns\":{\"_0\":\"The default pausers.\"}},\"getSweepTargets()\":{\"returns\":{\"_0\":\"The sweep targets.\"}},\"updateDefaultPausers(address[])\":{\"params\":{\"_defaultPausers_\":\"The new list of default pausers.\"}},\"updateFeeCollector(address)\":{\"params\":{\"_feeCollector\":\"The new fee collector address.\"}},\"updateFees((uint256,uint256,uint256))\":{\"params\":{\"_fees\":\"The new defaults for the fee parameters.\"}},\"updateGovernance(address)\":{\"params\":{\"_governance\":\"The new governance address.\"}},\"updateHyperdriveGovernance(address)\":{\"params\":{\"_hyperdriveGovernance\":\"The new hyperdrive governance address.\"}},\"updateImplementation(address)\":{\"params\":{\"newDeployer\":\"The new deployment contract.\"}},\"updateLinkerCodeHash(bytes32)\":{\"params\":{\"_linkerCodeHash\":\"The new linker code hash.\"}},\"updateLinkerFactory(address)\":{\"params\":{\"_linkerFactory\":\"The new linker factory.\"}},\"updateSweepTargets(address[])\":{\"params\":{\"_sweepTargets_\":\"The new sweep targets.\"}}},\"stateVariables\":{\"pool\":{\"details\":\"The address of the ERC4626 pool used in this factory.\"}},\"title\":\"ERC4626HyperdriveFactory\",\"version\":1},\"userdoc\":{\"errors\":{\"ApprovalFailed()\":[{\"notice\":\"################## ### Hyperdrive ### ##################\"}],\"Unauthorized()\":[{\"notice\":\"############### ### Factory ### ###############\"}]},\"events\":{\"Deployed(uint256,address,(address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),address,bytes32,bytes32[])\":{\"notice\":\"The event that is emitted when new instances are deployed.\"},\"FeeCollectorUpdated(address)\":{\"notice\":\"Emitted when the fee collector is updated.\"},\"GovernanceUpdated(address)\":{\"notice\":\"Emitted when governance is transferred.\"},\"HyperdriveGovernanceUpdated(address)\":{\"notice\":\"Emitted when the Hyperdrive governance address is updated.\"},\"ImplementationUpdated(address)\":{\"notice\":\"Emitted when the Hyperdrive implementation is updated.\"},\"LinkerCodeHashUpdated(bytes32)\":{\"notice\":\"Emitted when the linker code hash is updated.\"},\"LinkerFactoryUpdated(address)\":{\"notice\":\"Emitted when the linker factory is updated.\"}},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Initializes the factory.\"},\"deployAndInitialize((address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),bytes32[],uint256,uint256)\":{\"notice\":\"This deploys and initializes a new ERC4626Hyperdrive instance.\"},\"feeCollector()\":{\"notice\":\"The fee collector used when new instances are deployed.\"},\"fees()\":{\"notice\":\"The fee parameters used when new instances are deployed.\"},\"getDefaultPausers()\":{\"notice\":\"Gets the default pausers.\"},\"getSweepTargets()\":{\"notice\":\"Gets the sweep targets.\"},\"governance()\":{\"notice\":\"The governance address that updates the factory's configuration.\"},\"hyperdriveDeployer()\":{\"notice\":\"The contract used to deploy new instances.\"},\"hyperdriveGovernance()\":{\"notice\":\"The governance address used when new instances are deployed.\"},\"isOfficial(address)\":{\"notice\":\"A mapping from deployed Hyperdrive instances to the version of the deployer that deployed them.\"},\"linkerCodeHash()\":{\"notice\":\"The linker code hash used when new instances are deployed.\"},\"linkerFactory()\":{\"notice\":\"The linker factory used when new instances are deployed.\"},\"updateDefaultPausers(address[])\":{\"notice\":\"Allows governance to change the default pausers.\"},\"updateFeeCollector(address)\":{\"notice\":\"Allows governance to change the fee collector address.\"},\"updateFees((uint256,uint256,uint256))\":{\"notice\":\"Allows governance to update the default fee schedule that will be used in new deployments.\"},\"updateGovernance(address)\":{\"notice\":\"Allows governance to transfer the governance role.\"},\"updateHyperdriveGovernance(address)\":{\"notice\":\"Allows governance to change the hyperdrive governance address\"},\"updateImplementation(address)\":{\"notice\":\"Allows governance to update the deployer contract.\"},\"updateLinkerCodeHash(bytes32)\":{\"notice\":\"Allows governance to change the linker code hash. This allows governance to update the implementation of the ERC20Forwarder.\"},\"updateLinkerFactory(address)\":{\"notice\":\"Allows governance to change the linker factory.\"},\"updateSweepTargets(address[])\":{\"notice\":\"Allows governance to change the sweep targets used in deployed instances.\"},\"versionCounter()\":{\"notice\":\"The number of times the factory's deployer has been updated.\"}},\"notice\":\"Deploys hyperdrive instances and initializes them. It also holds a registry of all deployed hyperdrive instances.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/src/factory/ERC4626HyperdriveFactory.sol\":\"ERC4626HyperdriveFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@aave/=lib/aave-v3-core/contracts/\",\":aave-v3-core/=lib/aave-v3-core/\",\":create3-factory/=lib/yield-daddy/lib/create3-factory/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":yield-daddy/=lib/yield-daddy/\"]},\"sources\":{\"contracts/src/HyperdriveDataProvider.sol\":{\"keccak256\":\"0x548a0d3b7b46f4e7f99745aa1b83ac1d264e6e82af61e6580a05335bd94bc39d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6505d7514910ff3a44932a42376f323f739204d6154bc4b997c60e5cbee050e5\",\"dweb:/ipfs/QmdKke5nXGZDxAcGDXFenJ6emxSUhE2QT8rdBZ8JhNpFaA\"]},\"contracts/src/HyperdriveStorage.sol\":{\"keccak256\":\"0xf02f44333981dfbf6c500bf979aab8cd7aee9731d103a6aafc247e09b90b76bc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6664cd66465073274f9c2c27fee39e1c64e8e21fff532e64cd3014800582b00a\",\"dweb:/ipfs/QmSGH1ixAUMu81yYf3pMFHo4uJxw6XgfnkBupjUSoFcdNY\"]},\"contracts/src/factory/ERC4626HyperdriveFactory.sol\":{\"keccak256\":\"0xa27700f8c837640247830835a7db53b96c7aa493861b46effae4d4e99430ee0a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8a8b27fb4deadab0be3a4eedcea74c3fad676f51a8ebb8a0ea4f2f61aaadb871\",\"dweb:/ipfs/QmZiWw6gmiFnrNrnqrxkJM6y4gLNLKc2CYQbTA2ZA2TnLP\"]},\"contracts/src/factory/HyperdriveFactory.sol\":{\"keccak256\":\"0x92862278de3e329a32c6f200088a183ecd257f1071eef6e8499a9ca86f93bdde\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9476f0cd7dc221cbc1373c59a3a0bd264784cf3985014ae560422e465c9142a1\",\"dweb:/ipfs/QmXEZf6YynAAvN2iodwNifooWSo2fRfFTRXnBwYS3pb5q2\"]},\"contracts/src/instances/ERC4626DataProvider.sol\":{\"keccak256\":\"0xff9052b6730f9f730426a45026a2bd0f0201b457c899f8faed0b4c69c6ee1985\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://88f763a766bf86163d7bf417737a3980a1ee4dbd7959bbbf4c7d60e7b59c6c37\",\"dweb:/ipfs/QmdqVv7iUpopKYcXLo97JBC5fjXnYUGSb1wcBdYYQCYmW9\"]},\"contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4642a027efffb3aa6cdc85e31796fb3b1bc4fff4316e6390874e6f4add37b86c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3720a6c1c427dcfcbdeeec15cbdb682115e44e0a9136af7e0ad9e5af2ea40672\",\"dweb:/ipfs/QmP4bmaHw8MfX9MQLhhgnVQ9U9BTQAR3e5cCCE9RcoeX7w\"]},\"contracts/src/interfaces/IERC4626.sol\":{\"keccak256\":\"0xaf48462596aa9c7544086c0a5e53adc7bf8f713662a5fb270ffb4e4db16e23cf\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b2e5e6d94edba7e97dce8b5e061d40955d39fa586579d170f66cbecdbd2348dc\",\"dweb:/ipfs/QmeUkSbHaBmCeZnmup5RujvxRAyhw1u9vpRRpzeuU2wiia\"]},\"contracts/src/interfaces/IHyperdrive.sol\":{\"keccak256\":\"0x3336dbc3128174594baa25c95f3be485aa61a77a06afbb75e2708987247a5bb5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e189558d4f78633d90ecdb3ff8d775109394a98cb18d19507642cb56c43dc1e\",\"dweb:/ipfs/QmZMVsor78To4nbXwLDBaZKD8m68PT53C9mxvR8iUkM5i5\"]},\"contracts/src/interfaces/IHyperdriveDeployer.sol\":{\"keccak256\":\"0x7f6184ad6c3b28650b6644e74d7fdf4af5854c6e80f813da468a496aeb8c6da0\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://ce31b67fc912729ee56d8b53abf699882ea44ddd4c62052dc1685c9694685587\",\"dweb:/ipfs/QmbUBE3V1ahsVKrKzHs8Ho5H4U1XVB182BsRDFgt4ZjLZB\"]},\"contracts/src/interfaces/IHyperdriveRead.sol\":{\"keccak256\":\"0x837939af4a9224c5f4ea564e9b33a5612442b7d7d50b7f8bb32be6bb3ce239b3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3bfebedcb31d2edf86a69f0dfbcc5aa7b96edc2d8197b4a4681a200cb6ffe993\",\"dweb:/ipfs/Qmeq4oAGxKv3mvRRWkqYBjfdozPkhi3MqBRFNnNkmAwCtt\"]},\"contracts/src/interfaces/IHyperdriveWrite.sol\":{\"keccak256\":\"0xe2ba8031ab98a81026010af00de9935b79ade6701dc486fd1c02d67f4eb81bf8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e6acf863128f355e6ad26130037797a08321054ac8e202274debf6730162467\",\"dweb:/ipfs/Qmbf6882o3a7mci1j4w2XJtUDfsJvECGF6Yz3PG8q4LQgk\"]},\"contracts/src/interfaces/IMultiToken.sol\":{\"keccak256\":\"0xe3d64871148bdae5a714107b8b1a55f39cd4ede601436d2777a165d20d768a1a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9ebc0bfda35e9b7299c43f0efff38012b8074fcca867b781c0cedeede10cf3d0\",\"dweb:/ipfs/QmbHRLezFhWavHakK5G26DB4ud5PueU6fNvZf3L3TwXnPb\"]},\"contracts/src/interfaces/IMultiTokenMetadata.sol\":{\"keccak256\":\"0xcdc60ba02194150741a78cb0c52c306f5f577c5c814c63e98a13d46c02d2d9cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8f5866cb2c8c4342dba88c0e4d78296fef0e170b18b3613c796c29dc31a5ca87\",\"dweb:/ipfs/QmZcoDTYhhYSB5ds3cNPJpdZTxrz6cF8M2vNVeuAcT8gw6\"]},\"contracts/src/interfaces/IMultiTokenRead.sol\":{\"keccak256\":\"0x2e55fa961123a8bb7284c8388af9bd1302a7153441ffe641804ea79021bdca05\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c7dc03bbab02976609dec59c201e5b57a2998d1c626cef58d7a9fa7c2b06b939\",\"dweb:/ipfs/QmSifWr9cVWaUEmyKpGFcgpKCYdoBYgWtQBLgemtwo4a7x\"]},\"contracts/src/interfaces/IMultiTokenWrite.sol\":{\"keccak256\":\"0xa5ba8812e06fb6d38e1872603c8b80321cfd2f96cecbe7b67b92cb33e93b3fc8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://73afa34919c7d457e925b4be83abb1b1ed2ed731a382ebffad95a3005c04bd5a\",\"dweb:/ipfs/QmauMxmgtYTS7RJQw1mS7Pwe5FUMDPHE2N1MBhFUjk6HPe\"]},\"contracts/src/libraries/AssetId.sol\":{\"keccak256\":\"0x82515c6d8fc8dbc940b0e40de0bfa584ade8a5a0f24ef14e352deced1e89a384\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://fa01b52b6e05d6c304ee938ab7181cacd6cfede09c5f6eca8f6d86b31e0fe806\",\"dweb:/ipfs/QmNVyKLPJnP71ADgTwvS9D2ME2xsPVwjD32yCnNdmvLmpT\"]},\"contracts/src/libraries/FixedPointMath.sol\":{\"keccak256\":\"0x0108762fdecfae06d7b8d76bb52b1a5757669cc2a4e5f3ad701499295ed635bd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a94cdbab2bdbb0212597f70cebea86fcf69be0702f6d6fe76571ee43992d7d6b\",\"dweb:/ipfs/QmXyncXgKixNzP7rgqoCA2dzehjPTAsEbtAKZGW6CQADFE\"]},\"contracts/src/libraries/HyperdriveMath.sol\":{\"keccak256\":\"0x81bccd15f87d6fb2df7fe455ab94b2f267b0cef1875890d89158f448bb7694b2\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e973fb36a335fa1b7993152f9b051bd52588b1624c3d76f9dd21d35fe45d5c75\",\"dweb:/ipfs/QmbYLW9GPe19dQVCYNdSwvcgqrUZtDRjPyYtF4QtMn49Zb\"]},\"contracts/src/libraries/SafeCast.sol\":{\"keccak256\":\"0x077e800ae4f47bda111e72f8c40d50a57b10a1c5bce81f2e83bb57f94752159f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8e9433729a73747a65ececae27a8f634300a4e02a66577f796f596e5894a4bb5\",\"dweb:/ipfs/QmT2fC2xaRoFuDBURAtcwqvpqXvw1AQybSgb4khVBzit2S\"]},\"contracts/src/libraries/YieldSpaceMath.sol\":{\"keccak256\":\"0xb8682a4823e01535b6bc73755f6304d0846c44526d882cefc0c3b04b807e2a04\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://836744182376d0cd9721e15334c3f972d77564586220b8db7b63737342b410ef\",\"dweb:/ipfs/QmVxEHgnVkDTNggxbC83wMzvDmsQaUq1vTbFosShjzgAmr\"]},\"contracts/src/token/MultiTokenDataProvider.sol\":{\"keccak256\":\"0x1b2f98b9d6feaf0fc13ac4010dee2d2f49ecd33bf75d0c5be7e3318a6df2620f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4230f69efbb31e8194a78fb3ef5e2a69d349fe6f8b8aa4cf6b280484f3653cef\",\"dweb:/ipfs/QmScBP66WMXxXh28ScmU6SgSCWYhsRQHpZ755NyxTfCJoV\"]},\"contracts/src/token/MultiTokenStorage.sol\":{\"keccak256\":\"0x97a22d11197f185d6f17ff5ada60665b27af265c23b208f20004e22b26d7b7e8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://62f950f46f3de598776e8e8201a0d35ec51473cc0ea754be5c9e686078ebb3d6\",\"dweb:/ipfs/QmaKpZETx9zCV46XwcqvXUr7f8t2CPo1Tim2umTDwsk2bj\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/solmate/src/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xb282dd78aa7375d6b200b9a5d8dd214b2e5df1004f8217a4b4c2b07f0c5bfd01\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://5fca62eb8d3dbd2b3b7e4bb051f6da16f4d0ff9cee61c39cebb80f031f6a8800\",\"dweb:/ipfs/QmbrsXPK91iBFwHKwJs2HLRud2KzMoBDRiWYMUtyV5H57j\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.19+commit.7dd6d404" @@ -1840,10 +1840,10 @@ "license": "Apache-2.0" }, "contracts/src/libraries/HyperdriveMath.sol": { - "keccak256": "0x9acd606f849bec2b31ee37bbee4c3f3df02aef24491f01c4a965bca21dde3c4e", + "keccak256": "0x81bccd15f87d6fb2df7fe455ab94b2f267b0cef1875890d89158f448bb7694b2", "urls": [ - "bzz-raw://7000734fef6247718a99ca8bc902e4452fbc8445f09969521ac7330256e64518", - "dweb:/ipfs/QmSFp3AMhxcKexKPzLn6rJu9iG8qUCA41pNBAW7C4dhNaa" + "bzz-raw://e973fb36a335fa1b7993152f9b051bd52588b1624c3d76f9dd21d35fe45d5c75", + "dweb:/ipfs/QmbYLW9GPe19dQVCYNdSwvcgqrUZtDRjPyYtF4QtMn49Zb" ], "license": "Apache-2.0" }, @@ -1924,35 +1924,35 @@ }, "ast": { "absolutePath": "contracts/src/factory/ERC4626HyperdriveFactory.sol", - "id": 5267, + "id": 5270, "exportedSymbols": { "ERC4626DataProvider": [ - 6016 + 6019 ], "ERC4626HyperdriveFactory": [ - 5266 + 5269 ], "HyperdriveFactory": [ - 5912 + 5915 ], "IERC20": [ - 6458 + 6461 ], "IERC4626": [ - 6683 + 6627 ], "IHyperdrive": [ - 7070 + 7014 ], "IHyperdriveDeployer": [ - 7094 + 7038 ] }, "nodeType": "SourceUnit", "src": "39:4460:10", "nodes": [ { - "id": 5106, + "id": 5109, "nodeType": "PragmaDirective", "src": "39:23:10", "nodes": [], @@ -1963,23 +1963,23 @@ ] }, { - "id": 5108, + "id": 5111, "nodeType": "ImportDirective", "src": "64:75:10", "nodes": [], "absolutePath": "contracts/src/instances/ERC4626DataProvider.sol", "file": "../instances/ERC4626DataProvider.sol", "nameLocation": "-1:-1:-1", - "scope": 5267, - "sourceUnit": 6017, + "scope": 5270, + "sourceUnit": 6020, "symbolAliases": [ { "foreign": { - "id": 5107, + "id": 5110, "name": "ERC4626DataProvider", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6016, + "referencedDeclaration": 6019, "src": "73:19:10", "typeDescriptions": {} }, @@ -1989,23 +1989,23 @@ "unitAlias": "" }, { - "id": 5110, + "id": 5113, "nodeType": "ImportDirective", "src": "140:50:10", "nodes": [], "absolutePath": "contracts/src/interfaces/IERC20.sol", "file": "../interfaces/IERC20.sol", "nameLocation": "-1:-1:-1", - "scope": 5267, - "sourceUnit": 6459, + "scope": 5270, + "sourceUnit": 6462, "symbolAliases": [ { "foreign": { - "id": 5109, + "id": 5112, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6458, + "referencedDeclaration": 6461, "src": "149:6:10", "typeDescriptions": {} }, @@ -2015,23 +2015,23 @@ "unitAlias": "" }, { - "id": 5112, + "id": 5115, "nodeType": "ImportDirective", "src": "191:54:10", "nodes": [], "absolutePath": "contracts/src/interfaces/IERC4626.sol", "file": "../interfaces/IERC4626.sol", "nameLocation": "-1:-1:-1", - "scope": 5267, - "sourceUnit": 6684, + "scope": 5270, + "sourceUnit": 6628, "symbolAliases": [ { "foreign": { - "id": 5111, + "id": 5114, "name": "IERC4626", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6683, + "referencedDeclaration": 6627, "src": "200:8:10", "typeDescriptions": {} }, @@ -2041,23 +2041,23 @@ "unitAlias": "" }, { - "id": 5114, + "id": 5117, "nodeType": "ImportDirective", "src": "246:60:10", "nodes": [], "absolutePath": "contracts/src/interfaces/IHyperdrive.sol", "file": "../interfaces/IHyperdrive.sol", "nameLocation": "-1:-1:-1", - "scope": 5267, - "sourceUnit": 7071, + "scope": 5270, + "sourceUnit": 7015, "symbolAliases": [ { "foreign": { - "id": 5113, + "id": 5116, "name": "IHyperdrive", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7070, + "referencedDeclaration": 7014, "src": "255:11:10", "typeDescriptions": {} }, @@ -2067,23 +2067,23 @@ "unitAlias": "" }, { - "id": 5116, + "id": 5119, "nodeType": "ImportDirective", "src": "307:76:10", "nodes": [], "absolutePath": "contracts/src/interfaces/IHyperdriveDeployer.sol", "file": "../interfaces/IHyperdriveDeployer.sol", "nameLocation": "-1:-1:-1", - "scope": 5267, - "sourceUnit": 7095, + "scope": 5270, + "sourceUnit": 7039, "symbolAliases": [ { "foreign": { - "id": 5115, + "id": 5118, "name": "IHyperdriveDeployer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7094, + "referencedDeclaration": 7038, "src": "316:19:10", "typeDescriptions": {} }, @@ -2093,23 +2093,23 @@ "unitAlias": "" }, { - "id": 5118, + "id": 5121, "nodeType": "ImportDirective", "src": "384:60:10", "nodes": [], "absolutePath": "contracts/src/factory/HyperdriveFactory.sol", "file": "./HyperdriveFactory.sol", "nameLocation": "-1:-1:-1", - "scope": 5267, - "sourceUnit": 5913, + "scope": 5270, + "sourceUnit": 5916, "symbolAliases": [ { "foreign": { - "id": 5117, + "id": 5120, "name": "HyperdriveFactory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5912, + "referencedDeclaration": 5915, "src": "393:17:10", "typeDescriptions": {} }, @@ -2119,18 +2119,18 @@ "unitAlias": "" }, { - "id": 5266, + "id": 5269, "nodeType": "ContractDefinition", "src": "861:3637:10", "nodes": [ { - "id": 5125, + "id": 5128, "nodeType": "VariableDeclaration", "src": "989:32:10", "nodes": [], "constant": false, "documentation": { - "id": 5122, + "id": 5125, "nodeType": "StructuredDocumentation", "src": "922:62:10", "text": "@dev The address of the ERC4626 pool used in this factory." @@ -2138,43 +2138,43 @@ "mutability": "immutable", "name": "pool", "nameLocation": "1017:4:10", - "scope": 5266, + "scope": 5269, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6683", + "typeIdentifier": "t_contract$_IERC4626_$6627", "typeString": "contract IERC4626" }, "typeName": { - "id": 5124, + "id": 5127, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 5123, + "id": 5126, "name": "IERC4626", "nameLocations": [ "989:8:10" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6683, + "referencedDeclaration": 6627, "src": "989:8:10" }, - "referencedDeclaration": 6683, + "referencedDeclaration": 6627, "src": "989:8:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6683", + "typeIdentifier": "t_contract$_IERC4626_$6627", "typeString": "contract IERC4626" } }, "visibility": "internal" }, { - "id": 5129, + "id": 5132, "nodeType": "VariableDeclaration", "src": "1229:32:10", "nodes": [], "constant": false, "documentation": { - "id": 5126, + "id": 5129, "nodeType": "StructuredDocumentation", "src": "1028:196:10", "text": "@notice The sweep targets used in deployed instances. This specifies\n the addresses that the fee collector can sweep to collect\n incentives and redistribute them." @@ -2182,7 +2182,7 @@ "mutability": "mutable", "name": "_sweepTargets", "nameLocation": "1248:13:10", - "scope": 5266, + "scope": 5269, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2191,7 +2191,7 @@ }, "typeName": { "baseType": { - "id": 5127, + "id": 5130, "name": "address", "nodeType": "ElementaryTypeName", "src": "1229:7:10", @@ -2201,7 +2201,7 @@ "typeString": "address" } }, - "id": 5128, + "id": 5131, "nodeType": "ArrayTypeName", "src": "1229:9:10", "typeDescriptions": { @@ -2212,72 +2212,72 @@ "visibility": "internal" }, { - "id": 5164, + "id": 5167, "nodeType": "FunctionDefinition", "src": "1714:539:10", "nodes": [], "body": { - "id": 5163, + "id": 5166, "nodeType": "Block", "src": "2094:159:10", "nodes": [], "statements": [ { "expression": { - "id": 5157, + "id": 5160, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 5155, + "id": 5158, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5125, + "referencedDeclaration": 5128, "src": "2144:4:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6683", + "typeIdentifier": "t_contract$_IERC4626_$6627", "typeString": "contract IERC4626" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 5156, + "id": 5159, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5143, + "referencedDeclaration": 5146, "src": "2151:5:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6683", + "typeIdentifier": "t_contract$_IERC4626_$6627", "typeString": "contract IERC4626" } }, "src": "2144:12:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6683", + "typeIdentifier": "t_contract$_IERC4626_$6627", "typeString": "contract IERC4626" } }, - "id": 5158, + "id": 5161, "nodeType": "ExpressionStatement", "src": "2144:12:10" }, { "expression": { - "id": 5161, + "id": 5164, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 5159, + "id": 5162, "name": "_sweepTargets", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5129, + "referencedDeclaration": 5132, "src": "2216:13:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", @@ -2287,11 +2287,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 5160, + "id": 5163, "name": "_sweepTargets_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5146, + "referencedDeclaration": 5149, "src": "2232:14:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", @@ -2304,14 +2304,14 @@ "typeString": "address[] storage ref" } }, - "id": 5162, + "id": 5165, "nodeType": "ExpressionStatement", "src": "2216:30:10" } ] }, "documentation": { - "id": 5130, + "id": 5133, "nodeType": "StructuredDocumentation", "src": "1268:441:10", "text": "@notice Initializes the factory.\n @param _factoryConfig The variables that configure the factory;\n @param _deployer The contract that deploys new hyperdrive instances.\n @param _linkerFactory The linker factory.\n @param _linkerCodeHash The hash of the linker contract's constructor code.\n @param _pool The ERC4626 pool.\n @param _sweepTargets_ The addresses that can be swept by the fee collector." @@ -2322,35 +2322,35 @@ { "arguments": [ { - "id": 5149, + "id": 5152, "name": "_factoryConfig", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5133, + "referencedDeclaration": 5136, "src": "1985:14:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryConfig_$5391_memory_ptr", + "typeIdentifier": "t_struct$_FactoryConfig_$5394_memory_ptr", "typeString": "struct HyperdriveFactory.FactoryConfig memory" } }, { - "id": 5150, + "id": 5153, "name": "_deployer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5136, + "referencedDeclaration": 5139, "src": "2013:9:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IHyperdriveDeployer_$7094", + "typeIdentifier": "t_contract$_IHyperdriveDeployer_$7038", "typeString": "contract IHyperdriveDeployer" } }, { - "id": 5151, + "id": 5154, "name": "_linkerFactory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5138, + "referencedDeclaration": 5141, "src": "2036:14:10", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2358,11 +2358,11 @@ } }, { - "id": 5152, + "id": 5155, "name": "_linkerCodeHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5140, + "referencedDeclaration": 5143, "src": "2064:15:10", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -2370,16 +2370,16 @@ } } ], - "id": 5153, + "id": 5156, "kind": "baseConstructorSpecifier", "modifierName": { - "id": 5148, + "id": 5151, "name": "HyperdriveFactory", "nameLocations": [ "1954:17:10" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 5912, + "referencedDeclaration": 5915, "src": "1954:17:10" }, "nodeType": "ModifierInvocation", @@ -2389,41 +2389,41 @@ "name": "", "nameLocation": "-1:-1:-1", "parameters": { - "id": 5147, + "id": 5150, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 5133, + "id": 5136, "mutability": "mutable", "name": "_factoryConfig", "nameLocation": "1756:14:10", "nodeType": "VariableDeclaration", - "scope": 5164, + "scope": 5167, "src": "1735:35:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryConfig_$5391_memory_ptr", + "typeIdentifier": "t_struct$_FactoryConfig_$5394_memory_ptr", "typeString": "struct HyperdriveFactory.FactoryConfig" }, "typeName": { - "id": 5132, + "id": 5135, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 5131, + "id": 5134, "name": "FactoryConfig", "nameLocations": [ "1735:13:10" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 5391, + "referencedDeclaration": 5394, "src": "1735:13:10" }, - "referencedDeclaration": 5391, + "referencedDeclaration": 5394, "src": "1735:13:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryConfig_$5391_storage_ptr", + "typeIdentifier": "t_struct$_FactoryConfig_$5394_storage_ptr", "typeString": "struct HyperdriveFactory.FactoryConfig" } }, @@ -2431,36 +2431,36 @@ }, { "constant": false, - "id": 5136, + "id": 5139, "mutability": "mutable", "name": "_deployer", "nameLocation": "1800:9:10", "nodeType": "VariableDeclaration", - "scope": 5164, + "scope": 5167, "src": "1780:29:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IHyperdriveDeployer_$7094", + "typeIdentifier": "t_contract$_IHyperdriveDeployer_$7038", "typeString": "contract IHyperdriveDeployer" }, "typeName": { - "id": 5135, + "id": 5138, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 5134, + "id": 5137, "name": "IHyperdriveDeployer", "nameLocations": [ "1780:19:10" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7094, + "referencedDeclaration": 7038, "src": "1780:19:10" }, - "referencedDeclaration": 7094, + "referencedDeclaration": 7038, "src": "1780:19:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IHyperdriveDeployer_$7094", + "typeIdentifier": "t_contract$_IHyperdriveDeployer_$7038", "typeString": "contract IHyperdriveDeployer" } }, @@ -2468,12 +2468,12 @@ }, { "constant": false, - "id": 5138, + "id": 5141, "mutability": "mutable", "name": "_linkerFactory", "nameLocation": "1827:14:10", "nodeType": "VariableDeclaration", - "scope": 5164, + "scope": 5167, "src": "1819:22:10", "stateVariable": false, "storageLocation": "default", @@ -2482,7 +2482,7 @@ "typeString": "address" }, "typeName": { - "id": 5137, + "id": 5140, "name": "address", "nodeType": "ElementaryTypeName", "src": "1819:7:10", @@ -2496,12 +2496,12 @@ }, { "constant": false, - "id": 5140, + "id": 5143, "mutability": "mutable", "name": "_linkerCodeHash", "nameLocation": "1859:15:10", "nodeType": "VariableDeclaration", - "scope": 5164, + "scope": 5167, "src": "1851:23:10", "stateVariable": false, "storageLocation": "default", @@ -2510,7 +2510,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 5139, + "id": 5142, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1851:7:10", @@ -2523,36 +2523,36 @@ }, { "constant": false, - "id": 5143, + "id": 5146, "mutability": "mutable", "name": "_pool", "nameLocation": "1893:5:10", "nodeType": "VariableDeclaration", - "scope": 5164, + "scope": 5167, "src": "1884:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6683", + "typeIdentifier": "t_contract$_IERC4626_$6627", "typeString": "contract IERC4626" }, "typeName": { - "id": 5142, + "id": 5145, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 5141, + "id": 5144, "name": "IERC4626", "nameLocations": [ "1884:8:10" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6683, + "referencedDeclaration": 6627, "src": "1884:8:10" }, - "referencedDeclaration": 6683, + "referencedDeclaration": 6627, "src": "1884:8:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6683", + "typeIdentifier": "t_contract$_IERC4626_$6627", "typeString": "contract IERC4626" } }, @@ -2560,12 +2560,12 @@ }, { "constant": false, - "id": 5146, + "id": 5149, "mutability": "mutable", "name": "_sweepTargets_", "nameLocation": "1925:14:10", "nodeType": "VariableDeclaration", - "scope": 5164, + "scope": 5167, "src": "1908:31:10", "stateVariable": false, "storageLocation": "memory", @@ -2575,7 +2575,7 @@ }, "typeName": { "baseType": { - "id": 5144, + "id": 5147, "name": "address", "nodeType": "ElementaryTypeName", "src": "1908:7:10", @@ -2585,7 +2585,7 @@ "typeString": "address" } }, - "id": 5145, + "id": 5148, "nodeType": "ArrayTypeName", "src": "1908:9:10", "typeDescriptions": { @@ -2599,40 +2599,40 @@ "src": "1725:220:10" }, "returnParameters": { - "id": 5154, + "id": 5157, "nodeType": "ParameterList", "parameters": [], "src": "2094:0:10" }, - "scope": 5266, + "scope": 5269, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 5178, + "id": 5181, "nodeType": "FunctionDefinition", "src": "2418:148:10", "nodes": [], "body": { - "id": 5177, + "id": 5180, "nodeType": "Block", "src": "2519:47:10", "nodes": [], "statements": [ { "expression": { - "id": 5175, + "id": 5178, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 5173, + "id": 5176, "name": "_sweepTargets", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5129, + "referencedDeclaration": 5132, "src": "2529:13:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", @@ -2642,11 +2642,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 5174, + "id": 5177, "name": "_sweepTargets_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5168, + "referencedDeclaration": 5171, "src": "2545:14:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", @@ -2659,14 +2659,14 @@ "typeString": "address[] storage ref" } }, - "id": 5176, + "id": 5179, "nodeType": "ExpressionStatement", "src": "2529:30:10" } ] }, "documentation": { - "id": 5165, + "id": 5168, "nodeType": "StructuredDocumentation", "src": "2259:154:10", "text": "@notice Allows governance to change the sweep targets used in deployed\n instances.\n @param _sweepTargets_ The new sweep targets." @@ -2676,16 +2676,16 @@ "kind": "function", "modifiers": [ { - "id": 5171, + "id": 5174, "kind": "modifierInvocation", "modifierName": { - "id": 5170, + "id": 5173, "name": "onlyGovernance", "nameLocations": [ "2504:14:10" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 5521, + "referencedDeclaration": 5524, "src": "2504:14:10" }, "nodeType": "ModifierInvocation", @@ -2695,17 +2695,17 @@ "name": "updateSweepTargets", "nameLocation": "2427:18:10", "parameters": { - "id": 5169, + "id": 5172, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 5168, + "id": 5171, "mutability": "mutable", "name": "_sweepTargets_", "nameLocation": "2474:14:10", "nodeType": "VariableDeclaration", - "scope": 5178, + "scope": 5181, "src": "2455:33:10", "stateVariable": false, "storageLocation": "calldata", @@ -2715,7 +2715,7 @@ }, "typeName": { "baseType": { - "id": 5166, + "id": 5169, "name": "address", "nodeType": "ElementaryTypeName", "src": "2455:7:10", @@ -2725,7 +2725,7 @@ "typeString": "address" } }, - "id": 5167, + "id": 5170, "nodeType": "ArrayTypeName", "src": "2455:9:10", "typeDescriptions": { @@ -2739,40 +2739,40 @@ "src": "2445:49:10" }, "returnParameters": { - "id": 5172, + "id": 5175, "nodeType": "ParameterList", "parameters": [], "src": "2519:0:10" }, - "scope": 5266, + "scope": 5269, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 5224, + "id": 5227, "nodeType": "FunctionDefinition", "src": "2795:751:10", "nodes": [], "body": { - "id": 5223, + "id": 5226, "nodeType": "Block", "src": "3002:544:10", "nodes": [], "statements": [ { "assignments": [ - 5200 + 5203 ], "declarations": [ { "constant": false, - "id": 5200, + "id": 5203, "mutability": "mutable", "name": "sweepTargets_", "nameLocation": "3160:13:10", "nodeType": "VariableDeclaration", - "scope": 5223, + "scope": 5226, "src": "3143:30:10", "stateVariable": false, "storageLocation": "memory", @@ -2782,7 +2782,7 @@ }, "typeName": { "baseType": { - "id": 5198, + "id": 5201, "name": "address", "nodeType": "ElementaryTypeName", "src": "3143:7:10", @@ -2791,7 +2791,7 @@ "typeString": "address" } }, - "id": 5199, + "id": 5202, "nodeType": "ArrayTypeName", "src": "3143:9:10", "typeDescriptions": { @@ -2802,13 +2802,13 @@ "visibility": "internal" } ], - "id": 5202, + "id": 5205, "initialValue": { - "id": 5201, + "id": 5204, "name": "_sweepTargets", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5129, + "referencedDeclaration": 5132, "src": "3176:13:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", @@ -2820,17 +2820,17 @@ }, { "assignments": [ - 5207 + 5210 ], "declarations": [ { "constant": false, - "id": 5207, + "id": 5210, "mutability": "mutable", "name": "extraData", "nameLocation": "3216:9:10", "nodeType": "VariableDeclaration", - "scope": 5223, + "scope": 5226, "src": "3199:26:10", "stateVariable": false, "storageLocation": "memory", @@ -2840,7 +2840,7 @@ }, "typeName": { "baseType": { - "id": 5205, + "id": 5208, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3199:7:10", @@ -2849,7 +2849,7 @@ "typeString": "bytes32" } }, - "id": 5206, + "id": 5209, "nodeType": "ArrayTypeName", "src": "3199:9:10", "typeDescriptions": { @@ -2860,7 +2860,7 @@ "visibility": "internal" } ], - "id": 5208, + "id": 5211, "nodeType": "VariableDeclarationStatement", "src": "3199:26:10" }, @@ -2890,14 +2890,14 @@ "evmVersion": "paris", "externalReferences": [ { - "declaration": 5207, + "declaration": 5210, "isOffset": false, "isSlot": false, "src": "3274:9:10", "valueSize": 1 }, { - "declaration": 5200, + "declaration": 5203, "isOffset": false, "isSlot": false, "src": "3287:13:10", @@ -2907,74 +2907,74 @@ "flags": [ "memory-safe" ], - "id": 5209, + "id": 5212, "nodeType": "InlineAssembly", "src": "3235:75:10" }, { "assignments": [ - 5212 + 5215 ], "declarations": [ { "constant": false, - "id": 5212, + "id": 5215, "mutability": "mutable", "name": "hyperdrive", "nameLocation": "3331:10:10", "nodeType": "VariableDeclaration", - "scope": 5223, + "scope": 5226, "src": "3319:22:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IHyperdrive_$7070", + "typeIdentifier": "t_contract$_IHyperdrive_$7014", "typeString": "contract IHyperdrive" }, "typeName": { - "id": 5211, + "id": 5214, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 5210, + "id": 5213, "name": "IHyperdrive", "nameLocations": [ "3319:11:10" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7070, + "referencedDeclaration": 7014, "src": "3319:11:10" }, - "referencedDeclaration": 7070, + "referencedDeclaration": 7014, "src": "3319:11:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IHyperdrive_$7070", + "typeIdentifier": "t_contract$_IHyperdrive_$7014", "typeString": "contract IHyperdrive" } }, "visibility": "internal" } ], - "id": 5220, + "id": 5223, "initialValue": { "arguments": [ { - "id": 5215, + "id": 5218, "name": "_config", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5182, + "referencedDeclaration": 5185, "src": "3383:7:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_PoolConfig_$6891_memory_ptr", + "typeIdentifier": "t_struct$_PoolConfig_$6835_memory_ptr", "typeString": "struct IHyperdrive.PoolConfig memory" } }, { - "id": 5216, + "id": 5219, "name": "extraData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5207, + "referencedDeclaration": 5210, "src": "3404:9:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", @@ -2982,11 +2982,11 @@ } }, { - "id": 5217, + "id": 5220, "name": "_contribution", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5187, + "referencedDeclaration": 5190, "src": "3427:13:10", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2994,11 +2994,11 @@ } }, { - "id": 5218, + "id": 5221, "name": "_apr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5189, + "referencedDeclaration": 5192, "src": "3454:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3009,7 +3009,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_PoolConfig_$6891_memory_ptr", + "typeIdentifier": "t_struct$_PoolConfig_$6835_memory_ptr", "typeString": "struct IHyperdrive.PoolConfig memory" }, { @@ -3026,18 +3026,18 @@ } ], "expression": { - "id": 5213, + "id": 5216, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, "src": "3344:5:10", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_ERC4626HyperdriveFactory_$5266_$", + "typeIdentifier": "t_type$_t_super$_ERC4626HyperdriveFactory_$5269_$", "typeString": "type(contract super ERC4626HyperdriveFactory)" } }, - "id": 5214, + "id": 5217, "isConstant": false, "isLValue": false, "isPure": false, @@ -3045,14 +3045,14 @@ "memberLocation": "3350:19:10", "memberName": "deployAndInitialize", "nodeType": "MemberAccess", - "referencedDeclaration": 5885, + "referencedDeclaration": 5888, "src": "3344:25:10", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PoolConfig_$6891_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_contract$_IHyperdrive_$7070_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PoolConfig_$6835_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_contract$_IHyperdrive_$7014_$", "typeString": "function (struct IHyperdrive.PoolConfig memory,bytes32[] memory,uint256,uint256) returns (contract IHyperdrive)" } }, - "id": 5219, + "id": 5222, "isConstant": false, "isLValue": false, "isPure": false, @@ -3064,7 +3064,7 @@ "src": "3344:124:10", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_IHyperdrive_$7070", + "typeIdentifier": "t_contract$_IHyperdrive_$7014", "typeString": "contract IHyperdrive" } }, @@ -3073,29 +3073,29 @@ }, { "expression": { - "id": 5221, + "id": 5224, "name": "hyperdrive", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5212, + "referencedDeclaration": 5215, "src": "3529:10:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IHyperdrive_$7070", + "typeIdentifier": "t_contract$_IHyperdrive_$7014", "typeString": "contract IHyperdrive" } }, - "functionReturnParameters": 5195, - "id": 5222, + "functionReturnParameters": 5198, + "id": 5225, "nodeType": "Return", "src": "3522:17:10" } ] }, "baseFunctions": [ - 5885 + 5888 ], "documentation": { - "id": 5179, + "id": 5182, "nodeType": "StructuredDocumentation", "src": "2572:218:10", "text": "@notice This deploys and initializes a new ERC4626Hyperdrive instance.\n @param _config The pool configuration.\n @param _contribution The contribution amount.\n @param _apr The initial spot rate." @@ -3107,48 +3107,48 @@ "name": "deployAndInitialize", "nameLocation": "2804:19:10", "overrides": { - "id": 5191, + "id": 5194, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2971:8:10" }, "parameters": { - "id": 5190, + "id": 5193, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 5182, + "id": 5185, "mutability": "mutable", "name": "_config", "nameLocation": "2863:7:10", "nodeType": "VariableDeclaration", - "scope": 5224, + "scope": 5227, "src": "2833:37:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_PoolConfig_$6891_memory_ptr", + "typeIdentifier": "t_struct$_PoolConfig_$6835_memory_ptr", "typeString": "struct IHyperdrive.PoolConfig" }, "typeName": { - "id": 5181, + "id": 5184, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 5180, + "id": 5183, "name": "IHyperdrive.PoolConfig", "nameLocations": [ "2833:11:10", "2845:10:10" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6891, + "referencedDeclaration": 6835, "src": "2833:22:10" }, - "referencedDeclaration": 6891, + "referencedDeclaration": 6835, "src": "2833:22:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_PoolConfig_$6891_storage_ptr", + "typeIdentifier": "t_struct$_PoolConfig_$6835_storage_ptr", "typeString": "struct IHyperdrive.PoolConfig" } }, @@ -3156,12 +3156,12 @@ }, { "constant": false, - "id": 5185, + "id": 5188, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 5224, + "scope": 5227, "src": "2880:16:10", "stateVariable": false, "storageLocation": "memory", @@ -3171,7 +3171,7 @@ }, "typeName": { "baseType": { - "id": 5183, + "id": 5186, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2880:7:10", @@ -3180,7 +3180,7 @@ "typeString": "bytes32" } }, - "id": 5184, + "id": 5187, "nodeType": "ArrayTypeName", "src": "2880:9:10", "typeDescriptions": { @@ -3192,12 +3192,12 @@ }, { "constant": false, - "id": 5187, + "id": 5190, "mutability": "mutable", "name": "_contribution", "nameLocation": "2914:13:10", "nodeType": "VariableDeclaration", - "scope": 5224, + "scope": 5227, "src": "2906:21:10", "stateVariable": false, "storageLocation": "default", @@ -3206,7 +3206,7 @@ "typeString": "uint256" }, "typeName": { - "id": 5186, + "id": 5189, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2906:7:10", @@ -3219,12 +3219,12 @@ }, { "constant": false, - "id": 5189, + "id": 5192, "mutability": "mutable", "name": "_apr", "nameLocation": "2945:4:10", "nodeType": "VariableDeclaration", - "scope": 5224, + "scope": 5227, "src": "2937:12:10", "stateVariable": false, "storageLocation": "default", @@ -3233,7 +3233,7 @@ "typeString": "uint256" }, "typeName": { - "id": 5188, + "id": 5191, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2937:7:10", @@ -3248,41 +3248,41 @@ "src": "2823:132:10" }, "returnParameters": { - "id": 5195, + "id": 5198, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 5194, + "id": 5197, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 5224, + "scope": 5227, "src": "2989:11:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IHyperdrive_$7070", + "typeIdentifier": "t_contract$_IHyperdrive_$7014", "typeString": "contract IHyperdrive" }, "typeName": { - "id": 5193, + "id": 5196, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 5192, + "id": 5195, "name": "IHyperdrive", "nameLocations": [ "2989:11:10" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7070, + "referencedDeclaration": 7014, "src": "2989:11:10" }, - "referencedDeclaration": 7070, + "referencedDeclaration": 7014, "src": "2989:11:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IHyperdrive_$7070", + "typeIdentifier": "t_contract$_IHyperdrive_$7014", "typeString": "contract IHyperdrive" } }, @@ -3291,18 +3291,18 @@ ], "src": "2988:13:10" }, - "scope": 5266, + "scope": 5269, "stateMutability": "payable", "virtual": false, "visibility": "public" }, { - "id": 5255, + "id": 5258, "nodeType": "FunctionDefinition", "src": "3846:464:10", "nodes": [], "body": { - "id": 5254, + "id": 5257, "nodeType": "Block", "src": "4054:256:10", "nodes": [], @@ -3315,23 +3315,23 @@ { "arguments": [ { - "id": 5246, + "id": 5249, "name": "_config", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5228, + "referencedDeclaration": 5231, "src": "4155:7:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_PoolConfig_$6891_memory_ptr", + "typeIdentifier": "t_struct$_PoolConfig_$6835_memory_ptr", "typeString": "struct IHyperdrive.PoolConfig memory" } }, { - "id": 5247, + "id": 5250, "name": "_linkerCodeHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5233, + "referencedDeclaration": 5236, "src": "4184:15:10", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -3339,11 +3339,11 @@ } }, { - "id": 5248, + "id": 5251, "name": "_linkerFactory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5235, + "referencedDeclaration": 5238, "src": "4221:14:10", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3351,14 +3351,14 @@ } }, { - "id": 5249, + "id": 5252, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5125, + "referencedDeclaration": 5128, "src": "4257:4:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6683", + "typeIdentifier": "t_contract$_IERC4626_$6627", "typeString": "contract IERC4626" } } @@ -3366,7 +3366,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_PoolConfig_$6891_memory_ptr", + "typeIdentifier": "t_struct$_PoolConfig_$6835_memory_ptr", "typeString": "struct IHyperdrive.PoolConfig memory" }, { @@ -3378,11 +3378,11 @@ "typeString": "address" }, { - "typeIdentifier": "t_contract$_IERC4626_$6683", + "typeIdentifier": "t_contract$_IERC4626_$6627", "typeString": "contract IERC4626" } ], - "id": 5245, + "id": 5248, "isConstant": false, "isLValue": false, "isPure": false, @@ -3390,31 +3390,31 @@ "nodeType": "NewExpression", "src": "4110:23:10", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_struct$_PoolConfig_$6891_memory_ptr_$_t_bytes32_$_t_address_$_t_contract$_IERC4626_$6683_$returns$_t_contract$_ERC4626DataProvider_$6016_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_struct$_PoolConfig_$6835_memory_ptr_$_t_bytes32_$_t_address_$_t_contract$_IERC4626_$6627_$returns$_t_contract$_ERC4626DataProvider_$6019_$", "typeString": "function (struct IHyperdrive.PoolConfig memory,bytes32,address,contract IERC4626) returns (contract ERC4626DataProvider)" }, "typeName": { - "id": 5244, + "id": 5247, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 5243, + "id": 5246, "name": "ERC4626DataProvider", "nameLocations": [ "4114:19:10" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6016, + "referencedDeclaration": 6019, "src": "4114:19:10" }, - "referencedDeclaration": 6016, + "referencedDeclaration": 6019, "src": "4114:19:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC4626DataProvider_$6016", + "typeIdentifier": "t_contract$_ERC4626DataProvider_$6019", "typeString": "contract ERC4626DataProvider" } } }, - "id": 5250, + "id": 5253, "isConstant": false, "isLValue": false, "isPure": false, @@ -3426,7 +3426,7 @@ "src": "4110:169:10", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC4626DataProvider_$6016", + "typeIdentifier": "t_contract$_ERC4626DataProvider_$6019", "typeString": "contract ERC4626DataProvider" } } @@ -3434,11 +3434,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ERC4626DataProvider_$6016", + "typeIdentifier": "t_contract$_ERC4626DataProvider_$6019", "typeString": "contract ERC4626DataProvider" } ], - "id": 5242, + "id": 5245, "isConstant": false, "isLValue": false, "isPure": true, @@ -3450,14 +3450,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 5241, + "id": 5244, "name": "address", "nodeType": "ElementaryTypeName", "src": "4085:7:10", "typeDescriptions": {} } }, - "id": 5251, + "id": 5254, "isConstant": false, "isLValue": false, "isPure": false, @@ -3474,7 +3474,7 @@ } } ], - "id": 5252, + "id": 5255, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -3487,18 +3487,18 @@ "typeString": "address" } }, - "functionReturnParameters": 5240, - "id": 5253, + "functionReturnParameters": 5243, + "id": 5256, "nodeType": "Return", "src": "4064:239:10" } ] }, "baseFunctions": [ - 5901 + 5904 ], "documentation": { - "id": 5225, + "id": 5228, "nodeType": "StructuredDocumentation", "src": "3552:289:10", "text": "@notice This deploys a data provider for the ERC4626 hyperdrive instance\n @param _config The configuration of the pool we are deploying\n @param _linkerCodeHash The code hash from the multitoken deployer\n @param _linkerFactory The factory of the multitoken deployer" @@ -3509,48 +3509,48 @@ "name": "deployDataProvider", "nameLocation": "3855:18:10", "overrides": { - "id": 5237, + "id": 5240, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4027:8:10" }, "parameters": { - "id": 5236, + "id": 5239, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 5228, + "id": 5231, "mutability": "mutable", "name": "_config", "nameLocation": "3913:7:10", "nodeType": "VariableDeclaration", - "scope": 5255, + "scope": 5258, "src": "3883:37:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_PoolConfig_$6891_memory_ptr", + "typeIdentifier": "t_struct$_PoolConfig_$6835_memory_ptr", "typeString": "struct IHyperdrive.PoolConfig" }, "typeName": { - "id": 5227, + "id": 5230, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 5226, + "id": 5229, "name": "IHyperdrive.PoolConfig", "nameLocations": [ "3883:11:10", "3895:10:10" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6891, + "referencedDeclaration": 6835, "src": "3883:22:10" }, - "referencedDeclaration": 6891, + "referencedDeclaration": 6835, "src": "3883:22:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_PoolConfig_$6891_storage_ptr", + "typeIdentifier": "t_struct$_PoolConfig_$6835_storage_ptr", "typeString": "struct IHyperdrive.PoolConfig" } }, @@ -3558,12 +3558,12 @@ }, { "constant": false, - "id": 5231, + "id": 5234, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 5255, + "scope": 5258, "src": "3930:16:10", "stateVariable": false, "storageLocation": "memory", @@ -3573,7 +3573,7 @@ }, "typeName": { "baseType": { - "id": 5229, + "id": 5232, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3930:7:10", @@ -3582,7 +3582,7 @@ "typeString": "bytes32" } }, - "id": 5230, + "id": 5233, "nodeType": "ArrayTypeName", "src": "3930:9:10", "typeDescriptions": { @@ -3594,12 +3594,12 @@ }, { "constant": false, - "id": 5233, + "id": 5236, "mutability": "mutable", "name": "_linkerCodeHash", "nameLocation": "3964:15:10", "nodeType": "VariableDeclaration", - "scope": 5255, + "scope": 5258, "src": "3956:23:10", "stateVariable": false, "storageLocation": "default", @@ -3608,7 +3608,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 5232, + "id": 5235, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3956:7:10", @@ -3621,12 +3621,12 @@ }, { "constant": false, - "id": 5235, + "id": 5238, "mutability": "mutable", "name": "_linkerFactory", "nameLocation": "3997:14:10", "nodeType": "VariableDeclaration", - "scope": 5255, + "scope": 5258, "src": "3989:22:10", "stateVariable": false, "storageLocation": "default", @@ -3635,7 +3635,7 @@ "typeString": "address" }, "typeName": { - "id": 5234, + "id": 5237, "name": "address", "nodeType": "ElementaryTypeName", "src": "3989:7:10", @@ -3651,17 +3651,17 @@ "src": "3873:144:10" }, "returnParameters": { - "id": 5240, + "id": 5243, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 5239, + "id": 5242, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 5255, + "scope": 5258, "src": "4045:7:10", "stateVariable": false, "storageLocation": "default", @@ -3670,7 +3670,7 @@ "typeString": "address" }, "typeName": { - "id": 5238, + "id": 5241, "name": "address", "nodeType": "ElementaryTypeName", "src": "4045:7:10", @@ -3685,44 +3685,44 @@ ], "src": "4044:9:10" }, - "scope": 5266, + "scope": 5269, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { - "id": 5265, + "id": 5268, "nodeType": "FunctionDefinition", "src": "4391:105:10", "nodes": [], "body": { - "id": 5264, + "id": 5267, "nodeType": "Block", "src": "4459:37:10", "nodes": [], "statements": [ { "expression": { - "id": 5262, + "id": 5265, "name": "_sweepTargets", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5129, + "referencedDeclaration": 5132, "src": "4476:13:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "functionReturnParameters": 5261, - "id": 5263, + "functionReturnParameters": 5264, + "id": 5266, "nodeType": "Return", "src": "4469:20:10" } ] }, "documentation": { - "id": 5256, + "id": 5259, "nodeType": "StructuredDocumentation", "src": "4316:70:10", "text": "@notice Gets the sweep targets.\n @return The sweep targets." @@ -3734,23 +3734,23 @@ "name": "getSweepTargets", "nameLocation": "4400:15:10", "parameters": { - "id": 5257, + "id": 5260, "nodeType": "ParameterList", "parameters": [], "src": "4415:2:10" }, "returnParameters": { - "id": 5261, + "id": 5264, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 5260, + "id": 5263, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 5265, + "scope": 5268, "src": "4441:16:10", "stateVariable": false, "storageLocation": "memory", @@ -3760,7 +3760,7 @@ }, "typeName": { "baseType": { - "id": 5258, + "id": 5261, "name": "address", "nodeType": "ElementaryTypeName", "src": "4441:7:10", @@ -3770,7 +3770,7 @@ "typeString": "address" } }, - "id": 5259, + "id": 5262, "nodeType": "ArrayTypeName", "src": "4441:9:10", "typeDescriptions": { @@ -3783,7 +3783,7 @@ ], "src": "4440:18:10" }, - "scope": 5266, + "scope": 5269, "stateMutability": "view", "virtual": false, "visibility": "external" @@ -3793,45 +3793,45 @@ "baseContracts": [ { "baseName": { - "id": 5120, + "id": 5123, "name": "HyperdriveFactory", "nameLocations": [ "898:17:10" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 5912, + "referencedDeclaration": 5915, "src": "898:17:10" }, - "id": 5121, + "id": 5124, "nodeType": "InheritanceSpecifier", "src": "898:17:10" } ], "canonicalName": "ERC4626HyperdriveFactory", "contractDependencies": [ - 6016 + 6019 ], "contractKind": "contract", "documentation": { - "id": 5119, + "id": 5122, "nodeType": "StructuredDocumentation", "src": "446:415:10", "text": "@author DELV\n @title ERC4626HyperdriveFactory\n @notice Deploys hyperdrive instances and initializes them. It also holds a\n registry of all deployed hyperdrive instances.\n @custom:disclaimer The language used in this code is for coding convenience\n only, and is not intended to, and does not, have any\n particular legal or regulatory significance." }, "fullyImplemented": true, "linearizedBaseContracts": [ - 5266, - 5912 + 5269, + 5915 ], "name": "ERC4626HyperdriveFactory", "nameLocation": "870:24:10", - "scope": 5267, + "scope": 5270, "usedErrors": [ - 6941, - 7014, - 7020, - 7022, - 7024 + 6885, + 6958, + 6964, + 6966, + 6968 ] } ], diff --git a/packages/hyperdrive/src/abis/IERC4626Hyperdrive.sol/IERC4626Hyperdrive.json b/packages/hyperdrive/src/abis/IERC4626Hyperdrive.sol/IERC4626Hyperdrive.json new file mode 100644 index 0000000000..91e30a84e3 --- /dev/null +++ b/packages/hyperdrive/src/abis/IERC4626Hyperdrive.sol/IERC4626Hyperdrive.json @@ -0,0 +1,4274 @@ +{ + "abi": [ + { + "inputs": [], + "name": "AlreadyClosed", + "type": "error" + }, + { + "inputs": [], + "name": "ApprovalFailed", + "type": "error" + }, + { + "inputs": [], + "name": "BaseBufferExceedsShareReserves", + "type": "error" + }, + { + "inputs": [], + "name": "BatchInputLengthMismatch", + "type": "error" + }, + { + "inputs": [], + "name": "BelowMinimumContribution", + "type": "error" + }, + { + "inputs": [], + "name": "BelowMinimumShareReserves", + "type": "error" + }, + { + "inputs": [], + "name": "BondMatured", + "type": "error" + }, + { + "inputs": [], + "name": "BondNotMatured", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "underlyingError", + "type": "bytes4" + } + ], + "name": "CallFailed", + "type": "error" + }, + { + "inputs": [], + "name": "ExpiredDeadline", + "type": "error" + }, + { + "inputs": [], + "name": "FeeTooHigh", + "type": "error" + }, + { + "inputs": [], + "name": "FixedPointMath_InvalidExponent", + "type": "error" + }, + { + "inputs": [], + "name": "FixedPointMath_InvalidInput", + "type": "error" + }, + { + "inputs": [], + "name": "FixedPointMath_NegativeInput", + "type": "error" + }, + { + "inputs": [], + "name": "FixedPointMath_NegativeOrZeroInput", + "type": "error" + }, + { + "inputs": [], + "name": "InsufficientPrice", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidApr", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidBaseToken", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidCheckpointDuration", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidCheckpointTime", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidContribution", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidERC20Bridge", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidFeeAmounts", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidForwarderAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialSharePrice", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidMaturityTime", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidMinimumShareReserves", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidPositionDuration", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidShareReserves", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSignature", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidTimestamp", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidToken", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidTradeSize", + "type": "error" + }, + { + "inputs": [], + "name": "MaxFeeTooHigh", + "type": "error" + }, + { + "inputs": [], + "name": "MinimumSharePrice", + "type": "error" + }, + { + "inputs": [], + "name": "MinimumTransactionAmount", + "type": "error" + }, + { + "inputs": [], + "name": "MintPercentTooHigh", + "type": "error" + }, + { + "inputs": [], + "name": "NegativeInterest", + "type": "error" + }, + { + "inputs": [], + "name": "NegativePresentValue", + "type": "error" + }, + { + "inputs": [], + "name": "NoAssetsToWithdraw", + "type": "error" + }, + { + "inputs": [], + "name": "NonPayableInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotPayable", + "type": "error" + }, + { + "inputs": [], + "name": "OutputLimit", + "type": "error" + }, + { + "inputs": [], + "name": "Paused", + "type": "error" + }, + { + "inputs": [], + "name": "PoolAlreadyInitialized", + "type": "error" + }, + { + "inputs": [], + "name": "QueryOutOfRange", + "type": "error" + }, + { + "inputs": [], + "name": "RestrictedZeroAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "ReturnData", + "type": "error" + }, + { + "inputs": [], + "name": "ShareReservesDeltaExceedsBondReservesDelta", + "type": "error" + }, + { + "inputs": [], + "name": "TransferFailed", + "type": "error" + }, + { + "inputs": [], + "name": "Unauthorized", + "type": "error" + }, + { + "inputs": [], + "name": "UnexpectedAssetId", + "type": "error" + }, + { + "inputs": [], + "name": "UnexpectedSender", + "type": "error" + }, + { + "inputs": [], + "name": "UnexpectedSuccess", + "type": "error" + }, + { + "inputs": [], + "name": "UnsafeCastToInt128", + "type": "error" + }, + { + "inputs": [], + "name": "UnsafeCastToUint128", + "type": "error" + }, + { + "inputs": [], + "name": "UnsupportedToken", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroLpTotalSupply", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "provider", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "lpAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256" + } + ], + "name": "AddLiquidity", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "trader", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "assetId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "maturityTime", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bondAmount", + "type": "uint256" + } + ], + "name": "CloseLong", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "trader", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "assetId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "maturityTime", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bondAmount", + "type": "uint256" + } + ], + "name": "CloseShort", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "provider", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "lpAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "apr", + "type": "uint256" + } + ], + "name": "Initialize", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "trader", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "assetId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "maturityTime", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bondAmount", + "type": "uint256" + } + ], + "name": "OpenLong", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "trader", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "assetId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "maturityTime", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bondAmount", + "type": "uint256" + } + ], + "name": "OpenShort", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "provider", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "withdrawalShareAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256" + } + ], + "name": "RedeemWithdrawalShares", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "provider", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "lpAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "withdrawalShareAmount", + "type": "uint256" + } + ], + "name": "RemoveLiquidity", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferSingle", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_contribution", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minApr", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_maxApr", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "lpShares", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "name": "batchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_checkpointTime", + "type": "uint256" + } + ], + "name": "checkpoint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_maturityTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_bondAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minOutput", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "name": "closeLong", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_maturityTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_bondAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minOutput", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "name": "closeShort", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "asUnderlying", + "type": "bool" + } + ], + "name": "collectGovernanceFee", + "outputs": [ + { + "internalType": "uint256", + "name": "proceeds", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_checkpointId", + "type": "uint256" + } + ], + "name": "getCheckpoint", + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "sharePrice", + "type": "uint128" + }, + { + "internalType": "int128", + "name": "longExposure", + "type": "int128" + } + ], + "internalType": "struct IHyperdrive.Checkpoint", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMarketState", + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "shareReserves", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "bondReserves", + "type": "uint128" + }, + { + "internalType": "int128", + "name": "shareAdjustment", + "type": "int128" + }, + { + "internalType": "uint128", + "name": "longExposure", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "longsOutstanding", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "shortsOutstanding", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "longAverageMaturityTime", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "shortAverageMaturityTime", + "type": "uint128" + }, + { + "internalType": "bool", + "name": "isInitialized", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isPaused", + "type": "bool" + } + ], + "internalType": "struct IHyperdrive.MarketState", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPoolConfig", + "outputs": [ + { + "components": [ + { + "internalType": "contract IERC20", + "name": "baseToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialSharePrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minimumShareReserves", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minimumTransactionAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "positionDuration", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "checkpointDuration", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timeStretch", + "type": "uint256" + }, + { + "internalType": "address", + "name": "governance", + "type": "address" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "curve", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "flat", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "governance", + "type": "uint256" + } + ], + "internalType": "struct IHyperdrive.Fees", + "name": "fees", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "oracleSize", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "updateGap", + "type": "uint256" + } + ], + "internalType": "struct IHyperdrive.PoolConfig", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPoolInfo", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "shareReserves", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "shareAdjustment", + "type": "int256" + }, + { + "internalType": "uint256", + "name": "bondReserves", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lpTotalSupply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sharePrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "longsOutstanding", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "longAverageMaturityTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "shortsOutstanding", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "shortAverageMaturityTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawalSharesReadyToWithdraw", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawalSharesProceeds", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lpSharePrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "longExposure", + "type": "uint256" + } + ], + "internalType": "struct IHyperdrive.PoolInfo", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getUncollectedGovernanceFees", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getWithdrawPool", + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "readyToWithdraw", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "proceeds", + "type": "uint128" + } + ], + "internalType": "struct IHyperdrive.WithdrawPool", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_contribution", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_apr", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "name": "initialize", + "outputs": [ + { + "internalType": "uint256", + "name": "lpShares", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_target", + "type": "address" + } + ], + "name": "isSweepable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "linkerCodeHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "_slots", + "type": "uint256[]" + } + ], + "name": "load", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_baseAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minOutput", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minSharePrice", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "name": "openLong", + "outputs": [ + { + "internalType": "uint256", + "name": "maturityTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "bondProceeds", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_bondAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_maxDeposit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minSharePrice", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "name": "openShort", + "outputs": [ + { + "internalType": "uint256", + "name": "maturityTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "traderDeposit", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "status", + "type": "bool" + } + ], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "perTokenApprovals", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "bool", + "name": "_approved", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permitForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "pool", + "outputs": [ + { + "internalType": "contract IERC4626", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_shares", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minOutput", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "name": "redeemWithdrawalShares", + "outputs": [ + { + "internalType": "uint256", + "name": "proceeds", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sharesRedeemed", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_shares", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minOutput", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "baseProceeds", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawalShares", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenID", + "type": "uint256" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "setApproval", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenID", + "type": "uint256" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "setApprovalBridge", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "setGovernance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "bool", + "name": "status", + "type": "bool" + } + ], + "name": "setPauser", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "_target", + "type": "address" + } + ], + "name": "sweep", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenID", + "type": "uint256" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenID", + "type": "uint256" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "transferFromBridge", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": { + "object": "0x", + "sourceMap": "", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x", + "sourceMap": "", + "linkReferences": {} + }, + "methodIdentifiers": { + "DOMAIN_SEPARATOR()": "3644e515", + "addLiquidity(uint256,uint256,uint256,address,bool)": "c326a903", + "balanceOf(uint256,address)": "3656eec2", + "baseToken()": "c55dae63", + "batchTransferFrom(address,address,uint256[],uint256[])": "17fad7fc", + "checkpoint(uint256)": "ed64bab2", + "closeLong(uint256,uint256,uint256,address,bool)": "fa3fcea7", + "closeShort(uint256,uint256,uint256,address,bool)": "6f8c3a5b", + "collectGovernanceFee(bool)": "2787d595", + "factory()": "c45a0155", + "getCheckpoint(uint256)": "20fc4881", + "getMarketState()": "d8165743", + "getPoolConfig()": "b0d96580", + "getPoolInfo()": "60246c88", + "getUncollectedGovernanceFees()": "c69e16ad", + "getWithdrawPool()": "fba56008", + "initialize(uint256,uint256,address,bool)": "2002b333", + "isApprovedForAll(address,address)": "e985e9c5", + "isSweepable(address)": "cc962f8e", + "linkerCodeHash()": "c905a4b5", + "load(uint256[])": "becee9c3", + "name(uint256)": "00ad800c", + "nonces(address)": "7ecebe00", + "openLong(uint256,uint256,uint256,address,bool)": "06dae82a", + "openShort(uint256,uint256,uint256,address,bool)": "a179403b", + "pause(bool)": "02329a29", + "perTokenApprovals(uint256,address,address)": "21ff32a9", + "permitForAll(address,address,bool,uint256,uint8,bytes32,bytes32)": "9032c726", + "pool()": "16f0115b", + "redeemWithdrawalShares(uint256,uint256,address,bool)": "4536ee2f", + "removeLiquidity(uint256,uint256,address,bool)": "c23632a7", + "setApproval(uint256,address,uint256)": "9cd241af", + "setApprovalBridge(uint256,address,uint256,address)": "4ed2d6ac", + "setApprovalForAll(address,bool)": "a22cb465", + "setGovernance(address)": "ab033ea9", + "setPauser(address,bool)": "7180c8ca", + "sweep(address)": "01681a62", + "symbol(uint256)": "4e41a1fb", + "totalSupply(uint256)": "bd85b039", + "transferFrom(uint256,address,address,uint256)": "1c0f12b6", + "transferFromBridge(uint256,address,address,uint256,address)": "e44808bc" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AlreadyClosed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseBufferExceedsShareReserves\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchInputLengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BelowMinimumContribution\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BelowMinimumShareReserves\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BondMatured\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BondNotMatured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"underlyingError\",\"type\":\"bytes4\"}],\"name\":\"CallFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpiredDeadline\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FixedPointMath_InvalidExponent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FixedPointMath_InvalidInput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FixedPointMath_NegativeInput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FixedPointMath_NegativeOrZeroInput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientPrice\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidApr\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBaseToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCheckpointDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCheckpointTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidContribution\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidERC20Bridge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFeeAmounts\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidForwarderAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialSharePrice\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMaturityTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMinimumShareReserves\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPositionDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidShareReserves\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTradeSize\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxFeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinimumSharePrice\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinimumTransactionAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MintPercentTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NegativeInterest\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NegativePresentValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoAssetsToWithdraw\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonPayableInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OutputLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Paused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueryOutOfRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RestrictedZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ReturnData\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ShareReservesDeltaExceedsBondReservesDelta\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnexpectedAssetId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnexpectedSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnexpectedSuccess\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsafeCastToInt128\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsafeCastToUint128\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroLpTotalSupply\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"}],\"name\":\"AddLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"assetId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maturityTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondAmount\",\"type\":\"uint256\"}],\"name\":\"CloseLong\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"assetId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maturityTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondAmount\",\"type\":\"uint256\"}],\"name\":\"CloseShort\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"apr\",\"type\":\"uint256\"}],\"name\":\"Initialize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"assetId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maturityTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondAmount\",\"type\":\"uint256\"}],\"name\":\"OpenLong\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"assetId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maturityTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondAmount\",\"type\":\"uint256\"}],\"name\":\"OpenShort\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawalShareAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"}],\"name\":\"RedeemWithdrawalShares\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawalShareAmount\",\"type\":\"uint256\"}],\"name\":\"RemoveLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_contribution\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minApr\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxApr\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lpShares\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"batchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_checkpointTime\",\"type\":\"uint256\"}],\"name\":\"checkpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maturityTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_bondAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minOutput\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"closeLong\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maturityTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_bondAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minOutput\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"closeShort\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"asUnderlying\",\"type\":\"bool\"}],\"name\":\"collectGovernanceFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"proceeds\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_checkpointId\",\"type\":\"uint256\"}],\"name\":\"getCheckpoint\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"sharePrice\",\"type\":\"uint128\"},{\"internalType\":\"int128\",\"name\":\"longExposure\",\"type\":\"int128\"}],\"internalType\":\"struct IHyperdrive.Checkpoint\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMarketState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"shareReserves\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"bondReserves\",\"type\":\"uint128\"},{\"internalType\":\"int128\",\"name\":\"shareAdjustment\",\"type\":\"int128\"},{\"internalType\":\"uint128\",\"name\":\"longExposure\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"longsOutstanding\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"shortsOutstanding\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"longAverageMaturityTime\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"shortAverageMaturityTime\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"isInitialized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"internalType\":\"struct IHyperdrive.MarketState\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialSharePrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumShareReserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumTransactionAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"checkpointDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeStretch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeCollector\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.Fees\",\"name\":\"fees\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"oracleSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updateGap\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.PoolConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"shareReserves\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"shareAdjustment\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"bondReserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lpTotalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sharePrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"longsOutstanding\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"longAverageMaturityTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortsOutstanding\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortAverageMaturityTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawalSharesReadyToWithdraw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawalSharesProceeds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lpSharePrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"longExposure\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.PoolInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUncollectedGovernanceFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWithdrawPool\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"readyToWithdraw\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"proceeds\",\"type\":\"uint128\"}],\"internalType\":\"struct IHyperdrive.WithdrawPool\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_contribution\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_apr\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"initialize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lpShares\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"isSweepable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"linkerCodeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_slots\",\"type\":\"uint256[]\"}],\"name\":\"load\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_baseAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minOutput\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minSharePrice\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"openLong\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maturityTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bondProceeds\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_bondAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxDeposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minSharePrice\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"openShort\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maturityTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"traderDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"perTokenApprovals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permitForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pool\",\"outputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minOutput\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"redeemWithdrawalShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"proceeds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sharesRedeemed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minOutput\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"baseProceeds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawalShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"setApprovalBridge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"}],\"name\":\"setGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setPauser\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"sweep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"transferFromBridge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"AlreadyClosed()\":[{\"notice\":\"##################### ### BondWrapper ### #####################\"}],\"ApprovalFailed()\":[{\"notice\":\"################## ### Hyperdrive ### ##################\"}],\"BatchInputLengthMismatch()\":[{\"notice\":\"###################### ### ERC20Forwarder ### ######################\"}],\"FixedPointMath_InvalidExponent()\":[{\"notice\":\"###################### ### FixedPointMath ### ######################\"}],\"InvalidForwarderAddress()\":[{\"notice\":\"############################# ### ERC20ForwarderFactory ### #############################\"}],\"InvalidTimestamp()\":[{\"notice\":\"############### ### AssetId ### ###############\"}],\"InvalidTradeSize()\":[{\"notice\":\"###################### ### YieldSpaceMath ### ######################\"}],\"QueryOutOfRange()\":[{\"notice\":\"############ ### TWAP ### ############\"}],\"ReturnData(bytes)\":[{\"notice\":\"#################### ### DataProvider ### ####################\"}],\"Unauthorized()\":[{\"notice\":\"############### ### Factory ### ###############\"}],\"UnsafeCastToUint128()\":[{\"notice\":\"###################### ### SafeCast ### ######################\"}]},\"events\":{\"Initialize(address,uint256,uint256,uint256)\":{\"notice\":\"Events ///\"}},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/src/interfaces/IERC4626Hyperdrive.sol\":\"IERC4626Hyperdrive\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@aave/=lib/aave-v3-core/contracts/\",\":aave-v3-core/=lib/aave-v3-core/\",\":create3-factory/=lib/yield-daddy/lib/create3-factory/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":yield-daddy/=lib/yield-daddy/\"]},\"sources\":{\"contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4642a027efffb3aa6cdc85e31796fb3b1bc4fff4316e6390874e6f4add37b86c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3720a6c1c427dcfcbdeeec15cbdb682115e44e0a9136af7e0ad9e5af2ea40672\",\"dweb:/ipfs/QmP4bmaHw8MfX9MQLhhgnVQ9U9BTQAR3e5cCCE9RcoeX7w\"]},\"contracts/src/interfaces/IERC4626.sol\":{\"keccak256\":\"0xaf48462596aa9c7544086c0a5e53adc7bf8f713662a5fb270ffb4e4db16e23cf\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b2e5e6d94edba7e97dce8b5e061d40955d39fa586579d170f66cbecdbd2348dc\",\"dweb:/ipfs/QmeUkSbHaBmCeZnmup5RujvxRAyhw1u9vpRRpzeuU2wiia\"]},\"contracts/src/interfaces/IERC4626Hyperdrive.sol\":{\"keccak256\":\"0x65d608a9101757c0d76034e031be97d631654712e43dcc514398aa3abbc80cf1\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://98e360f1f4be19ba32362f04176b6ce7925d3f04c7d9f16eb962d8c129e29d16\",\"dweb:/ipfs/QmcXjDqYFQJYRZFsKZK2dpzNGEaSvfeKDqY5gYC4GoMycb\"]},\"contracts/src/interfaces/IHyperdrive.sol\":{\"keccak256\":\"0x3336dbc3128174594baa25c95f3be485aa61a77a06afbb75e2708987247a5bb5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e189558d4f78633d90ecdb3ff8d775109394a98cb18d19507642cb56c43dc1e\",\"dweb:/ipfs/QmZMVsor78To4nbXwLDBaZKD8m68PT53C9mxvR8iUkM5i5\"]},\"contracts/src/interfaces/IHyperdriveRead.sol\":{\"keccak256\":\"0x837939af4a9224c5f4ea564e9b33a5612442b7d7d50b7f8bb32be6bb3ce239b3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3bfebedcb31d2edf86a69f0dfbcc5aa7b96edc2d8197b4a4681a200cb6ffe993\",\"dweb:/ipfs/Qmeq4oAGxKv3mvRRWkqYBjfdozPkhi3MqBRFNnNkmAwCtt\"]},\"contracts/src/interfaces/IHyperdriveWrite.sol\":{\"keccak256\":\"0xe2ba8031ab98a81026010af00de9935b79ade6701dc486fd1c02d67f4eb81bf8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e6acf863128f355e6ad26130037797a08321054ac8e202274debf6730162467\",\"dweb:/ipfs/Qmbf6882o3a7mci1j4w2XJtUDfsJvECGF6Yz3PG8q4LQgk\"]},\"contracts/src/interfaces/IMultiToken.sol\":{\"keccak256\":\"0xe3d64871148bdae5a714107b8b1a55f39cd4ede601436d2777a165d20d768a1a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9ebc0bfda35e9b7299c43f0efff38012b8074fcca867b781c0cedeede10cf3d0\",\"dweb:/ipfs/QmbHRLezFhWavHakK5G26DB4ud5PueU6fNvZf3L3TwXnPb\"]},\"contracts/src/interfaces/IMultiTokenMetadata.sol\":{\"keccak256\":\"0xcdc60ba02194150741a78cb0c52c306f5f577c5c814c63e98a13d46c02d2d9cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8f5866cb2c8c4342dba88c0e4d78296fef0e170b18b3613c796c29dc31a5ca87\",\"dweb:/ipfs/QmZcoDTYhhYSB5ds3cNPJpdZTxrz6cF8M2vNVeuAcT8gw6\"]},\"contracts/src/interfaces/IMultiTokenRead.sol\":{\"keccak256\":\"0x2e55fa961123a8bb7284c8388af9bd1302a7153441ffe641804ea79021bdca05\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c7dc03bbab02976609dec59c201e5b57a2998d1c626cef58d7a9fa7c2b06b939\",\"dweb:/ipfs/QmSifWr9cVWaUEmyKpGFcgpKCYdoBYgWtQBLgemtwo4a7x\"]},\"contracts/src/interfaces/IMultiTokenWrite.sol\":{\"keccak256\":\"0xa5ba8812e06fb6d38e1872603c8b80321cfd2f96cecbe7b67b92cb33e93b3fc8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://73afa34919c7d457e925b4be83abb1b1ed2ed731a382ebffad95a3005c04bd5a\",\"dweb:/ipfs/QmauMxmgtYTS7RJQw1mS7Pwe5FUMDPHE2N1MBhFUjk6HPe\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.19+commit.7dd6d404" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [], + "type": "error", + "name": "AlreadyClosed" + }, + { + "inputs": [], + "type": "error", + "name": "ApprovalFailed" + }, + { + "inputs": [], + "type": "error", + "name": "BaseBufferExceedsShareReserves" + }, + { + "inputs": [], + "type": "error", + "name": "BatchInputLengthMismatch" + }, + { + "inputs": [], + "type": "error", + "name": "BelowMinimumContribution" + }, + { + "inputs": [], + "type": "error", + "name": "BelowMinimumShareReserves" + }, + { + "inputs": [], + "type": "error", + "name": "BondMatured" + }, + { + "inputs": [], + "type": "error", + "name": "BondNotMatured" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "underlyingError", + "type": "bytes4" + } + ], + "type": "error", + "name": "CallFailed" + }, + { + "inputs": [], + "type": "error", + "name": "ExpiredDeadline" + }, + { + "inputs": [], + "type": "error", + "name": "FeeTooHigh" + }, + { + "inputs": [], + "type": "error", + "name": "FixedPointMath_InvalidExponent" + }, + { + "inputs": [], + "type": "error", + "name": "FixedPointMath_InvalidInput" + }, + { + "inputs": [], + "type": "error", + "name": "FixedPointMath_NegativeInput" + }, + { + "inputs": [], + "type": "error", + "name": "FixedPointMath_NegativeOrZeroInput" + }, + { + "inputs": [], + "type": "error", + "name": "InsufficientPrice" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidApr" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidBaseToken" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidCheckpointDuration" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidCheckpointTime" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidContribution" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidERC20Bridge" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidFeeAmounts" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidForwarderAddress" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidInitialSharePrice" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidMaturityTime" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidMinimumShareReserves" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidPositionDuration" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidShareReserves" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidSignature" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidTimestamp" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidToken" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidTradeSize" + }, + { + "inputs": [], + "type": "error", + "name": "MaxFeeTooHigh" + }, + { + "inputs": [], + "type": "error", + "name": "MinimumSharePrice" + }, + { + "inputs": [], + "type": "error", + "name": "MinimumTransactionAmount" + }, + { + "inputs": [], + "type": "error", + "name": "MintPercentTooHigh" + }, + { + "inputs": [], + "type": "error", + "name": "NegativeInterest" + }, + { + "inputs": [], + "type": "error", + "name": "NegativePresentValue" + }, + { + "inputs": [], + "type": "error", + "name": "NoAssetsToWithdraw" + }, + { + "inputs": [], + "type": "error", + "name": "NonPayableInitialization" + }, + { + "inputs": [], + "type": "error", + "name": "NotPayable" + }, + { + "inputs": [], + "type": "error", + "name": "OutputLimit" + }, + { + "inputs": [], + "type": "error", + "name": "Paused" + }, + { + "inputs": [], + "type": "error", + "name": "PoolAlreadyInitialized" + }, + { + "inputs": [], + "type": "error", + "name": "QueryOutOfRange" + }, + { + "inputs": [], + "type": "error", + "name": "RestrictedZeroAddress" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "type": "error", + "name": "ReturnData" + }, + { + "inputs": [], + "type": "error", + "name": "ShareReservesDeltaExceedsBondReservesDelta" + }, + { + "inputs": [], + "type": "error", + "name": "TransferFailed" + }, + { + "inputs": [], + "type": "error", + "name": "Unauthorized" + }, + { + "inputs": [], + "type": "error", + "name": "UnexpectedAssetId" + }, + { + "inputs": [], + "type": "error", + "name": "UnexpectedSender" + }, + { + "inputs": [], + "type": "error", + "name": "UnexpectedSuccess" + }, + { + "inputs": [], + "type": "error", + "name": "UnsafeCastToInt128" + }, + { + "inputs": [], + "type": "error", + "name": "UnsafeCastToUint128" + }, + { + "inputs": [], + "type": "error", + "name": "UnsupportedToken" + }, + { + "inputs": [], + "type": "error", + "name": "ZeroLpTotalSupply" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provider", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "lpAmount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "AddLiquidity", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "spender", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "Approval", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "operator", + "type": "address", + "indexed": true + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool", + "indexed": false + } + ], + "type": "event", + "name": "ApprovalForAll", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "trader", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "assetId", + "type": "uint256", + "indexed": true + }, + { + "internalType": "uint256", + "name": "maturityTime", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "bondAmount", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "CloseLong", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "trader", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "assetId", + "type": "uint256", + "indexed": true + }, + { + "internalType": "uint256", + "name": "maturityTime", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "bondAmount", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "CloseShort", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provider", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "lpAmount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "apr", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "Initialize", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "trader", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "assetId", + "type": "uint256", + "indexed": true + }, + { + "internalType": "uint256", + "name": "maturityTime", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "bondAmount", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "OpenLong", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "trader", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "assetId", + "type": "uint256", + "indexed": true + }, + { + "internalType": "uint256", + "name": "maturityTime", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "bondAmount", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "OpenShort", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provider", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "withdrawalShareAmount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "RedeemWithdrawalShares", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provider", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "lpAmount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "withdrawalShareAmount", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "RemoveLiquidity", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "from", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "to", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "TransferSingle", + "anonymous": false + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_contribution", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minApr", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_maxApr", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "stateMutability": "payable", + "type": "function", + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "lpShares", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "baseToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "batchTransferFrom" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_checkpointTime", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "checkpoint" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_maturityTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_bondAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minOutput", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "closeLong", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_maturityTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_bondAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minOutput", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "closeShort", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "asUnderlying", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "collectGovernanceFee", + "outputs": [ + { + "internalType": "uint256", + "name": "proceeds", + "type": "uint256" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_checkpointId", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "getCheckpoint", + "outputs": [ + { + "internalType": "struct IHyperdrive.Checkpoint", + "name": "", + "type": "tuple", + "components": [ + { + "internalType": "uint128", + "name": "sharePrice", + "type": "uint128" + }, + { + "internalType": "int128", + "name": "longExposure", + "type": "int128" + } + ] + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "getMarketState", + "outputs": [ + { + "internalType": "struct IHyperdrive.MarketState", + "name": "", + "type": "tuple", + "components": [ + { + "internalType": "uint128", + "name": "shareReserves", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "bondReserves", + "type": "uint128" + }, + { + "internalType": "int128", + "name": "shareAdjustment", + "type": "int128" + }, + { + "internalType": "uint128", + "name": "longExposure", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "longsOutstanding", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "shortsOutstanding", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "longAverageMaturityTime", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "shortAverageMaturityTime", + "type": "uint128" + }, + { + "internalType": "bool", + "name": "isInitialized", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isPaused", + "type": "bool" + } + ] + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "getPoolConfig", + "outputs": [ + { + "internalType": "struct IHyperdrive.PoolConfig", + "name": "", + "type": "tuple", + "components": [ + { + "internalType": "contract IERC20", + "name": "baseToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialSharePrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minimumShareReserves", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minimumTransactionAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "positionDuration", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "checkpointDuration", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timeStretch", + "type": "uint256" + }, + { + "internalType": "address", + "name": "governance", + "type": "address" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + }, + { + "internalType": "struct IHyperdrive.Fees", + "name": "fees", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "curve", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "flat", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "governance", + "type": "uint256" + } + ] + }, + { + "internalType": "uint256", + "name": "oracleSize", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "updateGap", + "type": "uint256" + } + ] + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "getPoolInfo", + "outputs": [ + { + "internalType": "struct IHyperdrive.PoolInfo", + "name": "", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "shareReserves", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "shareAdjustment", + "type": "int256" + }, + { + "internalType": "uint256", + "name": "bondReserves", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lpTotalSupply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sharePrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "longsOutstanding", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "longAverageMaturityTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "shortsOutstanding", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "shortAverageMaturityTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawalSharesReadyToWithdraw", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawalSharesProceeds", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lpSharePrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "longExposure", + "type": "uint256" + } + ] + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "getUncollectedGovernanceFees", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "getWithdrawPool", + "outputs": [ + { + "internalType": "struct IHyperdrive.WithdrawPool", + "name": "", + "type": "tuple", + "components": [ + { + "internalType": "uint128", + "name": "readyToWithdraw", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "proceeds", + "type": "uint128" + } + ] + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_contribution", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_apr", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "stateMutability": "payable", + "type": "function", + "name": "initialize", + "outputs": [ + { + "internalType": "uint256", + "name": "lpShares", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_target", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "isSweepable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "linkerCodeHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "_slots", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function", + "name": "load", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "", + "type": "bytes32[]" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_baseAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minOutput", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minSharePrice", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "stateMutability": "payable", + "type": "function", + "name": "openLong", + "outputs": [ + { + "internalType": "uint256", + "name": "maturityTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "bondProceeds", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_bondAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_maxDeposit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minSharePrice", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "stateMutability": "payable", + "type": "function", + "name": "openShort", + "outputs": [ + { + "internalType": "uint256", + "name": "maturityTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "traderDeposit", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "status", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "pause" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "perTokenApprovals", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "bool", + "name": "_approved", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "permitForAll" + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "pool", + "outputs": [ + { + "internalType": "contract IERC4626", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_shares", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minOutput", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "redeemWithdrawalShares", + "outputs": [ + { + "internalType": "uint256", + "name": "proceeds", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sharesRedeemed", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_shares", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minOutput", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "baseProceeds", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawalShares", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenID", + "type": "uint256" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setApproval" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenID", + "type": "uint256" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setApprovalBridge" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setApprovalForAll" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setGovernance" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "bool", + "name": "status", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setPauser" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "_target", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "sweep" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenID", + "type": "uint256" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "transferFrom" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenID", + "type": "uint256" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "transferFromBridge" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "settings": { + "remappings": [ + "@aave/=lib/aave-v3-core/contracts/", + "aave-v3-core/=lib/aave-v3-core/", + "create3-factory/=lib/yield-daddy/lib/create3-factory/", + "ds-test/=lib/forge-std/lib/ds-test/src/", + "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", + "forge-std/=lib/forge-std/src/", + "openzeppelin-contracts/=lib/openzeppelin-contracts/", + "openzeppelin/=lib/openzeppelin-contracts/contracts/", + "solmate/=lib/solmate/src/", + "yield-daddy/=lib/yield-daddy/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "contracts/src/interfaces/IERC4626Hyperdrive.sol": "IERC4626Hyperdrive" + }, + "libraries": {} + }, + "sources": { + "contracts/src/interfaces/IERC20.sol": { + "keccak256": "0x4642a027efffb3aa6cdc85e31796fb3b1bc4fff4316e6390874e6f4add37b86c", + "urls": [ + "bzz-raw://3720a6c1c427dcfcbdeeec15cbdb682115e44e0a9136af7e0ad9e5af2ea40672", + "dweb:/ipfs/QmP4bmaHw8MfX9MQLhhgnVQ9U9BTQAR3e5cCCE9RcoeX7w" + ], + "license": "MIT" + }, + "contracts/src/interfaces/IERC4626.sol": { + "keccak256": "0xaf48462596aa9c7544086c0a5e53adc7bf8f713662a5fb270ffb4e4db16e23cf", + "urls": [ + "bzz-raw://b2e5e6d94edba7e97dce8b5e061d40955d39fa586579d170f66cbecdbd2348dc", + "dweb:/ipfs/QmeUkSbHaBmCeZnmup5RujvxRAyhw1u9vpRRpzeuU2wiia" + ], + "license": "GPL-2.0-or-later" + }, + "contracts/src/interfaces/IERC4626Hyperdrive.sol": { + "keccak256": "0x65d608a9101757c0d76034e031be97d631654712e43dcc514398aa3abbc80cf1", + "urls": [ + "bzz-raw://98e360f1f4be19ba32362f04176b6ce7925d3f04c7d9f16eb962d8c129e29d16", + "dweb:/ipfs/QmcXjDqYFQJYRZFsKZK2dpzNGEaSvfeKDqY5gYC4GoMycb" + ], + "license": "Apache-2.0" + }, + "contracts/src/interfaces/IHyperdrive.sol": { + "keccak256": "0x3336dbc3128174594baa25c95f3be485aa61a77a06afbb75e2708987247a5bb5", + "urls": [ + "bzz-raw://2e189558d4f78633d90ecdb3ff8d775109394a98cb18d19507642cb56c43dc1e", + "dweb:/ipfs/QmZMVsor78To4nbXwLDBaZKD8m68PT53C9mxvR8iUkM5i5" + ], + "license": "Apache-2.0" + }, + "contracts/src/interfaces/IHyperdriveRead.sol": { + "keccak256": "0x837939af4a9224c5f4ea564e9b33a5612442b7d7d50b7f8bb32be6bb3ce239b3", + "urls": [ + "bzz-raw://3bfebedcb31d2edf86a69f0dfbcc5aa7b96edc2d8197b4a4681a200cb6ffe993", + "dweb:/ipfs/Qmeq4oAGxKv3mvRRWkqYBjfdozPkhi3MqBRFNnNkmAwCtt" + ], + "license": "Apache-2.0" + }, + "contracts/src/interfaces/IHyperdriveWrite.sol": { + "keccak256": "0xe2ba8031ab98a81026010af00de9935b79ade6701dc486fd1c02d67f4eb81bf8", + "urls": [ + "bzz-raw://2e6acf863128f355e6ad26130037797a08321054ac8e202274debf6730162467", + "dweb:/ipfs/Qmbf6882o3a7mci1j4w2XJtUDfsJvECGF6Yz3PG8q4LQgk" + ], + "license": "Apache-2.0" + }, + "contracts/src/interfaces/IMultiToken.sol": { + "keccak256": "0xe3d64871148bdae5a714107b8b1a55f39cd4ede601436d2777a165d20d768a1a", + "urls": [ + "bzz-raw://9ebc0bfda35e9b7299c43f0efff38012b8074fcca867b781c0cedeede10cf3d0", + "dweb:/ipfs/QmbHRLezFhWavHakK5G26DB4ud5PueU6fNvZf3L3TwXnPb" + ], + "license": "Apache-2.0" + }, + "contracts/src/interfaces/IMultiTokenMetadata.sol": { + "keccak256": "0xcdc60ba02194150741a78cb0c52c306f5f577c5c814c63e98a13d46c02d2d9cc", + "urls": [ + "bzz-raw://8f5866cb2c8c4342dba88c0e4d78296fef0e170b18b3613c796c29dc31a5ca87", + "dweb:/ipfs/QmZcoDTYhhYSB5ds3cNPJpdZTxrz6cF8M2vNVeuAcT8gw6" + ], + "license": "Apache-2.0" + }, + "contracts/src/interfaces/IMultiTokenRead.sol": { + "keccak256": "0x2e55fa961123a8bb7284c8388af9bd1302a7153441ffe641804ea79021bdca05", + "urls": [ + "bzz-raw://c7dc03bbab02976609dec59c201e5b57a2998d1c626cef58d7a9fa7c2b06b939", + "dweb:/ipfs/QmSifWr9cVWaUEmyKpGFcgpKCYdoBYgWtQBLgemtwo4a7x" + ], + "license": "Apache-2.0" + }, + "contracts/src/interfaces/IMultiTokenWrite.sol": { + "keccak256": "0xa5ba8812e06fb6d38e1872603c8b80321cfd2f96cecbe7b67b92cb33e93b3fc8", + "urls": [ + "bzz-raw://73afa34919c7d457e925b4be83abb1b1ed2ed731a382ebffad95a3005c04bd5a", + "dweb:/ipfs/QmauMxmgtYTS7RJQw1mS7Pwe5FUMDPHE2N1MBhFUjk6HPe" + ], + "license": "Apache-2.0" + }, + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { + "keccak256": "0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0", + "urls": [ + "bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1", + "dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol": { + "keccak256": "0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb", + "urls": [ + "bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0", + "dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol": { + "keccak256": "0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a", + "urls": [ + "bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577", + "dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/Address.sol": { + "keccak256": "0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26", + "urls": [ + "bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f", + "dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD" + ], + "license": "MIT" + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "contracts/src/interfaces/IERC4626Hyperdrive.sol", + "id": 6658, + "exportedSymbols": { + "IERC20": [ + 6461 + ], + "IERC4626": [ + 6627 + ], + "IERC4626Hyperdrive": [ + 6657 + ], + "IHyperdrive": [ + 7044 + ] + }, + "nodeType": "SourceUnit", + "src": "39:378:16", + "nodes": [ + { + "id": 6629, + "nodeType": "PragmaDirective", + "src": "39:23:16", + "nodes": [], + "literals": [ + "solidity", + "0.8", + ".19" + ] + }, + { + "id": 6631, + "nodeType": "ImportDirective", + "src": "64:38:16", + "nodes": [], + "absolutePath": "contracts/src/interfaces/IERC20.sol", + "file": "./IERC20.sol", + "nameLocation": "-1:-1:-1", + "scope": 6658, + "sourceUnit": 6462, + "symbolAliases": [ + { + "foreign": { + "id": 6630, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6461, + "src": "73:6:16", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 6633, + "nodeType": "ImportDirective", + "src": "103:42:16", + "nodes": [], + "absolutePath": "contracts/src/interfaces/IERC4626.sol", + "file": "./IERC4626.sol", + "nameLocation": "-1:-1:-1", + "scope": 6658, + "sourceUnit": 6628, + "symbolAliases": [ + { + "foreign": { + "id": 6632, + "name": "IERC4626", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6627, + "src": "112:8:16", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 6635, + "nodeType": "ImportDirective", + "src": "146:48:16", + "nodes": [], + "absolutePath": "contracts/src/interfaces/IHyperdrive.sol", + "file": "./IHyperdrive.sol", + "nameLocation": "-1:-1:-1", + "scope": 6658, + "sourceUnit": 7045, + "symbolAliases": [ + { + "foreign": { + "id": 6634, + "name": "IHyperdrive", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7044, + "src": "155:11:16", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 6657, + "nodeType": "ContractDefinition", + "src": "196:220:16", + "nodes": [ + { + "id": 6643, + "nodeType": "FunctionDefinition", + "src": "246:40:16", + "nodes": [], + "functionSelector": "01681a62", + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "sweep", + "nameLocation": "255:5:16", + "parameters": { + "id": 6641, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6640, + "mutability": "mutable", + "name": "_target", + "nameLocation": "268:7:16", + "nodeType": "VariableDeclaration", + "scope": 6643, + "src": "261:14:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$6461", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6639, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6638, + "name": "IERC20", + "nameLocations": [ + "261:6:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6461, + "src": "261:6:16" + }, + "referencedDeclaration": 6461, + "src": "261:6:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$6461", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "260:16:16" + }, + "returnParameters": { + "id": 6642, + "nodeType": "ParameterList", + "parameters": [], + "src": "285:0:16" + }, + "scope": 6657, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 6649, + "nodeType": "FunctionDefinition", + "src": "292:49:16", + "nodes": [], + "functionSelector": "16f0115b", + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "pool", + "nameLocation": "301:4:16", + "parameters": { + "id": 6644, + "nodeType": "ParameterList", + "parameters": [], + "src": "305:2:16" + }, + "returnParameters": { + "id": 6648, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6647, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6649, + "src": "331:8:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC4626_$6627", + "typeString": "contract IERC4626" + }, + "typeName": { + "id": 6646, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6645, + "name": "IERC4626", + "nameLocations": [ + "331:8:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6627, + "src": "331:8:16" + }, + "referencedDeclaration": 6627, + "src": "331:8:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC4626_$6627", + "typeString": "contract IERC4626" + } + }, + "visibility": "internal" + } + ], + "src": "330:10:16" + }, + "scope": 6657, + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "id": 6656, + "nodeType": "FunctionDefinition", + "src": "347:67:16", + "nodes": [], + "functionSelector": "cc962f8e", + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isSweepable", + "nameLocation": "356:11:16", + "parameters": { + "id": 6652, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6651, + "mutability": "mutable", + "name": "_target", + "nameLocation": "376:7:16", + "nodeType": "VariableDeclaration", + "scope": 6656, + "src": "368:15:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6650, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "368:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "367:17:16" + }, + "returnParameters": { + "id": 6655, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6654, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6656, + "src": "408:4:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6653, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "408:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "407:6:16" + }, + "scope": 6657, + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 6636, + "name": "IHyperdrive", + "nameLocations": [ + "228:11:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7044, + "src": "228:11:16" + }, + "id": 6637, + "nodeType": "InheritanceSpecifier", + "src": "228:11:16" + } + ], + "canonicalName": "IERC4626Hyperdrive", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "linearizedBaseContracts": [ + 6657, + 7044, + 7346, + 7354, + 7286, + 7536, + 7128, + 7424 + ], + "name": "IERC4626Hyperdrive", + "nameLocation": "206:18:16", + "scope": 6658, + "usedErrors": [ + 6915, + 6917, + 6919, + 6921, + 6923, + 6925, + 6927, + 6929, + 6931, + 6933, + 6935, + 6937, + 6939, + 6941, + 6943, + 6945, + 6947, + 6949, + 6951, + 6953, + 6955, + 6957, + 6959, + 6961, + 6963, + 6965, + 6967, + 6969, + 6971, + 6974, + 6979, + 6983, + 6985, + 6988, + 6990, + 6992, + 6994, + 6996, + 6998, + 7001, + 7003, + 7005, + 7007, + 7009, + 7012, + 7015, + 7017, + 7019, + 7021, + 7023, + 7026, + 7029, + 7031, + 7033, + 7035, + 7038, + 7041, + 7043 + ] + } + ], + "license": "Apache-2.0" + }, + "id": 16 +} \ No newline at end of file diff --git a/packages/hyperdrive/src/abis/IHyperdrive.sol/IHyperdrive.json b/packages/hyperdrive/src/abis/IHyperdrive.sol/IHyperdrive.json index affbc16e9c..2ae52975ab 100644 --- a/packages/hyperdrive/src/abis/IHyperdrive.sol/IHyperdrive.json +++ b/packages/hyperdrive/src/abis/IHyperdrive.sol/IHyperdrive.json @@ -3608,16 +3608,16 @@ }, "settings": { "remappings": [ - ":@aave/=lib/aave-v3-core/contracts/", - ":aave-v3-core/=lib/aave-v3-core/", - ":create3-factory/=lib/yield-daddy/lib/create3-factory/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", - ":forge-std/=lib/forge-std/src/", - ":openzeppelin-contracts/=lib/openzeppelin-contracts/", - ":openzeppelin/=lib/openzeppelin-contracts/contracts/", - ":solmate/=lib/solmate/src/", - ":yield-daddy/=lib/yield-daddy/" + "@aave/=lib/aave-v3-core/contracts/", + "aave-v3-core/=lib/aave-v3-core/", + "create3-factory/=lib/yield-daddy/lib/create3-factory/", + "ds-test/=lib/forge-std/lib/ds-test/src/", + "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", + "forge-std/=lib/forge-std/src/", + "openzeppelin-contracts/=lib/openzeppelin-contracts/", + "openzeppelin/=lib/openzeppelin-contracts/contracts/", + "solmate/=lib/solmate/src/", + "yield-daddy/=lib/yield-daddy/" ], "optimizer": { "enabled": true, @@ -3733,31 +3733,31 @@ }, "ast": { "absolutePath": "contracts/src/interfaces/IHyperdrive.sol", - "id": 7012, + "id": 7071, "exportedSymbols": { "IERC20": [ 6458 ], "IHyperdrive": [ - 7011 + 7070 ], "IHyperdriveRead": [ - 7095 + 7154 ], "IHyperdriveWrite": [ - 7253 + 7312 ], "IMultiToken": [ - 7313 + 7434 ] }, "nodeType": "SourceUnit", - "src": "39:9532:17", + "src": "39:9532:19", "nodes": [ { - "id": 6639, + "id": 6698, "nodeType": "PragmaDirective", - "src": "39:23:17", + "src": "39:23:19", "nodes": [], "literals": [ "solidity", @@ -3766,24 +3766,24 @@ ] }, { - "id": 6641, + "id": 6700, "nodeType": "ImportDirective", - "src": "64:38:17", + "src": "64:38:19", "nodes": [], "absolutePath": "contracts/src/interfaces/IERC20.sol", "file": "./IERC20.sol", "nameLocation": "-1:-1:-1", - "scope": 7012, + "scope": 7071, "sourceUnit": 6459, "symbolAliases": [ { "foreign": { - "id": 6640, + "id": 6699, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6458, - "src": "73:6:17", + "src": "73:6:19", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -3792,24 +3792,24 @@ "unitAlias": "" }, { - "id": 6643, + "id": 6702, "nodeType": "ImportDirective", - "src": "103:56:17", + "src": "103:56:19", "nodes": [], "absolutePath": "contracts/src/interfaces/IHyperdriveRead.sol", "file": "./IHyperdriveRead.sol", "nameLocation": "-1:-1:-1", - "scope": 7012, - "sourceUnit": 7096, + "scope": 7071, + "sourceUnit": 7155, "symbolAliases": [ { "foreign": { - "id": 6642, + "id": 6701, "name": "IHyperdriveRead", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7095, - "src": "112:15:17", + "referencedDeclaration": 7154, + "src": "112:15:19", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -3818,24 +3818,24 @@ "unitAlias": "" }, { - "id": 6645, + "id": 6704, "nodeType": "ImportDirective", - "src": "160:58:17", + "src": "160:58:19", "nodes": [], "absolutePath": "contracts/src/interfaces/IHyperdriveWrite.sol", "file": "./IHyperdriveWrite.sol", "nameLocation": "-1:-1:-1", - "scope": 7012, - "sourceUnit": 7254, + "scope": 7071, + "sourceUnit": 7313, "symbolAliases": [ { "foreign": { - "id": 6644, + "id": 6703, "name": "IHyperdriveWrite", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7253, - "src": "169:16:17", + "referencedDeclaration": 7312, + "src": "169:16:19", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -3844,24 +3844,24 @@ "unitAlias": "" }, { - "id": 6647, + "id": 6706, "nodeType": "ImportDirective", - "src": "219:48:17", + "src": "219:48:19", "nodes": [], "absolutePath": "contracts/src/interfaces/IMultiToken.sol", "file": "./IMultiToken.sol", "nameLocation": "-1:-1:-1", - "scope": 7012, - "sourceUnit": 7314, + "scope": 7071, + "sourceUnit": 7435, "symbolAliases": [ { "foreign": { - "id": 6646, + "id": 6705, "name": "IMultiToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7313, - "src": "228:11:17", + "referencedDeclaration": 7434, + "src": "228:11:19", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -3870,39 +3870,39 @@ "unitAlias": "" }, { - "id": 7011, + "id": 7070, "nodeType": "ContractDefinition", - "src": "269:9301:17", + "src": "269:9301:19", "nodes": [ { - "id": 6664, + "id": 6723, "nodeType": "EventDefinition", - "src": "367:132:17", + "src": "367:132:19", "nodes": [], "anonymous": false, "documentation": { - "id": 6654, + "id": 6713, "nodeType": "StructuredDocumentation", - "src": "347:15:17", + "src": "347:15:19", "text": "Events ///" }, "eventSelector": "60c26087830ee0ee6d86bdb3a10e19f3fd49af366c77421d7fe4596811d6274e", "name": "Initialize", - "nameLocation": "373:10:17", + "nameLocation": "373:10:19", "parameters": { - "id": 6663, + "id": 6722, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6656, + "id": 6715, "indexed": true, "mutability": "mutable", "name": "provider", - "nameLocation": "409:8:17", + "nameLocation": "409:8:19", "nodeType": "VariableDeclaration", - "scope": 6664, - "src": "393:24:17", + "scope": 6723, + "src": "393:24:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3910,10 +3910,10 @@ "typeString": "address" }, "typeName": { - "id": 6655, + "id": 6714, "name": "address", "nodeType": "ElementaryTypeName", - "src": "393:7:17", + "src": "393:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3924,14 +3924,14 @@ }, { "constant": false, - "id": 6658, + "id": 6717, "indexed": false, "mutability": "mutable", "name": "lpAmount", - "nameLocation": "435:8:17", + "nameLocation": "435:8:19", "nodeType": "VariableDeclaration", - "scope": 6664, - "src": "427:16:17", + "scope": 6723, + "src": "427:16:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3939,10 +3939,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6657, + "id": 6716, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "427:7:17", + "src": "427:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3952,14 +3952,14 @@ }, { "constant": false, - "id": 6660, + "id": 6719, "indexed": false, "mutability": "mutable", "name": "baseAmount", - "nameLocation": "461:10:17", + "nameLocation": "461:10:19", "nodeType": "VariableDeclaration", - "scope": 6664, - "src": "453:18:17", + "scope": 6723, + "src": "453:18:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3967,10 +3967,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6659, + "id": 6718, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "453:7:17", + "src": "453:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3980,14 +3980,14 @@ }, { "constant": false, - "id": 6662, + "id": 6721, "indexed": false, "mutability": "mutable", "name": "apr", - "nameLocation": "489:3:17", + "nameLocation": "489:3:19", "nodeType": "VariableDeclaration", - "scope": 6664, - "src": "481:11:17", + "scope": 6723, + "src": "481:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3995,10 +3995,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6661, + "id": 6720, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "481:7:17", + "src": "481:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4007,32 +4007,32 @@ "visibility": "internal" } ], - "src": "383:115:17" + "src": "383:115:19" } }, { - "id": 6672, + "id": 6731, "nodeType": "EventDefinition", - "src": "505:113:17", + "src": "505:113:19", "nodes": [], "anonymous": false, "eventSelector": "06239653922ac7bea6aa2b19dc486b9361821d37712eb796adfd38d81de278ca", "name": "AddLiquidity", - "nameLocation": "511:12:17", + "nameLocation": "511:12:19", "parameters": { - "id": 6671, + "id": 6730, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6666, + "id": 6725, "indexed": true, "mutability": "mutable", "name": "provider", - "nameLocation": "549:8:17", + "nameLocation": "549:8:19", "nodeType": "VariableDeclaration", - "scope": 6672, - "src": "533:24:17", + "scope": 6731, + "src": "533:24:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4040,10 +4040,10 @@ "typeString": "address" }, "typeName": { - "id": 6665, + "id": 6724, "name": "address", "nodeType": "ElementaryTypeName", - "src": "533:7:17", + "src": "533:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4054,14 +4054,14 @@ }, { "constant": false, - "id": 6668, + "id": 6727, "indexed": false, "mutability": "mutable", "name": "lpAmount", - "nameLocation": "575:8:17", + "nameLocation": "575:8:19", "nodeType": "VariableDeclaration", - "scope": 6672, - "src": "567:16:17", + "scope": 6731, + "src": "567:16:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4069,10 +4069,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6667, + "id": 6726, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "567:7:17", + "src": "567:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4082,14 +4082,14 @@ }, { "constant": false, - "id": 6670, + "id": 6729, "indexed": false, "mutability": "mutable", "name": "baseAmount", - "nameLocation": "601:10:17", + "nameLocation": "601:10:19", "nodeType": "VariableDeclaration", - "scope": 6672, - "src": "593:18:17", + "scope": 6731, + "src": "593:18:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4097,10 +4097,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6669, + "id": 6728, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "593:7:17", + "src": "593:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4109,32 +4109,32 @@ "visibility": "internal" } ], - "src": "523:94:17" + "src": "523:94:19" } }, { - "id": 6682, + "id": 6741, "nodeType": "EventDefinition", - "src": "624:155:17", + "src": "624:155:19", "nodes": [], "anonymous": false, "eventSelector": "59c3a0b60c6ab7deb62e1440c9e72441db6db7dfe514dba8cb18e60c0d896efa", "name": "RemoveLiquidity", - "nameLocation": "630:15:17", + "nameLocation": "630:15:19", "parameters": { - "id": 6681, + "id": 6740, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6674, + "id": 6733, "indexed": true, "mutability": "mutable", "name": "provider", - "nameLocation": "671:8:17", + "nameLocation": "671:8:19", "nodeType": "VariableDeclaration", - "scope": 6682, - "src": "655:24:17", + "scope": 6741, + "src": "655:24:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4142,10 +4142,10 @@ "typeString": "address" }, "typeName": { - "id": 6673, + "id": 6732, "name": "address", "nodeType": "ElementaryTypeName", - "src": "655:7:17", + "src": "655:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4156,14 +4156,14 @@ }, { "constant": false, - "id": 6676, + "id": 6735, "indexed": false, "mutability": "mutable", "name": "lpAmount", - "nameLocation": "697:8:17", + "nameLocation": "697:8:19", "nodeType": "VariableDeclaration", - "scope": 6682, - "src": "689:16:17", + "scope": 6741, + "src": "689:16:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4171,10 +4171,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6675, + "id": 6734, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "689:7:17", + "src": "689:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4184,14 +4184,14 @@ }, { "constant": false, - "id": 6678, + "id": 6737, "indexed": false, "mutability": "mutable", "name": "baseAmount", - "nameLocation": "723:10:17", + "nameLocation": "723:10:19", "nodeType": "VariableDeclaration", - "scope": 6682, - "src": "715:18:17", + "scope": 6741, + "src": "715:18:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4199,10 +4199,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6677, + "id": 6736, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "715:7:17", + "src": "715:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4212,14 +4212,14 @@ }, { "constant": false, - "id": 6680, + "id": 6739, "indexed": false, "mutability": "mutable", "name": "withdrawalShareAmount", - "nameLocation": "751:21:17", + "nameLocation": "751:21:19", "nodeType": "VariableDeclaration", - "scope": 6682, - "src": "743:29:17", + "scope": 6741, + "src": "743:29:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4227,10 +4227,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6679, + "id": 6738, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "743:7:17", + "src": "743:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4239,32 +4239,32 @@ "visibility": "internal" } ], - "src": "645:133:17" + "src": "645:133:19" } }, { - "id": 6690, + "id": 6749, "nodeType": "EventDefinition", - "src": "785:136:17", + "src": "785:136:19", "nodes": [], "anonymous": false, "eventSelector": "07cd0949bbc0d60ad35053a0459db413c148f758b7781aaf6b258018d18ad0ac", "name": "RedeemWithdrawalShares", - "nameLocation": "791:22:17", + "nameLocation": "791:22:19", "parameters": { - "id": 6689, + "id": 6748, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6684, + "id": 6743, "indexed": true, "mutability": "mutable", "name": "provider", - "nameLocation": "839:8:17", + "nameLocation": "839:8:19", "nodeType": "VariableDeclaration", - "scope": 6690, - "src": "823:24:17", + "scope": 6749, + "src": "823:24:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4272,10 +4272,10 @@ "typeString": "address" }, "typeName": { - "id": 6683, + "id": 6742, "name": "address", "nodeType": "ElementaryTypeName", - "src": "823:7:17", + "src": "823:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4286,14 +4286,14 @@ }, { "constant": false, - "id": 6686, + "id": 6745, "indexed": false, "mutability": "mutable", "name": "withdrawalShareAmount", - "nameLocation": "865:21:17", + "nameLocation": "865:21:19", "nodeType": "VariableDeclaration", - "scope": 6690, - "src": "857:29:17", + "scope": 6749, + "src": "857:29:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4301,10 +4301,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6685, + "id": 6744, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "857:7:17", + "src": "857:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4314,14 +4314,14 @@ }, { "constant": false, - "id": 6688, + "id": 6747, "indexed": false, "mutability": "mutable", "name": "baseAmount", - "nameLocation": "904:10:17", + "nameLocation": "904:10:19", "nodeType": "VariableDeclaration", - "scope": 6690, - "src": "896:18:17", + "scope": 6749, + "src": "896:18:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4329,10 +4329,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6687, + "id": 6746, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "896:7:17", + "src": "896:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4341,32 +4341,32 @@ "visibility": "internal" } ], - "src": "813:107:17" + "src": "813:107:19" } }, { - "id": 6702, + "id": 6761, "nodeType": "EventDefinition", - "src": "927:172:17", + "src": "927:172:19", "nodes": [], "anonymous": false, "eventSelector": "7b7d51ee23746cf6ef2078de2a5b53073226b516a1c892a1e882c581026bf4b3", "name": "OpenLong", - "nameLocation": "933:8:17", + "nameLocation": "933:8:19", "parameters": { - "id": 6701, + "id": 6760, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6692, + "id": 6751, "indexed": true, "mutability": "mutable", "name": "trader", - "nameLocation": "967:6:17", + "nameLocation": "967:6:19", "nodeType": "VariableDeclaration", - "scope": 6702, - "src": "951:22:17", + "scope": 6761, + "src": "951:22:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4374,10 +4374,10 @@ "typeString": "address" }, "typeName": { - "id": 6691, + "id": 6750, "name": "address", "nodeType": "ElementaryTypeName", - "src": "951:7:17", + "src": "951:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4388,14 +4388,14 @@ }, { "constant": false, - "id": 6694, + "id": 6753, "indexed": true, "mutability": "mutable", "name": "assetId", - "nameLocation": "999:7:17", + "nameLocation": "999:7:19", "nodeType": "VariableDeclaration", - "scope": 6702, - "src": "983:23:17", + "scope": 6761, + "src": "983:23:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4403,10 +4403,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6693, + "id": 6752, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "983:7:17", + "src": "983:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4416,14 +4416,14 @@ }, { "constant": false, - "id": 6696, + "id": 6755, "indexed": false, "mutability": "mutable", "name": "maturityTime", - "nameLocation": "1024:12:17", + "nameLocation": "1024:12:19", "nodeType": "VariableDeclaration", - "scope": 6702, - "src": "1016:20:17", + "scope": 6761, + "src": "1016:20:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4431,10 +4431,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6695, + "id": 6754, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1016:7:17", + "src": "1016:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4444,14 +4444,14 @@ }, { "constant": false, - "id": 6698, + "id": 6757, "indexed": false, "mutability": "mutable", "name": "baseAmount", - "nameLocation": "1054:10:17", + "nameLocation": "1054:10:19", "nodeType": "VariableDeclaration", - "scope": 6702, - "src": "1046:18:17", + "scope": 6761, + "src": "1046:18:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4459,10 +4459,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6697, + "id": 6756, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1046:7:17", + "src": "1046:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4472,14 +4472,14 @@ }, { "constant": false, - "id": 6700, + "id": 6759, "indexed": false, "mutability": "mutable", "name": "bondAmount", - "nameLocation": "1082:10:17", + "nameLocation": "1082:10:19", "nodeType": "VariableDeclaration", - "scope": 6702, - "src": "1074:18:17", + "scope": 6761, + "src": "1074:18:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4487,10 +4487,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6699, + "id": 6758, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1074:7:17", + "src": "1074:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4499,32 +4499,32 @@ "visibility": "internal" } ], - "src": "941:157:17" + "src": "941:157:19" } }, { - "id": 6714, + "id": 6773, "nodeType": "EventDefinition", - "src": "1105:173:17", + "src": "1105:173:19", "nodes": [], "anonymous": false, "eventSelector": "851bac68873b7adb346bcf4bff36324c6f322b58f9f0f50c1d3a8568242ca66b", "name": "OpenShort", - "nameLocation": "1111:9:17", + "nameLocation": "1111:9:19", "parameters": { - "id": 6713, + "id": 6772, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6704, + "id": 6763, "indexed": true, "mutability": "mutable", "name": "trader", - "nameLocation": "1146:6:17", + "nameLocation": "1146:6:19", "nodeType": "VariableDeclaration", - "scope": 6714, - "src": "1130:22:17", + "scope": 6773, + "src": "1130:22:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4532,10 +4532,10 @@ "typeString": "address" }, "typeName": { - "id": 6703, + "id": 6762, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1130:7:17", + "src": "1130:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4546,14 +4546,14 @@ }, { "constant": false, - "id": 6706, + "id": 6765, "indexed": true, "mutability": "mutable", "name": "assetId", - "nameLocation": "1178:7:17", + "nameLocation": "1178:7:19", "nodeType": "VariableDeclaration", - "scope": 6714, - "src": "1162:23:17", + "scope": 6773, + "src": "1162:23:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4561,10 +4561,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6705, + "id": 6764, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1162:7:17", + "src": "1162:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4574,14 +4574,14 @@ }, { "constant": false, - "id": 6708, + "id": 6767, "indexed": false, "mutability": "mutable", "name": "maturityTime", - "nameLocation": "1203:12:17", + "nameLocation": "1203:12:19", "nodeType": "VariableDeclaration", - "scope": 6714, - "src": "1195:20:17", + "scope": 6773, + "src": "1195:20:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4589,10 +4589,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6707, + "id": 6766, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1195:7:17", + "src": "1195:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4602,14 +4602,14 @@ }, { "constant": false, - "id": 6710, + "id": 6769, "indexed": false, "mutability": "mutable", "name": "baseAmount", - "nameLocation": "1233:10:17", + "nameLocation": "1233:10:19", "nodeType": "VariableDeclaration", - "scope": 6714, - "src": "1225:18:17", + "scope": 6773, + "src": "1225:18:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4617,10 +4617,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6709, + "id": 6768, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1225:7:17", + "src": "1225:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4630,14 +4630,14 @@ }, { "constant": false, - "id": 6712, + "id": 6771, "indexed": false, "mutability": "mutable", "name": "bondAmount", - "nameLocation": "1261:10:17", + "nameLocation": "1261:10:19", "nodeType": "VariableDeclaration", - "scope": 6714, - "src": "1253:18:17", + "scope": 6773, + "src": "1253:18:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4645,10 +4645,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6711, + "id": 6770, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1253:7:17", + "src": "1253:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4657,32 +4657,32 @@ "visibility": "internal" } ], - "src": "1120:157:17" + "src": "1120:157:19" } }, { - "id": 6726, + "id": 6785, "nodeType": "EventDefinition", - "src": "1284:173:17", + "src": "1284:173:19", "nodes": [], "anonymous": false, "eventSelector": "e8c2c201cc00307ad7ec0d92d7ee5f89a796b4b1134d1672b08939eaf504d68c", "name": "CloseLong", - "nameLocation": "1290:9:17", + "nameLocation": "1290:9:19", "parameters": { - "id": 6725, + "id": 6784, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6716, + "id": 6775, "indexed": true, "mutability": "mutable", "name": "trader", - "nameLocation": "1325:6:17", + "nameLocation": "1325:6:19", "nodeType": "VariableDeclaration", - "scope": 6726, - "src": "1309:22:17", + "scope": 6785, + "src": "1309:22:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4690,10 +4690,10 @@ "typeString": "address" }, "typeName": { - "id": 6715, + "id": 6774, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1309:7:17", + "src": "1309:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4704,14 +4704,14 @@ }, { "constant": false, - "id": 6718, + "id": 6777, "indexed": true, "mutability": "mutable", "name": "assetId", - "nameLocation": "1357:7:17", + "nameLocation": "1357:7:19", "nodeType": "VariableDeclaration", - "scope": 6726, - "src": "1341:23:17", + "scope": 6785, + "src": "1341:23:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4719,10 +4719,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6717, + "id": 6776, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1341:7:17", + "src": "1341:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4732,14 +4732,14 @@ }, { "constant": false, - "id": 6720, + "id": 6779, "indexed": false, "mutability": "mutable", "name": "maturityTime", - "nameLocation": "1382:12:17", + "nameLocation": "1382:12:19", "nodeType": "VariableDeclaration", - "scope": 6726, - "src": "1374:20:17", + "scope": 6785, + "src": "1374:20:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4747,10 +4747,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6719, + "id": 6778, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1374:7:17", + "src": "1374:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4760,14 +4760,14 @@ }, { "constant": false, - "id": 6722, + "id": 6781, "indexed": false, "mutability": "mutable", "name": "baseAmount", - "nameLocation": "1412:10:17", + "nameLocation": "1412:10:19", "nodeType": "VariableDeclaration", - "scope": 6726, - "src": "1404:18:17", + "scope": 6785, + "src": "1404:18:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4775,10 +4775,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6721, + "id": 6780, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1404:7:17", + "src": "1404:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4788,14 +4788,14 @@ }, { "constant": false, - "id": 6724, + "id": 6783, "indexed": false, "mutability": "mutable", "name": "bondAmount", - "nameLocation": "1440:10:17", + "nameLocation": "1440:10:19", "nodeType": "VariableDeclaration", - "scope": 6726, - "src": "1432:18:17", + "scope": 6785, + "src": "1432:18:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4803,10 +4803,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6723, + "id": 6782, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1432:7:17", + "src": "1432:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4815,32 +4815,32 @@ "visibility": "internal" } ], - "src": "1299:157:17" + "src": "1299:157:19" } }, { - "id": 6738, + "id": 6797, "nodeType": "EventDefinition", - "src": "1463:174:17", + "src": "1463:174:19", "nodes": [], "anonymous": false, "eventSelector": "39d1403e56c69205ef368007a55ee1304b0f388631dca237a1710d04e3e8950f", "name": "CloseShort", - "nameLocation": "1469:10:17", + "nameLocation": "1469:10:19", "parameters": { - "id": 6737, + "id": 6796, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6728, + "id": 6787, "indexed": true, "mutability": "mutable", "name": "trader", - "nameLocation": "1505:6:17", + "nameLocation": "1505:6:19", "nodeType": "VariableDeclaration", - "scope": 6738, - "src": "1489:22:17", + "scope": 6797, + "src": "1489:22:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4848,10 +4848,10 @@ "typeString": "address" }, "typeName": { - "id": 6727, + "id": 6786, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1489:7:17", + "src": "1489:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4862,14 +4862,14 @@ }, { "constant": false, - "id": 6730, + "id": 6789, "indexed": true, "mutability": "mutable", "name": "assetId", - "nameLocation": "1537:7:17", + "nameLocation": "1537:7:19", "nodeType": "VariableDeclaration", - "scope": 6738, - "src": "1521:23:17", + "scope": 6797, + "src": "1521:23:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4877,10 +4877,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6729, + "id": 6788, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1521:7:17", + "src": "1521:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4890,14 +4890,14 @@ }, { "constant": false, - "id": 6732, + "id": 6791, "indexed": false, "mutability": "mutable", "name": "maturityTime", - "nameLocation": "1562:12:17", + "nameLocation": "1562:12:19", "nodeType": "VariableDeclaration", - "scope": 6738, - "src": "1554:20:17", + "scope": 6797, + "src": "1554:20:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4905,10 +4905,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6731, + "id": 6790, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1554:7:17", + "src": "1554:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4918,14 +4918,14 @@ }, { "constant": false, - "id": 6734, + "id": 6793, "indexed": false, "mutability": "mutable", "name": "baseAmount", - "nameLocation": "1592:10:17", + "nameLocation": "1592:10:19", "nodeType": "VariableDeclaration", - "scope": 6738, - "src": "1584:18:17", + "scope": 6797, + "src": "1584:18:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4933,10 +4933,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6733, + "id": 6792, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1584:7:17", + "src": "1584:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4946,14 +4946,14 @@ }, { "constant": false, - "id": 6736, + "id": 6795, "indexed": false, "mutability": "mutable", "name": "bondAmount", - "nameLocation": "1620:10:17", + "nameLocation": "1620:10:19", "nodeType": "VariableDeclaration", - "scope": 6738, - "src": "1612:18:17", + "scope": 6797, + "src": "1612:18:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4961,10 +4961,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6735, + "id": 6794, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1612:7:17", + "src": "1612:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4973,25 +4973,25 @@ "visibility": "internal" } ], - "src": "1479:157:17" + "src": "1479:157:19" } }, { - "id": 6769, + "id": 6828, "nodeType": "StructDefinition", - "src": "1738:1060:17", + "src": "1738:1060:19", "nodes": [], "canonicalName": "IHyperdrive.MarketState", "members": [ { "constant": false, - "id": 6741, + "id": 6800, "mutability": "mutable", "name": "shareReserves", - "nameLocation": "1819:13:17", + "nameLocation": "1819:13:19", "nodeType": "VariableDeclaration", - "scope": 6769, - "src": "1811:21:17", + "scope": 6828, + "src": "1811:21:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4999,10 +4999,10 @@ "typeString": "uint128" }, "typeName": { - "id": 6740, + "id": 6799, "name": "uint128", "nodeType": "ElementaryTypeName", - "src": "1811:7:17", + "src": "1811:7:19", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" @@ -5012,13 +5012,13 @@ }, { "constant": false, - "id": 6744, + "id": 6803, "mutability": "mutable", "name": "bondReserves", - "nameLocation": "1893:12:17", + "nameLocation": "1893:12:19", "nodeType": "VariableDeclaration", - "scope": 6769, - "src": "1885:20:17", + "scope": 6828, + "src": "1885:20:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5026,10 +5026,10 @@ "typeString": "uint128" }, "typeName": { - "id": 6743, + "id": 6802, "name": "uint128", "nodeType": "ElementaryTypeName", - "src": "1885:7:17", + "src": "1885:7:19", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" @@ -5039,13 +5039,13 @@ }, { "constant": false, - "id": 6747, + "id": 6806, "mutability": "mutable", "name": "shareAdjustment", - "nameLocation": "2059:15:17", + "nameLocation": "2059:15:19", "nodeType": "VariableDeclaration", - "scope": 6769, - "src": "2052:22:17", + "scope": 6828, + "src": "2052:22:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5053,10 +5053,10 @@ "typeString": "int128" }, "typeName": { - "id": 6746, + "id": 6805, "name": "int128", "nodeType": "ElementaryTypeName", - "src": "2052:6:17", + "src": "2052:6:19", "typeDescriptions": { "typeIdentifier": "t_int128", "typeString": "int128" @@ -5066,13 +5066,13 @@ }, { "constant": false, - "id": 6750, + "id": 6809, "mutability": "mutable", "name": "longExposure", - "nameLocation": "2159:12:17", + "nameLocation": "2159:12:19", "nodeType": "VariableDeclaration", - "scope": 6769, - "src": "2151:20:17", + "scope": 6828, + "src": "2151:20:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5080,10 +5080,10 @@ "typeString": "uint128" }, "typeName": { - "id": 6749, + "id": 6808, "name": "uint128", "nodeType": "ElementaryTypeName", - "src": "2151:7:17", + "src": "2151:7:19", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" @@ -5093,13 +5093,13 @@ }, { "constant": false, - "id": 6753, + "id": 6812, "mutability": "mutable", "name": "longsOutstanding", - "nameLocation": "2247:16:17", + "nameLocation": "2247:16:19", "nodeType": "VariableDeclaration", - "scope": 6769, - "src": "2239:24:17", + "scope": 6828, + "src": "2239:24:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5107,10 +5107,10 @@ "typeString": "uint128" }, "typeName": { - "id": 6752, + "id": 6811, "name": "uint128", "nodeType": "ElementaryTypeName", - "src": "2239:7:17", + "src": "2239:7:19", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" @@ -5120,13 +5120,13 @@ }, { "constant": false, - "id": 6756, + "id": 6815, "mutability": "mutable", "name": "shortsOutstanding", - "nameLocation": "2340:17:17", + "nameLocation": "2340:17:19", "nodeType": "VariableDeclaration", - "scope": 6769, - "src": "2332:25:17", + "scope": 6828, + "src": "2332:25:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5134,10 +5134,10 @@ "typeString": "uint128" }, "typeName": { - "id": 6755, + "id": 6814, "name": "uint128", "nodeType": "ElementaryTypeName", - "src": "2332:7:17", + "src": "2332:7:19", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" @@ -5147,13 +5147,13 @@ }, { "constant": false, - "id": 6759, + "id": 6818, "mutability": "mutable", "name": "longAverageMaturityTime", - "nameLocation": "2449:23:17", + "nameLocation": "2449:23:19", "nodeType": "VariableDeclaration", - "scope": 6769, - "src": "2441:31:17", + "scope": 6828, + "src": "2441:31:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5161,10 +5161,10 @@ "typeString": "uint128" }, "typeName": { - "id": 6758, + "id": 6817, "name": "uint128", "nodeType": "ElementaryTypeName", - "src": "2441:7:17", + "src": "2441:7:19", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" @@ -5174,13 +5174,13 @@ }, { "constant": false, - "id": 6762, + "id": 6821, "mutability": "mutable", "name": "shortAverageMaturityTime", - "nameLocation": "2565:24:17", + "nameLocation": "2565:24:19", "nodeType": "VariableDeclaration", - "scope": 6769, - "src": "2557:32:17", + "scope": 6828, + "src": "2557:32:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5188,10 +5188,10 @@ "typeString": "uint128" }, "typeName": { - "id": 6761, + "id": 6820, "name": "uint128", "nodeType": "ElementaryTypeName", - "src": "2557:7:17", + "src": "2557:7:19", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" @@ -5201,13 +5201,13 @@ }, { "constant": false, - "id": 6765, + "id": 6824, "mutability": "mutable", "name": "isInitialized", - "nameLocation": "2685:13:17", + "nameLocation": "2685:13:19", "nodeType": "VariableDeclaration", - "scope": 6769, - "src": "2680:18:17", + "scope": 6828, + "src": "2680:18:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5215,10 +5215,10 @@ "typeString": "bool" }, "typeName": { - "id": 6764, + "id": 6823, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2680:4:17", + "src": "2680:4:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5228,13 +5228,13 @@ }, { "constant": false, - "id": 6768, + "id": 6827, "mutability": "mutable", "name": "isPaused", - "nameLocation": "2783:8:17", + "nameLocation": "2783:8:19", "nodeType": "VariableDeclaration", - "scope": 6769, - "src": "2778:13:17", + "scope": 6828, + "src": "2778:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5242,10 +5242,10 @@ "typeString": "bool" }, "typeName": { - "id": 6767, + "id": 6826, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2778:4:17", + "src": "2778:4:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5255,26 +5255,26 @@ } ], "name": "MarketState", - "nameLocation": "1745:11:17", - "scope": 7011, + "nameLocation": "1745:11:19", + "scope": 7070, "visibility": "public" }, { - "id": 6776, + "id": 6835, "nodeType": "StructDefinition", - "src": "2804:390:17", + "src": "2804:390:19", "nodes": [], "canonicalName": "IHyperdrive.Checkpoint", "members": [ { "constant": false, - "id": 6772, + "id": 6831, "mutability": "mutable", "name": "sharePrice", - "nameLocation": "3098:10:17", + "nameLocation": "3098:10:19", "nodeType": "VariableDeclaration", - "scope": 6776, - "src": "3090:18:17", + "scope": 6835, + "src": "3090:18:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5282,10 +5282,10 @@ "typeString": "uint128" }, "typeName": { - "id": 6771, + "id": 6830, "name": "uint128", "nodeType": "ElementaryTypeName", - "src": "3090:7:17", + "src": "3090:7:19", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" @@ -5295,13 +5295,13 @@ }, { "constant": false, - "id": 6775, + "id": 6834, "mutability": "mutable", "name": "longExposure", - "nameLocation": "3175:12:17", + "nameLocation": "3175:12:19", "nodeType": "VariableDeclaration", - "scope": 6776, - "src": "3168:19:17", + "scope": 6835, + "src": "3168:19:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5309,10 +5309,10 @@ "typeString": "int128" }, "typeName": { - "id": 6774, + "id": 6833, "name": "int128", "nodeType": "ElementaryTypeName", - "src": "3168:6:17", + "src": "3168:6:19", "typeDescriptions": { "typeIdentifier": "t_int128", "typeString": "int128" @@ -5322,26 +5322,26 @@ } ], "name": "Checkpoint", - "nameLocation": "2811:10:17", - "scope": 7011, + "nameLocation": "2811:10:19", + "scope": 7070, "visibility": "public" }, { - "id": 6783, + "id": 6842, "nodeType": "StructDefinition", - "src": "3200:230:17", + "src": "3200:230:19", "nodes": [], "canonicalName": "IHyperdrive.WithdrawPool", "members": [ { "constant": false, - "id": 6779, + "id": 6838, "mutability": "mutable", "name": "readyToWithdraw", - "nameLocation": "3318:15:17", + "nameLocation": "3318:15:19", "nodeType": "VariableDeclaration", - "scope": 6783, - "src": "3310:23:17", + "scope": 6842, + "src": "3310:23:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5349,10 +5349,10 @@ "typeString": "uint128" }, "typeName": { - "id": 6778, + "id": 6837, "name": "uint128", "nodeType": "ElementaryTypeName", - "src": "3310:7:17", + "src": "3310:7:19", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" @@ -5362,13 +5362,13 @@ }, { "constant": false, - "id": 6782, + "id": 6841, "mutability": "mutable", "name": "proceeds", - "nameLocation": "3415:8:17", + "nameLocation": "3415:8:19", "nodeType": "VariableDeclaration", - "scope": 6783, - "src": "3407:16:17", + "scope": 6842, + "src": "3407:16:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5376,10 +5376,10 @@ "typeString": "uint128" }, "typeName": { - "id": 6781, + "id": 6840, "name": "uint128", "nodeType": "ElementaryTypeName", - "src": "3407:7:17", + "src": "3407:7:19", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" @@ -5389,26 +5389,26 @@ } ], "name": "WithdrawPool", - "nameLocation": "3207:12:17", - "scope": 7011, + "nameLocation": "3207:12:19", + "scope": 7070, "visibility": "public" }, { - "id": 6793, + "id": 6852, "nodeType": "StructDefinition", - "src": "3436:297:17", + "src": "3436:297:19", "nodes": [], "canonicalName": "IHyperdrive.Fees", "members": [ { "constant": false, - "id": 6786, + "id": 6845, "mutability": "mutable", "name": "curve", - "nameLocation": "3535:5:17", + "nameLocation": "3535:5:19", "nodeType": "VariableDeclaration", - "scope": 6793, - "src": "3527:13:17", + "scope": 6852, + "src": "3527:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5416,10 +5416,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6785, + "id": 6844, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3527:7:17", + "src": "3527:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5429,13 +5429,13 @@ }, { "constant": false, - "id": 6789, + "id": 6848, "mutability": "mutable", "name": "flat", - "nameLocation": "3626:4:17", + "nameLocation": "3626:4:19", "nodeType": "VariableDeclaration", - "scope": 6793, - "src": "3618:12:17", + "scope": 6852, + "src": "3618:12:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5443,10 +5443,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6788, + "id": 6847, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3618:7:17", + "src": "3618:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5456,13 +5456,13 @@ }, { "constant": false, - "id": 6792, + "id": 6851, "mutability": "mutable", "name": "governance", - "nameLocation": "3716:10:17", + "nameLocation": "3716:10:19", "nodeType": "VariableDeclaration", - "scope": 6793, - "src": "3708:18:17", + "scope": 6852, + "src": "3708:18:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5470,10 +5470,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6791, + "id": 6850, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3708:7:17", + "src": "3708:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5483,26 +5483,26 @@ } ], "name": "Fees", - "nameLocation": "3443:4:17", - "scope": 7011, + "nameLocation": "3443:4:19", + "scope": 7070, "visibility": "public" }, { - "id": 6832, + "id": 6891, "nodeType": "StructDefinition", - "src": "3739:1093:17", + "src": "3739:1093:19", "nodes": [], "canonicalName": "IHyperdrive.PoolConfig", "members": [ { "constant": false, - "id": 6797, + "id": 6856, "mutability": "mutable", "name": "baseToken", - "nameLocation": "3822:9:17", + "nameLocation": "3822:9:19", "nodeType": "VariableDeclaration", - "scope": 6832, - "src": "3815:16:17", + "scope": 6891, + "src": "3815:16:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5510,20 +5510,20 @@ "typeString": "contract IERC20" }, "typeName": { - "id": 6796, + "id": 6855, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 6795, + "id": 6854, "name": "IERC20", "nameLocations": [ - "3815:6:17" + "3815:6:19" ], "nodeType": "IdentifierPath", "referencedDeclaration": 6458, - "src": "3815:6:17" + "src": "3815:6:19" }, "referencedDeclaration": 6458, - "src": "3815:6:17", + "src": "3815:6:19", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$6458", "typeString": "contract IERC20" @@ -5533,13 +5533,13 @@ }, { "constant": false, - "id": 6800, + "id": 6859, "mutability": "mutable", "name": "initialSharePrice", - "nameLocation": "3891:17:17", + "nameLocation": "3891:17:19", "nodeType": "VariableDeclaration", - "scope": 6832, - "src": "3883:25:17", + "scope": 6891, + "src": "3883:25:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5547,10 +5547,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6799, + "id": 6858, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3883:7:17", + "src": "3883:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5560,13 +5560,13 @@ }, { "constant": false, - "id": 6803, + "id": 6862, "mutability": "mutable", "name": "minimumShareReserves", - "nameLocation": "3971:20:17", + "nameLocation": "3971:20:19", "nodeType": "VariableDeclaration", - "scope": 6832, - "src": "3963:28:17", + "scope": 6891, + "src": "3963:28:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5574,10 +5574,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6802, + "id": 6861, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3963:7:17", + "src": "3963:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5587,13 +5587,13 @@ }, { "constant": false, - "id": 6806, + "id": 6865, "mutability": "mutable", "name": "minimumTransactionAmount", - "nameLocation": "4098:24:17", + "nameLocation": "4098:24:19", "nodeType": "VariableDeclaration", - "scope": 6832, - "src": "4090:32:17", + "scope": 6891, + "src": "4090:32:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5601,10 +5601,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6805, + "id": 6864, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4090:7:17", + "src": "4090:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5614,13 +5614,13 @@ }, { "constant": false, - "id": 6809, + "id": 6868, "mutability": "mutable", "name": "positionDuration", - "nameLocation": "4203:16:17", + "nameLocation": "4203:16:19", "nodeType": "VariableDeclaration", - "scope": 6832, - "src": "4195:24:17", + "scope": 6891, + "src": "4195:24:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5628,10 +5628,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6808, + "id": 6867, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4195:7:17", + "src": "4195:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5641,13 +5641,13 @@ }, { "constant": false, - "id": 6812, + "id": 6871, "mutability": "mutable", "name": "checkpointDuration", - "nameLocation": "4284:18:17", + "nameLocation": "4284:18:19", "nodeType": "VariableDeclaration", - "scope": 6832, - "src": "4276:26:17", + "scope": 6891, + "src": "4276:26:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5655,10 +5655,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6811, + "id": 6870, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4276:7:17", + "src": "4276:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5668,13 +5668,13 @@ }, { "constant": false, - "id": 6815, + "id": 6874, "mutability": "mutable", "name": "timeStretch", - "nameLocation": "4396:11:17", + "nameLocation": "4396:11:19", "nodeType": "VariableDeclaration", - "scope": 6832, - "src": "4388:19:17", + "scope": 6891, + "src": "4388:19:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5682,10 +5682,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6814, + "id": 6873, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4388:7:17", + "src": "4388:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5695,13 +5695,13 @@ }, { "constant": false, - "id": 6818, + "id": 6877, "mutability": "mutable", "name": "governance", - "nameLocation": "4482:10:17", + "nameLocation": "4482:10:19", "nodeType": "VariableDeclaration", - "scope": 6832, - "src": "4474:18:17", + "scope": 6891, + "src": "4474:18:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5709,10 +5709,10 @@ "typeString": "address" }, "typeName": { - "id": 6817, + "id": 6876, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4474:7:17", + "src": "4474:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5723,13 +5723,13 @@ }, { "constant": false, - "id": 6821, + "id": 6880, "mutability": "mutable", "name": "feeCollector", - "nameLocation": "4570:12:17", + "nameLocation": "4570:12:19", "nodeType": "VariableDeclaration", - "scope": 6832, - "src": "4562:20:17", + "scope": 6891, + "src": "4562:20:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5737,10 +5737,10 @@ "typeString": "address" }, "typeName": { - "id": 6820, + "id": 6879, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4562:7:17", + "src": "4562:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5751,37 +5751,37 @@ }, { "constant": false, - "id": 6825, + "id": 6884, "mutability": "mutable", "name": "fees", - "nameLocation": "4654:4:17", + "nameLocation": "4654:4:19", "nodeType": "VariableDeclaration", - "scope": 6832, - "src": "4637:21:17", + "scope": 6891, + "src": "4637:21:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Fees_$6793_storage_ptr", + "typeIdentifier": "t_struct$_Fees_$6852_storage_ptr", "typeString": "struct IHyperdrive.Fees" }, "typeName": { - "id": 6824, + "id": 6883, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 6823, + "id": 6882, "name": "IHyperdrive.Fees", "nameLocations": [ - "4637:11:17", - "4649:4:17" + "4637:11:19", + "4649:4:19" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6793, - "src": "4637:16:17" + "referencedDeclaration": 6852, + "src": "4637:16:19" }, - "referencedDeclaration": 6793, - "src": "4637:16:17", + "referencedDeclaration": 6852, + "src": "4637:16:19", "typeDescriptions": { - "typeIdentifier": "t_struct$_Fees_$6793_storage_ptr", + "typeIdentifier": "t_struct$_Fees_$6852_storage_ptr", "typeString": "struct IHyperdrive.Fees" } }, @@ -5789,13 +5789,13 @@ }, { "constant": false, - "id": 6828, + "id": 6887, "mutability": "mutable", "name": "oracleSize", - "nameLocation": "4730:10:17", + "nameLocation": "4730:10:19", "nodeType": "VariableDeclaration", - "scope": 6832, - "src": "4722:18:17", + "scope": 6891, + "src": "4722:18:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5803,10 +5803,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6827, + "id": 6886, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4722:7:17", + "src": "4722:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5816,13 +5816,13 @@ }, { "constant": false, - "id": 6831, + "id": 6890, "mutability": "mutable", "name": "updateGap", - "nameLocation": "4816:9:17", + "nameLocation": "4816:9:19", "nodeType": "VariableDeclaration", - "scope": 6832, - "src": "4808:17:17", + "scope": 6891, + "src": "4808:17:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5830,10 +5830,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6830, + "id": 6889, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4808:7:17", + "src": "4808:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5843,26 +5843,26 @@ } ], "name": "PoolConfig", - "nameLocation": "3746:10:17", - "scope": 7011, + "nameLocation": "3746:10:19", + "scope": 7070, "visibility": "public" }, { - "id": 6872, + "id": 6931, "nodeType": "StructDefinition", - "src": "4838:1529:17", + "src": "4838:1529:19", "nodes": [], "canonicalName": "IHyperdrive.PoolInfo", "members": [ { "constant": false, - "id": 6835, + "id": 6894, "mutability": "mutable", "name": "shareReserves", - "nameLocation": "4930:13:17", + "nameLocation": "4930:13:19", "nodeType": "VariableDeclaration", - "scope": 6872, - "src": "4922:21:17", + "scope": 6931, + "src": "4922:21:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5870,10 +5870,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6834, + "id": 6893, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4922:7:17", + "src": "4922:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5883,13 +5883,13 @@ }, { "constant": false, - "id": 6838, + "id": 6897, "mutability": "mutable", "name": "shareAdjustment", - "nameLocation": "5185:15:17", + "nameLocation": "5185:15:19", "nodeType": "VariableDeclaration", - "scope": 6872, - "src": "5178:22:17", + "scope": 6931, + "src": "5178:22:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5897,10 +5897,10 @@ "typeString": "int256" }, "typeName": { - "id": 6837, + "id": 6896, "name": "int256", "nodeType": "ElementaryTypeName", - "src": "5178:6:17", + "src": "5178:6:19", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" @@ -5910,13 +5910,13 @@ }, { "constant": false, - "id": 6841, + "id": 6900, "mutability": "mutable", "name": "bondReserves", - "nameLocation": "5275:12:17", + "nameLocation": "5275:12:19", "nodeType": "VariableDeclaration", - "scope": 6872, - "src": "5267:20:17", + "scope": 6931, + "src": "5267:20:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5924,10 +5924,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6840, + "id": 6899, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5267:7:17", + "src": "5267:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5937,13 +5937,13 @@ }, { "constant": false, - "id": 6844, + "id": 6903, "mutability": "mutable", "name": "lpTotalSupply", - "nameLocation": "5353:13:17", + "nameLocation": "5353:13:19", "nodeType": "VariableDeclaration", - "scope": 6872, - "src": "5345:21:17", + "scope": 6931, + "src": "5345:21:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5951,10 +5951,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6843, + "id": 6902, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5345:7:17", + "src": "5345:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5964,13 +5964,13 @@ }, { "constant": false, - "id": 6847, + "id": 6906, "mutability": "mutable", "name": "sharePrice", - "nameLocation": "5426:10:17", + "nameLocation": "5426:10:19", "nodeType": "VariableDeclaration", - "scope": 6872, - "src": "5418:18:17", + "scope": 6931, + "src": "5418:18:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5978,10 +5978,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6846, + "id": 6905, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5418:7:17", + "src": "5418:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5991,13 +5991,13 @@ }, { "constant": false, - "id": 6850, + "id": 6909, "mutability": "mutable", "name": "longsOutstanding", - "nameLocation": "5532:16:17", + "nameLocation": "5532:16:19", "nodeType": "VariableDeclaration", - "scope": 6872, - "src": "5524:24:17", + "scope": 6931, + "src": "5524:24:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6005,10 +6005,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6849, + "id": 6908, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5524:7:17", + "src": "5524:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6018,13 +6018,13 @@ }, { "constant": false, - "id": 6853, + "id": 6912, "mutability": "mutable", "name": "longAverageMaturityTime", - "nameLocation": "5635:23:17", + "nameLocation": "5635:23:19", "nodeType": "VariableDeclaration", - "scope": 6872, - "src": "5627:31:17", + "scope": 6931, + "src": "5627:31:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6032,10 +6032,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6852, + "id": 6911, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5627:7:17", + "src": "5627:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6045,13 +6045,13 @@ }, { "constant": false, - "id": 6856, + "id": 6915, "mutability": "mutable", "name": "shortsOutstanding", - "nameLocation": "5755:17:17", + "nameLocation": "5755:17:19", "nodeType": "VariableDeclaration", - "scope": 6872, - "src": "5747:25:17", + "scope": 6931, + "src": "5747:25:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6059,10 +6059,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6855, + "id": 6914, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5747:7:17", + "src": "5747:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6072,13 +6072,13 @@ }, { "constant": false, - "id": 6859, + "id": 6918, "mutability": "mutable", "name": "shortAverageMaturityTime", - "nameLocation": "5860:24:17", + "nameLocation": "5860:24:19", "nodeType": "VariableDeclaration", - "scope": 6872, - "src": "5852:32:17", + "scope": 6931, + "src": "5852:32:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6086,10 +6086,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6858, + "id": 6917, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5852:7:17", + "src": "5852:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6099,13 +6099,13 @@ }, { "constant": false, - "id": 6862, + "id": 6921, "mutability": "mutable", "name": "withdrawalSharesReadyToWithdraw", - "nameLocation": "5982:31:17", + "nameLocation": "5982:31:19", "nodeType": "VariableDeclaration", - "scope": 6872, - "src": "5974:39:17", + "scope": 6931, + "src": "5974:39:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6113,10 +6113,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6861, + "id": 6920, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5974:7:17", + "src": "5974:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6126,13 +6126,13 @@ }, { "constant": false, - "id": 6865, + "id": 6924, "mutability": "mutable", "name": "withdrawalSharesProceeds", - "nameLocation": "6095:24:17", + "nameLocation": "6095:24:19", "nodeType": "VariableDeclaration", - "scope": 6872, - "src": "6087:32:17", + "scope": 6931, + "src": "6087:32:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6140,10 +6140,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6864, + "id": 6923, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6087:7:17", + "src": "6087:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6153,13 +6153,13 @@ }, { "constant": false, - "id": 6868, + "id": 6927, "mutability": "mutable", "name": "lpSharePrice", - "nameLocation": "6247:12:17", + "nameLocation": "6247:12:19", "nodeType": "VariableDeclaration", - "scope": 6872, - "src": "6239:20:17", + "scope": 6931, + "src": "6239:20:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6167,10 +6167,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6867, + "id": 6926, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6239:7:17", + "src": "6239:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6180,13 +6180,13 @@ }, { "constant": false, - "id": 6871, + "id": 6930, "mutability": "mutable", "name": "longExposure", - "nameLocation": "6348:12:17", + "nameLocation": "6348:12:19", "nodeType": "VariableDeclaration", - "scope": 6872, - "src": "6340:20:17", + "scope": 6931, + "src": "6340:20:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6194,10 +6194,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6870, + "id": 6929, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6340:7:17", + "src": "6340:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6207,26 +6207,26 @@ } ], "name": "PoolInfo", - "nameLocation": "4845:8:17", - "scope": 7011, + "nameLocation": "4845:8:19", + "scope": 7070, "visibility": "public" }, { - "id": 6879, + "id": 6938, "nodeType": "StructDefinition", - "src": "6373:205:17", + "src": "6373:205:19", "nodes": [], "canonicalName": "IHyperdrive.OracleState", "members": [ { "constant": false, - "id": 6875, + "id": 6934, "mutability": "mutable", "name": "head", - "nameLocation": "6474:4:17", + "nameLocation": "6474:4:19", "nodeType": "VariableDeclaration", - "scope": 6879, - "src": "6466:12:17", + "scope": 6938, + "src": "6466:12:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6234,10 +6234,10 @@ "typeString": "uint128" }, "typeName": { - "id": 6874, + "id": 6933, "name": "uint128", "nodeType": "ElementaryTypeName", - "src": "6466:7:17", + "src": "6466:7:19", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" @@ -6247,13 +6247,13 @@ }, { "constant": false, - "id": 6878, + "id": 6937, "mutability": "mutable", "name": "lastTimestamp", - "nameLocation": "6558:13:17", + "nameLocation": "6558:13:19", "nodeType": "VariableDeclaration", - "scope": 6879, - "src": "6550:21:17", + "scope": 6938, + "src": "6550:21:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6261,10 +6261,10 @@ "typeString": "uint128" }, "typeName": { - "id": 6877, + "id": 6936, "name": "uint128", "nodeType": "ElementaryTypeName", - "src": "6550:7:17", + "src": "6550:7:19", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" @@ -6274,499 +6274,499 @@ } ], "name": "OracleState", - "nameLocation": "6380:11:17", - "scope": 7011, + "nameLocation": "6380:11:19", + "scope": 7070, "visibility": "public" }, { - "id": 6882, + "id": 6941, "nodeType": "ErrorDefinition", - "src": "6685:23:17", + "src": "6685:23:19", "nodes": [], "documentation": { - "id": 6880, + "id": 6939, "nodeType": "StructuredDocumentation", - "src": "6604:76:17", + "src": "6604:76:19", "text": "##################\n ### Hyperdrive ###\n ##################" }, "errorSelector": "8164f842", "name": "ApprovalFailed", - "nameLocation": "6691:14:17", + "nameLocation": "6691:14:19", "parameters": { - "id": 6881, + "id": 6940, "nodeType": "ParameterList", "parameters": [], - "src": "6705:2:17" + "src": "6705:2:19" } }, { - "id": 6884, + "id": 6943, "nodeType": "ErrorDefinition", - "src": "6804:39:17", + "src": "6804:39:19", "nodes": [], "errorSelector": "18846de9", "name": "BaseBufferExceedsShareReserves", - "nameLocation": "6810:30:17", + "nameLocation": "6810:30:19", "parameters": { - "id": 6883, + "id": 6942, "nodeType": "ParameterList", "parameters": [], - "src": "6840:2:17" + "src": "6840:2:19" } }, { - "id": 6886, + "id": 6945, "nodeType": "ErrorDefinition", - "src": "6848:33:17", + "src": "6848:33:19", "nodes": [], "errorSelector": "abed41c4", "name": "BelowMinimumContribution", - "nameLocation": "6854:24:17", + "nameLocation": "6854:24:19", "parameters": { - "id": 6885, + "id": 6944, "nodeType": "ParameterList", "parameters": [], - "src": "6878:2:17" + "src": "6878:2:19" } }, { - "id": 6888, + "id": 6947, "nodeType": "ErrorDefinition", - "src": "6886:34:17", + "src": "6886:34:19", "nodes": [], "errorSelector": "6101d7a4", "name": "BelowMinimumShareReserves", - "nameLocation": "6892:25:17", + "nameLocation": "6892:25:19", "parameters": { - "id": 6887, + "id": 6946, "nodeType": "ParameterList", "parameters": [], - "src": "6917:2:17" + "src": "6917:2:19" } }, { - "id": 6890, + "id": 6949, "nodeType": "ErrorDefinition", - "src": "6925:19:17", + "src": "6925:19:19", "nodes": [], "errorSelector": "76c22a22", "name": "InvalidApr", - "nameLocation": "6931:10:17", + "nameLocation": "6931:10:19", "parameters": { - "id": 6889, + "id": 6948, "nodeType": "ParameterList", "parameters": [], - "src": "6941:2:17" + "src": "6941:2:19" } }, { - "id": 6892, + "id": 6951, "nodeType": "ErrorDefinition", - "src": "6949:25:17", + "src": "6949:25:19", "nodes": [], "errorSelector": "0e442a4a", "name": "InvalidBaseToken", - "nameLocation": "6955:16:17", + "nameLocation": "6955:16:19", "parameters": { - "id": 6891, + "id": 6950, "nodeType": "ParameterList", "parameters": [], - "src": "6971:2:17" + "src": "6971:2:19" } }, { - "id": 6894, + "id": 6953, "nodeType": "ErrorDefinition", - "src": "6979:30:17", + "src": "6979:30:19", "nodes": [], "errorSelector": "ecd29e81", "name": "InvalidCheckpointTime", - "nameLocation": "6985:21:17", + "nameLocation": "6985:21:19", "parameters": { - "id": 6893, + "id": 6952, "nodeType": "ParameterList", "parameters": [], - "src": "7006:2:17" + "src": "7006:2:19" } }, { - "id": 6896, + "id": 6955, "nodeType": "ErrorDefinition", - "src": "7014:34:17", + "src": "7014:34:19", "nodes": [], "errorSelector": "5428734d", "name": "InvalidCheckpointDuration", - "nameLocation": "7020:25:17", + "nameLocation": "7020:25:19", "parameters": { - "id": 6895, + "id": 6954, "nodeType": "ParameterList", "parameters": [], - "src": "7045:2:17" + "src": "7045:2:19" } }, { - "id": 6898, + "id": 6957, "nodeType": "ErrorDefinition", - "src": "7053:33:17", + "src": "7053:33:19", "nodes": [], "errorSelector": "55f2a42f", "name": "InvalidInitialSharePrice", - "nameLocation": "7059:24:17", + "nameLocation": "7059:24:19", "parameters": { - "id": 6897, + "id": 6956, "nodeType": "ParameterList", "parameters": [], - "src": "7083:2:17" + "src": "7083:2:19" } }, { - "id": 6900, + "id": 6959, "nodeType": "ErrorDefinition", - "src": "7091:28:17", + "src": "7091:28:19", "nodes": [], "errorSelector": "987dadd3", "name": "InvalidMaturityTime", - "nameLocation": "7097:19:17", + "nameLocation": "7097:19:19", "parameters": { - "id": 6899, + "id": 6958, "nodeType": "ParameterList", "parameters": [], - "src": "7116:2:17" + "src": "7116:2:19" } }, { - "id": 6902, + "id": 6961, "nodeType": "ErrorDefinition", - "src": "7124:36:17", + "src": "7124:36:19", "nodes": [], "errorSelector": "49db44f5", "name": "InvalidMinimumShareReserves", - "nameLocation": "7130:27:17", + "nameLocation": "7130:27:19", "parameters": { - "id": 6901, + "id": 6960, "nodeType": "ParameterList", "parameters": [], - "src": "7157:2:17" + "src": "7157:2:19" } }, { - "id": 6904, + "id": 6963, "nodeType": "ErrorDefinition", - "src": "7165:32:17", + "src": "7165:32:19", "nodes": [], "errorSelector": "4a7fff9e", "name": "InvalidPositionDuration", - "nameLocation": "7171:23:17", + "nameLocation": "7171:23:19", "parameters": { - "id": 6903, + "id": 6962, "nodeType": "ParameterList", "parameters": [], - "src": "7194:2:17" + "src": "7194:2:19" } }, { - "id": 6906, + "id": 6965, "nodeType": "ErrorDefinition", - "src": "7202:29:17", + "src": "7202:29:19", "nodes": [], "errorSelector": "b0bfcdbe", "name": "InvalidShareReserves", - "nameLocation": "7208:20:17", + "nameLocation": "7208:20:19", "parameters": { - "id": 6905, + "id": 6964, "nodeType": "ParameterList", "parameters": [], - "src": "7228:2:17" + "src": "7228:2:19" } }, { - "id": 6908, + "id": 6967, "nodeType": "ErrorDefinition", - "src": "7236:26:17", + "src": "7236:26:19", "nodes": [], "errorSelector": "45ee5986", "name": "InvalidFeeAmounts", - "nameLocation": "7242:17:17", + "nameLocation": "7242:17:19", "parameters": { - "id": 6907, + "id": 6966, "nodeType": "ParameterList", "parameters": [], - "src": "7259:2:17" + "src": "7259:2:19" } }, { - "id": 6910, + "id": 6969, "nodeType": "ErrorDefinition", - "src": "7267:25:17", + "src": "7267:25:19", "nodes": [], "errorSelector": "512095c7", "name": "NegativeInterest", - "nameLocation": "7273:16:17", + "nameLocation": "7273:16:19", "parameters": { - "id": 6909, + "id": 6968, "nodeType": "ParameterList", "parameters": [], - "src": "7289:2:17" + "src": "7289:2:19" } }, { - "id": 6912, + "id": 6971, "nodeType": "ErrorDefinition", - "src": "7297:29:17", + "src": "7297:29:19", "nodes": [], "errorSelector": "aeeb825d", "name": "NegativePresentValue", - "nameLocation": "7303:20:17", + "nameLocation": "7303:20:19", "parameters": { - "id": 6911, + "id": 6970, "nodeType": "ParameterList", "parameters": [], - "src": "7323:2:17" + "src": "7323:2:19" } }, { - "id": 6914, + "id": 6973, "nodeType": "ErrorDefinition", - "src": "7331:27:17", + "src": "7331:27:19", "nodes": [], "errorSelector": "bb464a5e", "name": "NoAssetsToWithdraw", - "nameLocation": "7337:18:17", + "nameLocation": "7337:18:19", "parameters": { - "id": 6913, + "id": 6972, "nodeType": "ParameterList", "parameters": [], - "src": "7355:2:17" + "src": "7355:2:19" } }, { - "id": 6916, + "id": 6975, "nodeType": "ErrorDefinition", - "src": "7363:19:17", + "src": "7363:19:19", "nodes": [], "errorSelector": "1574f9f3", "name": "NotPayable", - "nameLocation": "7369:10:17", + "nameLocation": "7369:10:19", "parameters": { - "id": 6915, + "id": 6974, "nodeType": "ParameterList", "parameters": [], - "src": "7379:2:17" + "src": "7379:2:19" } }, { - "id": 6918, + "id": 6977, "nodeType": "ErrorDefinition", - "src": "7387:20:17", + "src": "7387:20:19", "nodes": [], "errorSelector": "c9726517", "name": "OutputLimit", - "nameLocation": "7393:11:17", + "nameLocation": "7393:11:19", "parameters": { - "id": 6917, + "id": 6976, "nodeType": "ParameterList", "parameters": [], - "src": "7404:2:17" + "src": "7404:2:19" } }, { - "id": 6920, + "id": 6979, "nodeType": "ErrorDefinition", - "src": "7412:15:17", + "src": "7412:15:19", "nodes": [], "errorSelector": "9e87fac8", "name": "Paused", - "nameLocation": "7418:6:17", + "nameLocation": "7418:6:19", "parameters": { - "id": 6919, + "id": 6978, "nodeType": "ParameterList", "parameters": [], - "src": "7424:2:17" + "src": "7424:2:19" } }, { - "id": 6922, + "id": 6981, "nodeType": "ErrorDefinition", - "src": "7432:31:17", + "src": "7432:31:19", "nodes": [], "errorSelector": "7983c051", "name": "PoolAlreadyInitialized", - "nameLocation": "7438:22:17", + "nameLocation": "7438:22:19", "parameters": { - "id": 6921, + "id": 6980, "nodeType": "ParameterList", "parameters": [], - "src": "7460:2:17" + "src": "7460:2:19" } }, { - "id": 6924, + "id": 6983, "nodeType": "ErrorDefinition", - "src": "7468:51:17", + "src": "7468:51:19", "nodes": [], "errorSelector": "97c01bef", "name": "ShareReservesDeltaExceedsBondReservesDelta", - "nameLocation": "7474:42:17", + "nameLocation": "7474:42:19", "parameters": { - "id": 6923, + "id": 6982, "nodeType": "ParameterList", "parameters": [], - "src": "7516:2:17" + "src": "7516:2:19" } }, { - "id": 6926, + "id": 6985, "nodeType": "ErrorDefinition", - "src": "7524:23:17", + "src": "7524:23:19", "nodes": [], "errorSelector": "90b8ec18", "name": "TransferFailed", - "nameLocation": "7530:14:17", + "nameLocation": "7530:14:19", "parameters": { - "id": 6925, + "id": 6984, "nodeType": "ParameterList", "parameters": [], - "src": "7544:2:17" + "src": "7544:2:19" } }, { - "id": 6928, + "id": 6987, "nodeType": "ErrorDefinition", - "src": "7552:26:17", + "src": "7552:26:19", "nodes": [], "errorSelector": "e9bf5433", "name": "UnexpectedAssetId", - "nameLocation": "7558:17:17", + "nameLocation": "7558:17:19", "parameters": { - "id": 6927, + "id": 6986, "nodeType": "ParameterList", "parameters": [], - "src": "7575:2:17" + "src": "7575:2:19" } }, { - "id": 6930, + "id": 6989, "nodeType": "ErrorDefinition", - "src": "7583:25:17", + "src": "7583:25:19", "nodes": [], "errorSelector": "f2fb3812", "name": "UnexpectedSender", - "nameLocation": "7589:16:17", + "nameLocation": "7589:16:19", "parameters": { - "id": 6929, + "id": 6988, "nodeType": "ParameterList", "parameters": [], - "src": "7605:2:17" + "src": "7605:2:19" } }, { - "id": 6932, + "id": 6991, "nodeType": "ErrorDefinition", - "src": "7613:25:17", + "src": "7613:25:19", "nodes": [], "errorSelector": "6a172882", "name": "UnsupportedToken", - "nameLocation": "7619:16:17", + "nameLocation": "7619:16:19", "parameters": { - "id": 6931, + "id": 6990, "nodeType": "ParameterList", "parameters": [], - "src": "7635:2:17" + "src": "7635:2:19" } }, { - "id": 6934, + "id": 6993, "nodeType": "ErrorDefinition", - "src": "7643:26:17", + "src": "7643:26:19", "nodes": [], "errorSelector": "42af972b", "name": "MinimumSharePrice", - "nameLocation": "7649:17:17", + "nameLocation": "7649:17:19", "parameters": { - "id": 6933, + "id": 6992, "nodeType": "ParameterList", "parameters": [], - "src": "7666:2:17" + "src": "7666:2:19" } }, { - "id": 6936, + "id": 6995, "nodeType": "ErrorDefinition", - "src": "7674:33:17", + "src": "7674:33:19", "nodes": [], "errorSelector": "423bbb46", "name": "MinimumTransactionAmount", - "nameLocation": "7680:24:17", + "nameLocation": "7680:24:19", "parameters": { - "id": 6935, + "id": 6994, "nodeType": "ParameterList", "parameters": [], - "src": "7704:2:17" + "src": "7704:2:19" } }, { - "id": 6938, + "id": 6997, "nodeType": "ErrorDefinition", - "src": "7712:26:17", + "src": "7712:26:19", "nodes": [], "errorSelector": "252c3a3e", "name": "ZeroLpTotalSupply", - "nameLocation": "7718:17:17", + "nameLocation": "7718:17:19", "parameters": { - "id": 6937, + "id": 6996, "nodeType": "ParameterList", "parameters": [], - "src": "7735:2:17" + "src": "7735:2:19" } }, { - "id": 6941, + "id": 7000, "nodeType": "ErrorDefinition", - "src": "7807:24:17", + "src": "7807:24:19", "nodes": [], "documentation": { - "id": 6939, + "id": 6998, "nodeType": "StructuredDocumentation", - "src": "7744:58:17", + "src": "7744:58:19", "text": "############\n ### TWAP ###\n ############" }, "errorSelector": "a89817b0", "name": "QueryOutOfRange", - "nameLocation": "7813:15:17", + "nameLocation": "7813:15:19", "parameters": { - "id": 6940, + "id": 6999, "nodeType": "ParameterList", "parameters": [], - "src": "7828:2:17" + "src": "7828:2:19" } }, { - "id": 6946, + "id": 7005, "nodeType": "ErrorDefinition", - "src": "7924:29:17", + "src": "7924:29:19", "nodes": [], "documentation": { - "id": 6942, + "id": 7001, "nodeType": "StructuredDocumentation", - "src": "7837:82:17", + "src": "7837:82:19", "text": "####################\n ### DataProvider ###\n ####################" }, "errorSelector": "dcc81126", "name": "ReturnData", - "nameLocation": "7930:10:17", + "nameLocation": "7930:10:19", "parameters": { - "id": 6945, + "id": 7004, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6944, + "id": 7003, "mutability": "mutable", "name": "data", - "nameLocation": "7947:4:17", + "nameLocation": "7947:4:19", "nodeType": "VariableDeclaration", - "scope": 6946, - "src": "7941:10:17", + "scope": 7005, + "src": "7941:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6774,10 +6774,10 @@ "typeString": "bytes" }, "typeName": { - "id": 6943, + "id": 7002, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "7941:5:17", + "src": "7941:5:19", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6786,30 +6786,30 @@ "visibility": "internal" } ], - "src": "7940:12:17" + "src": "7940:12:19" } }, { - "id": 6950, + "id": 7009, "nodeType": "ErrorDefinition", - "src": "7958:41:17", + "src": "7958:41:19", "nodes": [], "errorSelector": "efa64d4b", "name": "CallFailed", - "nameLocation": "7964:10:17", + "nameLocation": "7964:10:19", "parameters": { - "id": 6949, + "id": 7008, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6948, + "id": 7007, "mutability": "mutable", "name": "underlyingError", - "nameLocation": "7982:15:17", + "nameLocation": "7982:15:19", "nodeType": "VariableDeclaration", - "scope": 6950, - "src": "7975:22:17", + "scope": 7009, + "src": "7975:22:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6817,10 +6817,10 @@ "typeString": "bytes4" }, "typeName": { - "id": 6947, + "id": 7006, "name": "bytes4", "nodeType": "ElementaryTypeName", - "src": "7975:6:17", + "src": "7975:6:19", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -6829,445 +6829,445 @@ "visibility": "internal" } ], - "src": "7974:24:17" + "src": "7974:24:19" } }, { - "id": 6952, + "id": 7011, "nodeType": "ErrorDefinition", - "src": "8004:26:17", + "src": "8004:26:19", "nodes": [], "errorSelector": "8bb0a34b", "name": "UnexpectedSuccess", - "nameLocation": "8010:17:17", + "nameLocation": "8010:17:19", "parameters": { - "id": 6951, + "id": 7010, "nodeType": "ParameterList", "parameters": [], - "src": "8027:2:17" + "src": "8027:2:19" } }, { - "id": 6955, + "id": 7014, "nodeType": "ErrorDefinition", - "src": "8108:21:17", + "src": "8108:21:19", "nodes": [], "documentation": { - "id": 6953, + "id": 7012, "nodeType": "StructuredDocumentation", - "src": "8036:67:17", + "src": "8036:67:19", "text": "###############\n ### Factory ###\n ###############" }, "errorSelector": "82b42900", "name": "Unauthorized", - "nameLocation": "8114:12:17", + "nameLocation": "8114:12:19", "parameters": { - "id": 6954, + "id": 7013, "nodeType": "ParameterList", "parameters": [], - "src": "8126:2:17" + "src": "8126:2:19" } }, { - "id": 6957, + "id": 7016, "nodeType": "ErrorDefinition", - "src": "8134:28:17", + "src": "8134:28:19", "nodes": [], "errorSelector": "652122d9", "name": "InvalidContribution", - "nameLocation": "8140:19:17", + "nameLocation": "8140:19:19", "parameters": { - "id": 6956, + "id": 7015, "nodeType": "ParameterList", "parameters": [], - "src": "8159:2:17" + "src": "8159:2:19" } }, { - "id": 6959, + "id": 7018, "nodeType": "ErrorDefinition", - "src": "8167:21:17", + "src": "8167:21:19", "nodes": [], "errorSelector": "c1ab6dc1", "name": "InvalidToken", - "nameLocation": "8173:12:17", + "nameLocation": "8173:12:19", "parameters": { - "id": 6958, + "id": 7017, "nodeType": "ParameterList", "parameters": [], - "src": "8185:2:17" + "src": "8185:2:19" } }, { - "id": 6961, + "id": 7020, "nodeType": "ErrorDefinition", - "src": "8193:22:17", + "src": "8193:22:19", "nodes": [], "errorSelector": "a3932d2d", "name": "MaxFeeTooHigh", - "nameLocation": "8199:13:17", + "nameLocation": "8199:13:19", "parameters": { - "id": 6960, + "id": 7019, "nodeType": "ParameterList", "parameters": [], - "src": "8212:2:17" + "src": "8212:2:19" } }, { - "id": 6963, + "id": 7022, "nodeType": "ErrorDefinition", - "src": "8220:19:17", + "src": "8220:19:19", "nodes": [], "errorSelector": "cd4e6167", "name": "FeeTooHigh", - "nameLocation": "8226:10:17", + "nameLocation": "8226:10:19", "parameters": { - "id": 6962, + "id": 7021, "nodeType": "ParameterList", "parameters": [], - "src": "8236:2:17" + "src": "8236:2:19" } }, { - "id": 6965, + "id": 7024, "nodeType": "ErrorDefinition", - "src": "8244:33:17", + "src": "8244:33:19", "nodes": [], "errorSelector": "8fbc3bd9", "name": "NonPayableInitialization", - "nameLocation": "8250:24:17", + "nameLocation": "8250:24:19", "parameters": { - "id": 6964, + "id": 7023, "nodeType": "ParameterList", "parameters": [], - "src": "8274:2:17" + "src": "8274:2:19" } }, { - "id": 6968, + "id": 7027, "nodeType": "ErrorDefinition", - "src": "8376:33:17", + "src": "8376:33:19", "nodes": [], "documentation": { - "id": 6966, + "id": 7025, "nodeType": "StructuredDocumentation", - "src": "8283:88:17", + "src": "8283:88:19", "text": "######################\n ### ERC20Forwarder ###\n ######################" }, "errorSelector": "ba430d38", "name": "BatchInputLengthMismatch", - "nameLocation": "8382:24:17", + "nameLocation": "8382:24:19", "parameters": { - "id": 6967, + "id": 7026, "nodeType": "ParameterList", "parameters": [], - "src": "8406:2:17" + "src": "8406:2:19" } }, { - "id": 6970, + "id": 7029, "nodeType": "ErrorDefinition", - "src": "8414:24:17", + "src": "8414:24:19", "nodes": [], "errorSelector": "f87d9271", "name": "ExpiredDeadline", - "nameLocation": "8420:15:17", + "nameLocation": "8420:15:19", "parameters": { - "id": 6969, + "id": 7028, "nodeType": "ParameterList", "parameters": [], - "src": "8435:2:17" + "src": "8435:2:19" } }, { - "id": 6972, + "id": 7031, "nodeType": "ErrorDefinition", - "src": "8443:25:17", + "src": "8443:25:19", "nodes": [], "errorSelector": "8baa579f", "name": "InvalidSignature", - "nameLocation": "8449:16:17", + "nameLocation": "8449:16:19", "parameters": { - "id": 6971, + "id": 7030, "nodeType": "ParameterList", "parameters": [], - "src": "8465:2:17" + "src": "8465:2:19" } }, { - "id": 6974, + "id": 7033, "nodeType": "ErrorDefinition", - "src": "8473:27:17", + "src": "8473:27:19", "nodes": [], "errorSelector": "2aab8bd3", "name": "InvalidERC20Bridge", - "nameLocation": "8479:18:17", + "nameLocation": "8479:18:19", "parameters": { - "id": 6973, + "id": 7032, "nodeType": "ParameterList", "parameters": [], - "src": "8497:2:17" + "src": "8497:2:19" } }, { - "id": 6976, + "id": 7035, "nodeType": "ErrorDefinition", - "src": "8505:30:17", + "src": "8505:30:19", "nodes": [], "errorSelector": "f0dd15fd", "name": "RestrictedZeroAddress", - "nameLocation": "8511:21:17", + "nameLocation": "8511:21:19", "parameters": { - "id": 6975, + "id": 7034, "nodeType": "ParameterList", "parameters": [], - "src": "8532:2:17" + "src": "8532:2:19" } }, { - "id": 6979, + "id": 7038, "nodeType": "ErrorDefinition", - "src": "8655:32:17", + "src": "8655:32:19", "nodes": [], "documentation": { - "id": 6977, + "id": 7036, "nodeType": "StructuredDocumentation", - "src": "8541:109:17", + "src": "8541:109:19", "text": "#############################\n ### ERC20ForwarderFactory ###\n #############################" }, "errorSelector": "381dd540", "name": "InvalidForwarderAddress", - "nameLocation": "8661:23:17", + "nameLocation": "8661:23:19", "parameters": { - "id": 6978, + "id": 7037, "nodeType": "ParameterList", "parameters": [], - "src": "8684:2:17" + "src": "8684:2:19" } }, { - "id": 6982, + "id": 7041, "nodeType": "ErrorDefinition", - "src": "8781:22:17", + "src": "8781:22:19", "nodes": [], "documentation": { - "id": 6980, + "id": 7039, "nodeType": "StructuredDocumentation", - "src": "8693:83:17", + "src": "8693:83:19", "text": "#####################\n ### BondWrapper ###\n #####################" }, "errorSelector": "9acb7e52", "name": "AlreadyClosed", - "nameLocation": "8787:13:17", + "nameLocation": "8787:13:19", "parameters": { - "id": 6981, + "id": 7040, "nodeType": "ParameterList", "parameters": [], - "src": "8800:2:17" + "src": "8800:2:19" } }, { - "id": 6984, + "id": 7043, "nodeType": "ErrorDefinition", - "src": "8808:20:17", + "src": "8808:20:19", "nodes": [], "errorSelector": "3f8e46bc", "name": "BondMatured", - "nameLocation": "8814:11:17", + "nameLocation": "8814:11:19", "parameters": { - "id": 6983, + "id": 7042, "nodeType": "ParameterList", "parameters": [], - "src": "8825:2:17" + "src": "8825:2:19" } }, { - "id": 6986, + "id": 7045, "nodeType": "ErrorDefinition", - "src": "8833:23:17", + "src": "8833:23:19", "nodes": [], "errorSelector": "915eceb1", "name": "BondNotMatured", - "nameLocation": "8839:14:17", + "nameLocation": "8839:14:19", "parameters": { - "id": 6985, + "id": 7044, "nodeType": "ParameterList", "parameters": [], - "src": "8853:2:17" + "src": "8853:2:19" } }, { - "id": 6988, + "id": 7047, "nodeType": "ErrorDefinition", - "src": "8861:26:17", + "src": "8861:26:19", "nodes": [], "errorSelector": "d5481703", "name": "InsufficientPrice", - "nameLocation": "8867:17:17", + "nameLocation": "8867:17:19", "parameters": { - "id": 6987, + "id": 7046, "nodeType": "ParameterList", "parameters": [], - "src": "8884:2:17" + "src": "8884:2:19" } }, { - "id": 6990, + "id": 7049, "nodeType": "ErrorDefinition", - "src": "8892:27:17", + "src": "8892:27:19", "nodes": [], "errorSelector": "4a0dabae", "name": "MintPercentTooHigh", - "nameLocation": "8898:18:17", + "nameLocation": "8898:18:19", "parameters": { - "id": 6989, + "id": 7048, "nodeType": "ParameterList", "parameters": [], - "src": "8916:2:17" + "src": "8916:2:19" } }, { - "id": 6993, + "id": 7052, "nodeType": "ErrorDefinition", - "src": "8997:25:17", + "src": "8997:25:19", "nodes": [], "documentation": { - "id": 6991, + "id": 7050, "nodeType": "StructuredDocumentation", - "src": "8925:67:17", + "src": "8925:67:19", "text": "###############\n ### AssetId ###\n ###############" }, "errorSelector": "b7d09497", "name": "InvalidTimestamp", - "nameLocation": "9003:16:17", + "nameLocation": "9003:16:19", "parameters": { - "id": 6992, + "id": 7051, "nodeType": "ParameterList", "parameters": [], - "src": "9019:2:17" + "src": "9019:2:19" } }, { - "id": 6996, + "id": 7055, "nodeType": "ErrorDefinition", - "src": "9121:39:17", + "src": "9121:39:19", "nodes": [], "documentation": { - "id": 6994, + "id": 7053, "nodeType": "StructuredDocumentation", - "src": "9028:88:17", + "src": "9028:88:19", "text": "######################\n ### FixedPointMath ###\n ######################" }, "errorSelector": "df92cc9d", "name": "FixedPointMath_InvalidExponent", - "nameLocation": "9127:30:17", + "nameLocation": "9127:30:19", "parameters": { - "id": 6995, + "id": 7054, "nodeType": "ParameterList", "parameters": [], - "src": "9157:2:17" + "src": "9157:2:19" } }, { - "id": 6998, + "id": 7057, "nodeType": "ErrorDefinition", - "src": "9165:36:17", + "src": "9165:36:19", "nodes": [], "errorSelector": "d071fdda", "name": "FixedPointMath_InvalidInput", - "nameLocation": "9171:27:17", + "nameLocation": "9171:27:19", "parameters": { - "id": 6997, + "id": 7056, "nodeType": "ParameterList", "parameters": [], - "src": "9198:2:17" + "src": "9198:2:19" } }, { - "id": 7000, + "id": 7059, "nodeType": "ErrorDefinition", - "src": "9206:43:17", + "src": "9206:43:19", "nodes": [], "errorSelector": "ac5f1b8e", "name": "FixedPointMath_NegativeOrZeroInput", - "nameLocation": "9212:34:17", + "nameLocation": "9212:34:19", "parameters": { - "id": 6999, + "id": 7058, "nodeType": "ParameterList", "parameters": [], - "src": "9246:2:17" + "src": "9246:2:19" } }, { - "id": 7002, + "id": 7061, "nodeType": "ErrorDefinition", - "src": "9254:37:17", + "src": "9254:37:19", "nodes": [], "errorSelector": "2c7949f5", "name": "FixedPointMath_NegativeInput", - "nameLocation": "9260:28:17", + "nameLocation": "9260:28:19", "parameters": { - "id": 7001, + "id": 7060, "nodeType": "ParameterList", "parameters": [], - "src": "9288:2:17" + "src": "9288:2:19" } }, { - "id": 7005, + "id": 7064, "nodeType": "ErrorDefinition", - "src": "9390:25:17", + "src": "9390:25:19", "nodes": [], "documentation": { - "id": 7003, + "id": 7062, "nodeType": "StructuredDocumentation", - "src": "9297:88:17", + "src": "9297:88:19", "text": "######################\n ### YieldSpaceMath ###\n ######################" }, "errorSelector": "7ac17d25", "name": "InvalidTradeSize", - "nameLocation": "9396:16:17", + "nameLocation": "9396:16:19", "parameters": { - "id": 7004, + "id": 7063, "nodeType": "ParameterList", "parameters": [], - "src": "9412:2:17" + "src": "9412:2:19" } }, { - "id": 7008, + "id": 7067, "nodeType": "ErrorDefinition", - "src": "9508:28:17", + "src": "9508:28:19", "nodes": [], "documentation": { - "id": 7006, + "id": 7065, "nodeType": "StructuredDocumentation", - "src": "9421:82:17", + "src": "9421:82:19", "text": "######################\n ### SafeCast ###\n ######################" }, "errorSelector": "1e15f2a2", "name": "UnsafeCastToUint128", - "nameLocation": "9514:19:17", + "nameLocation": "9514:19:19", "parameters": { - "id": 7007, + "id": 7066, "nodeType": "ParameterList", "parameters": [], - "src": "9533:2:17" + "src": "9533:2:19" } }, { - "id": 7010, + "id": 7069, "nodeType": "ErrorDefinition", - "src": "9541:27:17", + "src": "9541:27:19", "nodes": [], "errorSelector": "a5353be5", "name": "UnsafeCastToInt128", - "nameLocation": "9547:18:17", + "nameLocation": "9547:18:19", "parameters": { - "id": 7009, + "id": 7068, "nodeType": "ParameterList", "parameters": [], - "src": "9565:2:17" + "src": "9565:2:19" } } ], @@ -7275,48 +7275,48 @@ "baseContracts": [ { "baseName": { - "id": 6648, + "id": 6707, "name": "IHyperdriveRead", "nameLocations": [ - "294:15:17" + "294:15:19" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7095, - "src": "294:15:17" + "referencedDeclaration": 7154, + "src": "294:15:19" }, - "id": 6649, + "id": 6708, "nodeType": "InheritanceSpecifier", - "src": "294:15:17" + "src": "294:15:19" }, { "baseName": { - "id": 6650, + "id": 6709, "name": "IHyperdriveWrite", "nameLocations": [ - "311:16:17" + "311:16:19" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7253, - "src": "311:16:17" + "referencedDeclaration": 7312, + "src": "311:16:19" }, - "id": 6651, + "id": 6710, "nodeType": "InheritanceSpecifier", - "src": "311:16:17" + "src": "311:16:19" }, { "baseName": { - "id": 6652, + "id": 6711, "name": "IMultiToken", "nameLocations": [ - "329:11:17" + "329:11:19" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7313, - "src": "329:11:17" + "referencedDeclaration": 7434, + "src": "329:11:19" }, - "id": 6653, + "id": 6712, "nodeType": "InheritanceSpecifier", - "src": "329:11:17" + "src": "329:11:19" } ], "canonicalName": "IHyperdrive", @@ -7324,80 +7324,80 @@ "contractKind": "interface", "fullyImplemented": false, "linearizedBaseContracts": [ - 7011, - 7313, - 7321, - 7253, - 7503, - 7095, - 7391 + 7070, + 7434, + 7442, + 7312, + 7624, + 7154, + 7512 ], "name": "IHyperdrive", - "nameLocation": "279:11:17", - "scope": 7012, + "nameLocation": "279:11:19", + "scope": 7071, "usedErrors": [ - 6882, - 6884, - 6886, - 6888, - 6890, - 6892, - 6894, - 6896, - 6898, - 6900, - 6902, - 6904, - 6906, - 6908, - 6910, - 6912, - 6914, - 6916, - 6918, - 6920, - 6922, - 6924, - 6926, - 6928, - 6930, - 6932, - 6934, - 6936, - 6938, 6941, - 6946, - 6950, - 6952, + 6943, + 6945, + 6947, + 6949, + 6951, + 6953, 6955, 6957, 6959, 6961, 6963, 6965, - 6968, - 6970, - 6972, - 6974, - 6976, + 6967, + 6969, + 6971, + 6973, + 6975, + 6977, 6979, - 6982, - 6984, - 6986, - 6988, - 6990, + 6981, + 6983, + 6985, + 6987, + 6989, + 6991, 6993, - 6996, - 6998, + 6995, + 6997, 7000, - 7002, 7005, - 7008, - 7010 + 7009, + 7011, + 7014, + 7016, + 7018, + 7020, + 7022, + 7024, + 7027, + 7029, + 7031, + 7033, + 7035, + 7038, + 7041, + 7043, + 7045, + 7047, + 7049, + 7052, + 7055, + 7057, + 7059, + 7061, + 7064, + 7067, + 7069 ] } ], "license": "Apache-2.0" }, - "id": 17 + "id": 19 } \ No newline at end of file diff --git a/packages/hyperdrive/src/abis/MockERC4626.sol/MockERC4626.json b/packages/hyperdrive/src/abis/MockERC4626.sol/MockERC4626.json index e755e2be5c..07a84b5fe4 100644 --- a/packages/hyperdrive/src/abis/MockERC4626.sol/MockERC4626.json +++ b/packages/hyperdrive/src/abis/MockERC4626.sol/MockERC4626.json @@ -21,6 +21,16 @@ "internalType": "uint256", "name": "_initialRate", "type": "uint256" + }, + { + "internalType": "address", + "name": "_admin", + "type": "address" + }, + { + "internalType": "bool", + "name": "_isCompetitionMode_", + "type": "bool" } ], "stateMutability": "nonpayable", @@ -51,6 +61,25 @@ "name": "Approval", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "contract Authority", + "name": "newAuthority", + "type": "address" + } + ], + "name": "AuthorityUpdated", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -82,6 +111,88 @@ "name": "Deposit", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4" + }, + { + "indexed": false, + "internalType": "bool", + "name": "enabled", + "type": "bool" + } + ], + "name": "PublicCapabilityUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint8", + "name": "role", + "type": "uint8" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4" + }, + { + "indexed": false, + "internalType": "bool", + "name": "enabled", + "type": "bool" + } + ], + "name": "RoleCapabilityUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "indexed": true, + "internalType": "contract Authority", + "name": "authority", + "type": "address" + } + ], + "name": "TargetCustomAuthorityUpdated", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -107,6 +218,31 @@ "name": "Transfer", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint8", + "name": "role", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "bool", + "name": "enabled", + "type": "bool" + } + ], + "name": "UserRoleUpdated", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -218,6 +354,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "authority", + "outputs": [ + { + "internalType": "contract Authority", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -237,6 +386,35 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4" + } + ], + "name": "canCall", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -312,6 +490,54 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "role", + "type": "uint8" + }, + { + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4" + } + ], + "name": "doesRoleHaveCapability", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint8", + "name": "role", + "type": "uint8" + } + ], + "name": "doesUserHaveRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "getRate", @@ -325,6 +551,82 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "getRolesWithCapability", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "getTargetCustomAuthority", + "outputs": [ + { + "internalType": "contract Authority", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "getUserRoles", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "isCapabilityPublic", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -458,13 +760,26 @@ "type": "function" }, { - "inputs": [ + "inputs": [], + "name": "owner", + "outputs": [ { "internalType": "address", - "name": "owner", + "name": "", "type": "address" - }, - { + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { "internalType": "address", "name": "spender", "type": "address" @@ -605,6 +920,37 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "contract Authority", + "name": "newAuthority", + "type": "address" + } + ], + "name": "setAuthority", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "enabled", + "type": "bool" + } + ], + "name": "setPublicCapability", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -618,6 +964,70 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "role", + "type": "uint8" + }, + { + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "enabled", + "type": "bool" + } + ], + "name": "setRoleCapability", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "contract Authority", + "name": "customAuthority", + "type": "address" + } + ], + "name": "setTargetCustomAuthority", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint8", + "name": "role", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "enabled", + "type": "bool" + } + ], + "name": "setUserRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "symbol", @@ -710,6 +1120,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -741,64 +1164,70 @@ } ], "bytecode": { - "object": "0x6101006040523480156200001257600080fd5b5060405162001c0138038062001c01833981016040819052620000359162000259565b8383838181846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000079573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009f9190620002eb565b6000620000ad8482620003a6565b506001620000bc8382620003a6565b5060ff81166080524660a052620000d2620000f8565b60c0525050506001600160a01b0390921660e052505060065550504260075550620004f0565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516200012c919062000472565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001bc57600080fd5b81516001600160401b0380821115620001d957620001d962000194565b604051601f8301601f19908116603f0116810190828211818310171562000204576200020462000194565b816040528381526020925086838588010111156200022157600080fd5b600091505b8382101562000245578582018301518183018401529082019062000226565b600093810190920192909252949350505050565b600080600080608085870312156200027057600080fd5b84516001600160a01b03811681146200028857600080fd5b60208601519094506001600160401b0380821115620002a657600080fd5b620002b488838901620001aa565b94506040870151915080821115620002cb57600080fd5b50620002da87828801620001aa565b606096909601519497939650505050565b600060208284031215620002fe57600080fd5b815160ff811681146200031057600080fd5b9392505050565b600181811c908216806200032c57607f821691505b6020821081036200034d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003a157600081815260208120601f850160051c810160208610156200037c5750805b601f850160051c820191505b818110156200039d5782815560010162000388565b5050505b505050565b81516001600160401b03811115620003c257620003c262000194565b620003da81620003d3845462000317565b8462000353565b602080601f831160018114620004125760008415620003f95750858301515b600019600386901b1c1916600185901b1785556200039d565b600085815260208120601f198616915b82811015620004435788860151825594840194600190910190840162000422565b5085821015620004625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808354620004828162000317565b600182811680156200049d5760018114620004b357620004e4565b60ff1984168752821515830287019450620004e4565b8760005260208060002060005b85811015620004db5781548a820152908401908201620004c0565b50505082870194505b50929695505050505050565b60805160a05160c05160e0516116a66200055b600039600081816102cf015281816104b201528181610b9c01528181610c5b01528181610dd801528181610e7001528181610fc201526111040152600061079d0152600061076d0152600061027901526116a66000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806370a0823111610104578063ba087652116100a2578063d505accf11610071578063d505accf14610419578063d905777e1461042c578063dd62ed3e14610455578063ef8b30f71461048057600080fd5b8063ba087652146103e0578063c63d75b614610309578063c6e6f592146103f3578063ce96cb771461040657600080fd5b806395d89b41116100de57806395d89b411461039f578063a9059cbb146103a7578063b3d7f6b9146103ba578063b460af94146103cd57600080fd5b806370a082311461034c5780637ecebe001461036c57806394bf804d1461038c57600080fd5b8063313ce5671161017c578063402d267d1161014b578063402d267d146103095780634cdad5061461031e578063679aefce146103315780636e553f651461033957600080fd5b8063313ce5671461027457806334fcf437146102ad5780633644e515146102c257806338d52e0f146102ca57600080fd5b8063095ea7b3116101b8578063095ea7b3146102225780630a28a4771461024557806318160ddd1461025857806323b872dd1461026157600080fd5b806301e1d114146101df57806306fdde03146101fa57806307a2d13a1461020f575b600080fd5b6101e7610493565b6040519081526020015b60405180910390f35b610202610534565b6040516101f19190611319565b6101e761021d366004611367565b6105c2565b61023561023036600461139c565b6105ef565b60405190151581526020016101f1565b6101e7610253366004611367565b61065c565b6101e760025481565b61023561026f3660046113c6565b61067c565b61029b7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016101f1565b6102c06102bb366004611367565b61075c565b005b6101e7610769565b6102f17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101f1565b6101e7610317366004611402565b5060001990565b6101e761032c366004611367565b6107bf565b6006546101e7565b6101e761034736600461141d565b6107ca565b6101e761035a366004611402565b60036020526000908152604090205481565b6101e761037a366004611402565b60056020526000908152604090205481565b6101e761039a36600461141d565b6107de565b6102026107f2565b6102356103b536600461139c565b6107ff565b6101e76103c8366004611367565b610865565b6101e76103db366004611449565b610884565b6101e76103ee366004611449565b6108a1565b6101e7610401366004611367565b6108b6565b6101e7610414366004611402565b6108d6565b6102c0610427366004611485565b6108f8565b6101e761043a366004611402565b6001600160a01b031660009081526003602052604090205490565b6101e76104633660046114f8565b600460209081526000928352604080842090915290825290205481565b6101e761048e366004611367565b610b41565b600061049d610b4c565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105259190611522565b61052f9190611551565b905090565b6000805461054190611564565b80601f016020809104026020016040519081016040528092919081815260200182805461056d90611564565b80156105ba5780601f1061058f576101008083540402835291602001916105ba565b820191906000526020600020905b81548152906001019060200180831161059d57829003601f168201915b505050505081565b60025460009080156105e6576105e16105d9610493565b849083610c15565b6105e8565b825b9392505050565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061064a9086815260200190565b60405180910390a35060015b92915050565b60025460009080156105e6576105e181610674610493565b859190610c33565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001981146106d8576106b3838261159e565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b0385166000908152600360205260408120805485929061070090849061159e565b90915550506001600160a01b0380851660008181526003602052604090819020805487019055519091871690600080516020611651833981519152906107499087815260200190565b60405180910390a3506001949350505050565b610764610c59565b600655565b60007f0000000000000000000000000000000000000000000000000000000000000000461461079a5761052f610ce6565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000610656826105c2565b60006107d4610c59565b6105e88383610d80565b60006107e8610c59565b6105e88383610e56565b6001805461054190611564565b3360009081526003602052604081208054839190839061082090849061159e565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133906000805160206116518339815191529061064a9086815260200190565b60025460009080156105e6576105e161087c610493565b849083610c33565b600061088e610c59565b610899848484610ee5565b949350505050565b60006108ab610c59565b610899848484610fe9565b60025460009080156105e6576105e1816108ce610493565b859190610c15565b6001600160a01b038116600090815260036020526040812054610656906105c2565b4284101561094d5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b60006001610959610769565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610a65573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610a9b5750876001600160a01b0316816001600160a01b0316145b610ad85760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606401610944565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b6000610656826108b6565b600080610b6b6301e1338060075442610b65919061159e565b9061112b565b905060006105e8610b878360065461114090919063ffffffff16565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610beb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0f9190611522565b90611140565b6000826000190484118302158202610c2c57600080fd5b5091020490565b6000826000190484118302158202610c4a57600080fd5b50910281810615159190040190565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0712d68610c90610b4c565b6040518263ffffffff1660e01b8152600401610cae91815260200190565b600060405180830381600087803b158015610cc857600080fd5b505af1158015610cdc573d6000803e3d6000fd5b5050426007555050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051610d1891906115b1565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000610d8b83610b41565b905080600003610dcb5760405162461bcd60e51b815260206004820152600b60248201526a5a45524f5f53484152455360a81b6044820152606401610944565b610e006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086611155565b610e0a82826111df565b60408051848152602081018390526001600160a01b0384169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d791015b60405180910390a3610656565b6000610e6183610865565b9050610e986001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084611155565b610ea282846111df565b60408051828152602081018590526001600160a01b0384169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79101610e49565b6000610ef08461065c565b9050336001600160a01b03831614610f60576001600160a01b03821660009081526004602090815260408083203384529091529020546000198114610f5e57610f39828261159e565b6001600160a01b03841660009081526004602090815260408083203384529091529020555b505b610f6a8282611239565b60408051858152602081018390526001600160a01b03808516929086169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a46105e86001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016848661129b565b6000336001600160a01b03831614611059576001600160a01b0382166000908152600460209081526040808320338452909152902054600019811461105757611032858261159e565b6001600160a01b03841660009081526004602090815260408083203384529091529020555b505b611062846107bf565b9050806000036110a25760405162461bcd60e51b815260206004820152600b60248201526a5a45524f5f41535345545360a81b6044820152606401610944565b6110ac8285611239565b60408051828152602081018690526001600160a01b03808516929086169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a46105e86001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016848361129b565b60006105e883670de0b6b3a764000084610c15565b60006105e88383670de0b6b3a7640000610c15565b60006040516323b872dd60e01b81528460048201528360248201528260448201526020600060648360008a5af13d15601f3d11600160005114161716915050806111d85760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610944565b5050505050565b80600260008282546111f19190611551565b90915550506001600160a01b03821660008181526003602090815260408083208054860190555184815260008051602061165183398151915291015b60405180910390a35050565b6001600160a01b0382166000908152600360205260408120805483929061126190849061159e565b90915550506002805482900390556040518181526000906001600160a01b038416906000805160206116518339815191529060200161122d565b600060405163a9059cbb60e01b8152836004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806113135760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610944565b50505050565b600060208083528351808285015260005b818110156113465785810183015185820160400152820161132a565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561137957600080fd5b5035919050565b80356001600160a01b038116811461139757600080fd5b919050565b600080604083850312156113af57600080fd5b6113b883611380565b946020939093013593505050565b6000806000606084860312156113db57600080fd5b6113e484611380565b92506113f260208501611380565b9150604084013590509250925092565b60006020828403121561141457600080fd5b6105e882611380565b6000806040838503121561143057600080fd5b8235915061144060208401611380565b90509250929050565b60008060006060848603121561145e57600080fd5b8335925061146e60208501611380565b915061147c60408501611380565b90509250925092565b600080600080600080600060e0888a0312156114a057600080fd5b6114a988611380565b96506114b760208901611380565b95506040880135945060608801359350608088013560ff811681146114db57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561150b57600080fd5b61151483611380565b915061144060208401611380565b60006020828403121561153457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106565761065661153b565b600181811c9082168061157857607f821691505b60208210810361159857634e487b7160e01b600052602260045260246000fd5b50919050565b818103818111156106565761065661153b565b600080835481600182811c9150808316806115cd57607f831692505b602080841082036115ec57634e487b7160e01b86526022600452602486fd5b818015611600576001811461161557611642565b60ff1986168952841515850289019650611642565b60008a81526020902060005b8681101561163a5781548b820152908501908301611621565b505084890196505b50949897505050505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b39cd7132ddd7029c62180c205741ec89412bcb2d0b7d85256859940116ed80a64736f6c63430008130033", - "sourceMap": "824:2120:43:-:0;;;965:263;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1125:6;1135:5;1142:7;1290:5:90;1297:7;1306:6;-1:-1:-1;;;;;1306:15:90;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2094:4:91;:12;2101:5;2094:4;:12;:::i;:::-;-1:-1:-1;2116:6:91;:16;2125:7;2116:6;:16;:::i;:::-;-1:-1:-1;2142:20:91;;;;;2192:13;2173:32;;2242:24;:22;:24::i;:::-;2215:51;;-1:-1:-1;;;;;;;;1335:14:90;;::::1;;::::0;-1:-1:-1;;1161:5:43::1;:20:::0;-1:-1:-1;;1206:15:43::1;1191:12;:30:::0;-1:-1:-1;824:2120:43;;5510:446:91;5575:7;5672:95;5805:4;5789:22;;;;;;:::i;:::-;;;;;;;;;;5640:295;;;5785:25:162;;;;5826:18;;5819:34;;;;5833:14:91;5869:18:162;;;5862:34;5869:13:91;5912:18:162;;;5905:34;5912:4:91;5955:19:162;;;5948:61;5757:19;;5640:295:91;;;;;;;;;;;;5613:336;;;;;;5594:355;;5510:446;:::o;14:127:162:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:162;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:162;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:162:o;991:814::-;1131:6;1139;1147;1155;1208:3;1196:9;1187:7;1183:23;1179:33;1176:53;;;1225:1;1222;1215:12;1176:53;1251:16;;-1:-1:-1;;;;;1296:31:162;;1286:42;;1276:70;;1342:1;1339;1332:12;1276:70;1414:2;1399:18;;1393:25;1365:5;;-1:-1:-1;;;;;;1467:14:162;;;1464:34;;;1494:1;1491;1484:12;1464:34;1517:61;1570:7;1561:6;1550:9;1546:22;1517:61;:::i;:::-;1507:71;;1624:2;1613:9;1609:18;1603:25;1587:41;;1653:2;1643:8;1640:16;1637:36;;;1669:1;1666;1659:12;1637:36;;1692:63;1747:7;1736:8;1725:9;1721:24;1692:63;:::i;:::-;1795:2;1780:18;;;;1774:25;991:814;;;;-1:-1:-1;;;;991:814:162:o;1810:273::-;1878:6;1931:2;1919:9;1910:7;1906:23;1902:32;1899:52;;;1947:1;1944;1937:12;1899:52;1979:9;1973:16;2029:4;2022:5;2018:16;2011:5;2008:27;1998:55;;2049:1;2046;2039:12;1998:55;2072:5;1810:273;-1:-1:-1;;;1810:273:162:o;2088:380::-;2167:1;2163:12;;;;2210;;;2231:61;;2285:4;2277:6;2273:17;2263:27;;2231:61;2338:2;2330:6;2327:14;2307:18;2304:38;2301:161;;2384:10;2379:3;2375:20;2372:1;2365:31;2419:4;2416:1;2409:15;2447:4;2444:1;2437:15;2301:161;;2088:380;;;:::o;2599:545::-;2701:2;2696:3;2693:11;2690:448;;;2737:1;2762:5;2758:2;2751:17;2807:4;2803:2;2793:19;2877:2;2865:10;2861:19;2858:1;2854:27;2848:4;2844:38;2913:4;2901:10;2898:20;2895:47;;;-1:-1:-1;2936:4:162;2895:47;2991:2;2986:3;2982:12;2979:1;2975:20;2969:4;2965:31;2955:41;;3046:82;3064:2;3057:5;3054:13;3046:82;;;3109:17;;;3090:1;3079:13;3046:82;;;3050:3;;;2690:448;2599:545;;;:::o;3320:1352::-;3440:10;;-1:-1:-1;;;;;3462:30:162;;3459:56;;;3495:18;;:::i;:::-;3524:97;3614:6;3574:38;3606:4;3600:11;3574:38;:::i;:::-;3568:4;3524:97;:::i;:::-;3676:4;;3740:2;3729:14;;3757:1;3752:663;;;;4459:1;4476:6;4473:89;;;-1:-1:-1;4528:19:162;;;4522:26;4473:89;-1:-1:-1;;3277:1:162;3273:11;;;3269:24;3265:29;3255:40;3301:1;3297:11;;;3252:57;4575:81;;3722:944;;3752:663;2546:1;2539:14;;;2583:4;2570:18;;-1:-1:-1;;3788:20:162;;;3906:236;3920:7;3917:1;3914:14;3906:236;;;4009:19;;;4003:26;3988:42;;4101:27;;;;4069:1;4057:14;;;;3936:19;;3906:236;;;3910:3;4170:6;4161:7;4158:19;4155:201;;;4231:19;;;4225:26;-1:-1:-1;;4314:1:162;4310:14;;;4326:3;4306:24;4302:37;4298:42;4283:58;4268:74;;4155:201;-1:-1:-1;;;;;4402:1:162;4386:14;;;4382:22;4369:36;;-1:-1:-1;3320:1352:162:o;4677:844::-;4807:3;4836:1;4869:6;4863:13;4899:36;4925:9;4899:36;:::i;:::-;4954:1;4971:18;;;4998:133;;;;5145:1;5140:356;;;;4964:532;;4998:133;-1:-1:-1;;5031:24:162;;5019:37;;5104:14;;5097:22;5085:35;;5076:45;;;-1:-1:-1;4998:133:162;;5140:356;5171:6;5168:1;5161:17;5201:4;5246:2;5243:1;5233:16;5271:1;5285:165;5299:6;5296:1;5293:13;5285:165;;;5377:14;;5364:11;;;5357:35;5420:16;;;;5314:10;;5285:165;;;5289:3;;;5479:6;5474:3;5470:16;5463:23;;4964:532;-1:-1:-1;5512:3:162;;4677:844;-1:-1:-1;;;;;;4677:844:162:o;5526:489::-;824:2120:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", + "object": "0x6101206040523480156200001257600080fd5b506040516200279938038062002799833981016040819052620000359162000310565b813081818989898181846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200007d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000a39190620003c8565b6000620000b1848262000483565b506001620000c0838262000483565b5060ff81166080524660a052620000d662000196565b60c0525050506001600160a01b0392831660e0525050600680548483166001600160a01b0319918216811790925560078054938516939091169290921790915560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36040516001600160a01b0382169033907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b7638998019890600090a3505050600c9390935542600d5515156101005250620005cd9350505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051620001ca91906200054f565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6001600160a01b03811681146200024857600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200027357600080fd5b81516001600160401b03808211156200029057620002906200024b565b604051601f8301601f19908116603f01168101908282118183101715620002bb57620002bb6200024b565b81604052838152602092508683858801011115620002d857600080fd5b600091505b83821015620002fc5785820183015181830184015290820190620002dd565b600093810190920192909252949350505050565b60008060008060008060c087890312156200032a57600080fd5b8651620003378162000232565b60208801519096506001600160401b03808211156200035557600080fd5b620003638a838b0162000261565b965060408901519150808211156200037a57600080fd5b506200038989828a0162000261565b945050606087015192506080870151620003a38162000232565b60a08801519092508015158114620003ba57600080fd5b809150509295509295509295565b600060208284031215620003db57600080fd5b815160ff81168114620003ed57600080fd5b9392505050565b600181811c908216806200040957607f821691505b6020821081036200042a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200047e57600081815260208120601f850160051c81016020861015620004595750805b601f850160051c820191505b818110156200047a5782815560010162000465565b5050505b505050565b81516001600160401b038111156200049f576200049f6200024b565b620004b781620004b08454620003f4565b8462000430565b602080601f831160018114620004ef5760008415620004d65750858301515b600019600386901b1c1916600185901b1785556200047a565b600085815260208120601f198616915b828110156200052057888601518255948401946001909101908401620004ff565b50858210156200053f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008083546200055f81620003f4565b600182811680156200057a57600181146200059057620005c1565b60ff1984168752821515830287019450620005c1565b8760005260208060002060005b85811015620005b85781548a8201529084019082016200059d565b50505082870194505b50929695505050505050565b60805160a05160c05160e05161010051612156620006436000396000610a880152600081816103ca015281816106fb01528181611392015281816114fa015281816116770152818161170f0152818161186101526119a301526000610b4f01526000610b1f0152600061037601526121566000f3fe608060405234801561001057600080fd5b506004361061027f5760003560e01c80637a9e5e4b1161015c578063c53a3985116100ce578063dd62ed3e11610087578063dd62ed3e146105fe578063e688747b14610629578063ea7ca2761461065f578063ed0d0efb14610696578063ef8b30f7146106b6578063f2fde38b146106c957600080fd5b8063c53a398514610573578063c63d75b614610404578063c6e6f5921461059c578063ce96cb77146105af578063d505accf146105c2578063d905777e146105d557600080fd5b8063a9059cbb11610120578063a9059cbb14610501578063b3d7f6b914610514578063b460af9414610527578063b70096131461053a578063ba0876521461054d578063bf7e214f1461056057600080fd5b80637a9e5e4b146104a05780637ecebe00146104b35780638da5cb5b146104d357806394bf804d146104e657806395d89b41146104f957600080fd5b806334fcf437116101f55780634cdad506116101b95780634cdad5061461042c578063679aefce1461043f57806367aff484146104475780636e553f651461045a57806370a082311461046d578063728b952b1461048d57600080fd5b806334fcf437146103aa5780633644e515146103bd57806338d52e0f146103c5578063402d267d146104045780634b5159da1461041957600080fd5b80630a28a477116102475780630a28a4771461030a5780630bade8a41461031d5780630ea9b75b1461034057806318160ddd1461035557806323b872dd1461035e578063313ce5671461037157600080fd5b806301e1d1141461028457806306a36aee1461029f57806306fdde03146102bf57806307a2d13a146102d4578063095ea7b3146102e7575b600080fd5b61028c6106dc565b6040519081526020015b60405180910390f35b61028c6102ad366004611bd0565b60096020526000908152604090205481565b6102c761077d565b6040516102969190611bed565b61028c6102e2366004611c3b565b61080b565b6102fa6102f5366004611c54565b610838565b6040519015158152602001610296565b61028c610318366004611c3b565b6108a5565b6102fa61032b366004611c9d565b600a6020526000908152604090205460ff1681565b61035361034e366004611cd7565b6108c5565b005b61028c60025481565b6102fa61036c366004611d1e565b6109a6565b6103987f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610296565b6103536103b8366004611c3b565b610a86565b61028c610b1b565b6103ec7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610296565b61028c610412366004611bd0565b5060001990565b610353610427366004611d5f565b610b71565b61028c61043a366004611c3b565b610c03565b600c5461028c565b610353610455366004611d96565b610c0e565b61028c610468366004611dc4565b610cd6565b61028c61047b366004611bd0565b60036020526000908152604090205481565b61035361049b366004611de9565b610cea565b6103536104ae366004611bd0565b610d73565b61028c6104c1366004611bd0565b60056020526000908152604090205481565b6006546103ec906001600160a01b031681565b61028c6104f4366004611dc4565b610e5d565b6102c7610e71565b6102fa61050f366004611c54565b610e7e565b61028c610522366004611c3b565b610ee4565b61028c610535366004611e17565b610f03565b6102fa610548366004611e4e565b610f20565b61028c61055b366004611e17565b61101e565b6007546103ec906001600160a01b031681565b6103ec610581366004611bd0565b6008602052600090815260409020546001600160a01b031681565b61028c6105aa366004611c3b565b611033565b61028c6105bd366004611bd0565b611053565b6103536105d0366004611e95565b611075565b61028c6105e3366004611bd0565b6001600160a01b031660009081526003602052604090205490565b61028c61060c366004611de9565b600460209081526000928352604080842090915290825290205481565b6102fa610637366004611f03565b6001600160e01b0319166000908152600b602052604090205460ff919091161c600116151590565b6102fa61066d366004611f36565b6001600160a01b0391909116600090815260096020526040902054600160ff9092161c16151590565b61028c6106a4366004611c9d565b600b6020526000908152604090205481565b61028c6106c4366004611c3b565b6112b9565b6103536106d7366004611bd0565b6112c4565b60006106e6611342565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561074a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076e9190611f62565b6107789190611f91565b905090565b6000805461078a90611fa4565b80601f01602080910402602001604051908101604052809291908181526020018280546107b690611fa4565b80156108035780601f106107d857610100808354040283529160200191610803565b820191906000526020600020905b8154815290600101906020018083116107e657829003601f168201915b505050505081565b600254600090801561082f5761082a6108226106dc565b84908361140b565b610831565b825b9392505050565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108939086815260200190565b60405180910390a35060015b92915050565b600254600090801561082f5761082a816108bd6106dc565b859190611429565b6108db336000356001600160e01b03191661144f565b6109005760405162461bcd60e51b81526004016108f790611fde565b60405180910390fd5b8015610930576001600160e01b031982166000908152600b602052604090208054600160ff86161b179055610957565b6001600160e01b031982166000908152600b602052604090208054600160ff86161b191690555b816001600160e01b0319168360ff167fbfe16b2c35ce23dfd1ab0e7b5d086a10060c9b52d1574e1680c881b3b3a2b15183604051610999911515815260200190565b60405180910390a3505050565b6001600160a01b03831660009081526004602090815260408083203384529091528120546000198114610a02576109dd8382612004565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b03851660009081526003602052604081208054859290610a2a908490612004565b90915550506001600160a01b038085166000818152600360205260409081902080548701905551909187169060008051602061210183398151915290610a739087815260200190565b60405180910390a3506001949350505050565b7f000000000000000000000000000000000000000000000000000000000000000015610b0e57610ac2336000356001600160e01b03191661144f565b610b0e5760405162461bcd60e51b815260206004820152601b60248201527f4d6f636b455243343632363a206e6f7420617574686f72697a6564000000000060448201526064016108f7565b610b166114f8565b600c55565b60007f00000000000000000000000000000000000000000000000000000000000000004614610b4c57610778611585565b507f000000000000000000000000000000000000000000000000000000000000000090565b610b87336000356001600160e01b03191661144f565b610ba35760405162461bcd60e51b81526004016108f790611fde565b6001600160e01b031982166000818152600a6020908152604091829020805460ff191685151590811790915591519182527f36d28126bef21a4f3765d7fcb7c45cead463ae4c41094ef3b771ede598544103910160405180910390a25050565b600061089f8261080b565b610c24336000356001600160e01b03191661144f565b610c405760405162461bcd60e51b81526004016108f790611fde565b8015610c6f576001600160a01b03831660009081526009602052604090208054600160ff85161b179055610c95565b6001600160a01b03831660009081526009602052604090208054600160ff85161b191690555b8160ff16836001600160a01b03167f4c9bdd0c8e073eb5eda2250b18d8e5121ff27b62064fbeeeed4869bb99bc5bf283604051610999911515815260200190565b6000610ce06114f8565b610831838361161f565b610d00336000356001600160e01b03191661144f565b610d1c5760405162461bcd60e51b81526004016108f790611fde565b6001600160a01b0382811660008181526008602052604080822080546001600160a01b0319169486169485179055517fa4908e11a5f895b13d51526c331ac93cdd30e59772361c5d07874eb36bff20659190a35050565b6006546001600160a01b0316331480610e08575060075460405163b700961360e01b81526001600160a01b039091169063b700961390610dc790339030906001600160e01b03196000351690600401612017565b602060405180830381865afa158015610de4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e089190612044565b610e1157600080fd5b600780546001600160a01b0319166001600160a01b03831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b7638998019890600090a350565b6000610e676114f8565b61083183836116f5565b6001805461078a90611fa4565b33600090815260036020526040812080548391908390610e9f908490612004565b90915550506001600160a01b03831660008181526003602052604090819020805485019055513390600080516020612101833981519152906108939086815260200190565b600254600090801561082f5761082a610efb6106dc565b849083611429565b6000610f0d6114f8565b610f18848484611784565b949350505050565b6001600160a01b038083166000908152600860205260408120549091168015610fbc5760405163b700961360e01b81526001600160a01b0382169063b700961390610f7390889088908890600401612017565b602060405180830381865afa158015610f90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb49190612044565b915050610831565b6001600160e01b031983166000908152600a602052604090205460ff168061101557506001600160e01b031983166000908152600b60209081526040808320546001600160a01b03891684526009909252909120541615155b95945050505050565b60006110286114f8565b610f18848484611888565b600254600090801561082f5761082a8161104b6106dc565b85919061140b565b6001600160a01b03811660009081526003602052604081205461089f9061080b565b428410156110c55760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016108f7565b600060016110d1610b1b565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa1580156111dd573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906112135750876001600160a01b0316816001600160a01b0316145b6112505760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b60448201526064016108f7565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b600061089f82611033565b6112da336000356001600160e01b03191661144f565b6112f65760405162461bcd60e51b81526004016108f790611fde565b600680546001600160a01b0319166001600160a01b03831690811790915560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b6000806113616301e13380600d544261135b9190612004565b906119ca565b9050600061083161137d83600c546119df90919063ffffffff16565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156113e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114059190611f62565b906119df565b600082600019048411830215820261142257600080fd5b5091020490565b600082600019048411830215820261144057600080fd5b50910281810615159190040190565b6007546000906001600160a01b031680158015906114d9575060405163b700961360e01b81526001600160a01b0382169063b70096139061149890879030908890600401612017565b602060405180830381865afa1580156114b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d99190612044565b80610f1857506006546001600160a01b03858116911614949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0712d6861152f611342565b6040518263ffffffff1660e01b815260040161154d91815260200190565b600060405180830381600087803b15801561156757600080fd5b505af115801561157b573d6000803e3d6000fd5b505042600d555050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516115b79190612061565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600061162a836112b9565b90508060000361166a5760405162461bcd60e51b815260206004820152600b60248201526a5a45524f5f53484152455360a81b60448201526064016108f7565b61169f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330866119f4565b6116a98282611a7e565b60408051848152602081018390526001600160a01b0384169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d791015b60405180910390a361089f565b600061170083610ee4565b90506117376001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330846119f4565b6117418284611a7e565b60408051828152602081018590526001600160a01b0384169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d791016116e8565b600061178f846108a5565b9050336001600160a01b038316146117ff576001600160a01b038216600090815260046020908152604080832033845290915290205460001981146117fd576117d88282612004565b6001600160a01b03841660009081526004602090815260408083203384529091529020555b505b6118098282611ad8565b60408051858152602081018390526001600160a01b03808516929086169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a46108316001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168486611b3a565b6000336001600160a01b038316146118f8576001600160a01b038216600090815260046020908152604080832033845290915290205460001981146118f6576118d18582612004565b6001600160a01b03841660009081526004602090815260408083203384529091529020555b505b61190184610c03565b9050806000036119415760405162461bcd60e51b815260206004820152600b60248201526a5a45524f5f41535345545360a81b60448201526064016108f7565b61194b8285611ad8565b60408051828152602081018690526001600160a01b03808516929086169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a46108316001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168483611b3a565b600061083183670de0b6b3a76400008461140b565b60006108318383670de0b6b3a764000061140b565b60006040516323b872dd60e01b81528460048201528360248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080611a775760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b60448201526064016108f7565b5050505050565b8060026000828254611a909190611f91565b90915550506001600160a01b03821660008181526003602090815260408083208054860190555184815260008051602061210183398151915291015b60405180910390a35050565b6001600160a01b03821660009081526003602052604081208054839290611b00908490612004565b90915550506002805482900390556040518181526000906001600160a01b0384169060008051602061210183398151915290602001611acc565b600060405163a9059cbb60e01b8152836004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080611bb25760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b60448201526064016108f7565b50505050565b6001600160a01b0381168114611bcd57600080fd5b50565b600060208284031215611be257600080fd5b813561083181611bb8565b600060208083528351808285015260005b81811015611c1a57858101830151858201604001528201611bfe565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215611c4d57600080fd5b5035919050565b60008060408385031215611c6757600080fd5b8235611c7281611bb8565b946020939093013593505050565b80356001600160e01b031981168114611c9857600080fd5b919050565b600060208284031215611caf57600080fd5b61083182611c80565b803560ff81168114611c9857600080fd5b8015158114611bcd57600080fd5b600080600060608486031215611cec57600080fd5b611cf584611cb8565b9250611d0360208501611c80565b91506040840135611d1381611cc9565b809150509250925092565b600080600060608486031215611d3357600080fd5b8335611d3e81611bb8565b92506020840135611d4e81611bb8565b929592945050506040919091013590565b60008060408385031215611d7257600080fd5b611d7b83611c80565b91506020830135611d8b81611cc9565b809150509250929050565b600080600060608486031215611dab57600080fd5b8335611db681611bb8565b9250611d0360208501611cb8565b60008060408385031215611dd757600080fd5b823591506020830135611d8b81611bb8565b60008060408385031215611dfc57600080fd5b8235611e0781611bb8565b91506020830135611d8b81611bb8565b600080600060608486031215611e2c57600080fd5b833592506020840135611e3e81611bb8565b91506040840135611d1381611bb8565b600080600060608486031215611e6357600080fd5b8335611e6e81611bb8565b92506020840135611e7e81611bb8565b9150611e8c60408501611c80565b90509250925092565b600080600080600080600060e0888a031215611eb057600080fd5b8735611ebb81611bb8565b96506020880135611ecb81611bb8565b95506040880135945060608801359350611ee760808901611cb8565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611f1657600080fd5b611f1f83611cb8565b9150611f2d60208401611c80565b90509250929050565b60008060408385031215611f4957600080fd5b8235611f5481611bb8565b9150611f2d60208401611cb8565b600060208284031215611f7457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561089f5761089f611f7b565b600181811c90821680611fb857607f821691505b602082108103611fd857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b8181038181111561089f5761089f611f7b565b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b60006020828403121561205657600080fd5b815161083181611cc9565b600080835481600182811c91508083168061207d57607f831692505b6020808410820361209c57634e487b7160e01b86526022600452602486fd5b8180156120b057600181146120c5576120f2565b60ff19861689528415158502890196506120f2565b60008a81526020902060005b868110156120ea5781548b8201529085019083016120d1565b505084890196505b50949897505050505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212206a892e028ac2ffc99b8bec0c4cebf2d4bd4d97b2cf13aa9f0cddcbdcb61330a464736f6c63430008130033", + "sourceMap": "963:2644:40:-:0;;;1174:445;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1454:6;1480:4;1149:6:85;1157:10;1400:6:40;1410:5;1417:7;1290:5:86;1297:7;1306:6;-1:-1:-1;;;;;1306:15:86;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2094:4:87;:12;2101:5;2094:4;:12;:::i;:::-;-1:-1:-1;2116:6:87;:16;2125:7;2116:6;:16;:::i;:::-;-1:-1:-1;2142:20:87;;;;;2192:13;2173:32;;2242:24;:22;:24::i;:::-;2215:51;;-1:-1:-1;;;;;;;;1335:14:86;;::::1;;::::0;-1:-1:-1;;682:5:84;:14;;;;;-1:-1:-1;;;;;;682:14:84;;;;;;;;706:9;:22;;;;;;;;;;;;;;;;744:40;;765:10;;744:40;;682:5;;744:40;799;;-1:-1:-1;;;;;799:40:84;;;816:10;;799:40;;;;;-1:-1:-1;;;1502:5:40::2;:20:::0;;;;1547:15:::2;1532:12;:30:::0;1572:40:::2;;;::::0;-1:-1:-1;963:2644:40;;-1:-1:-1;;;;963:2644:40;5510:446:87;5575:7;5672:95;5805:4;5789:22;;;;;;:::i;:::-;;;;;;;;;;5640:295;;;6225:25:149;;;;6266:18;;6259:34;;;;5833:14:87;6309:18:149;;;6302:34;5869:13:87;6352:18:149;;;6345:34;5912:4:87;6395:19:149;;;6388:61;6197:19;;5640:295:87;;;;;;;;;;;;5613:336;;;;;;5594:355;;5510:446;:::o;14:146:149:-;-1:-1:-1;;;;;104:31:149;;94:42;;84:70;;150:1;147;140:12;84:70;14:146;:::o;165:127::-;226:10;221:3;217:20;214:1;207:31;257:4;254:1;247:15;281:4;278:1;271:15;297:840;351:5;404:3;397:4;389:6;385:17;381:27;371:55;;422:1;419;412:12;371:55;445:13;;-1:-1:-1;;;;;507:10:149;;;504:36;;;520:18;;:::i;:::-;595:2;589:9;563:2;649:13;;-1:-1:-1;;645:22:149;;;669:2;641:31;637:40;625:53;;;693:18;;;713:22;;;690:46;687:72;;;739:18;;:::i;:::-;779:10;775:2;768:22;814:2;806:6;799:18;836:4;826:14;;881:3;876:2;871;863:6;859:15;855:24;852:33;849:53;;;898:1;895;888:12;849:53;920:1;911:10;;930:133;944:2;941:1;938:9;930:133;;;1032:14;;;1028:23;;1022:30;1001:14;;;997:23;;990:63;955:10;;;;930:133;;;1105:1;1083:15;;;1079:24;;;1072:35;;;;1087:6;297:840;-1:-1:-1;;;;297:840:149:o;1142:1103::-;1297:6;1305;1313;1321;1329;1337;1390:3;1378:9;1369:7;1365:23;1361:33;1358:53;;;1407:1;1404;1397:12;1358:53;1439:9;1433:16;1458:46;1498:5;1458:46;:::i;:::-;1572:2;1557:18;;1551:25;1523:5;;-1:-1:-1;;;;;;1625:14:149;;;1622:34;;;1652:1;1649;1642:12;1622:34;1675:61;1728:7;1719:6;1708:9;1704:22;1675:61;:::i;:::-;1665:71;;1782:2;1771:9;1767:18;1761:25;1745:41;;1811:2;1801:8;1798:16;1795:36;;;1827:1;1824;1817:12;1795:36;;1850:63;1905:7;1894:8;1883:9;1879:24;1850:63;:::i;:::-;1840:73;;;1953:2;1942:9;1938:18;1932:25;1922:35;;2002:3;1991:9;1987:19;1981:26;2016:48;2056:7;2016:48;:::i;:::-;2135:3;2120:19;;2114:26;2083:7;;-1:-1:-1;2178:15:149;;2171:23;2159:36;;2149:64;;2209:1;2206;2199:12;2149:64;2232:7;2222:17;;;1142:1103;;;;;;;;:::o;2250:273::-;2318:6;2371:2;2359:9;2350:7;2346:23;2342:32;2339:52;;;2387:1;2384;2377:12;2339:52;2419:9;2413:16;2469:4;2462:5;2458:16;2451:5;2448:27;2438:55;;2489:1;2486;2479:12;2438:55;2512:5;2250:273;-1:-1:-1;;;2250:273:149:o;2528:380::-;2607:1;2603:12;;;;2650;;;2671:61;;2725:4;2717:6;2713:17;2703:27;;2671:61;2778:2;2770:6;2767:14;2747:18;2744:38;2741:161;;2824:10;2819:3;2815:20;2812:1;2805:31;2859:4;2856:1;2849:15;2887:4;2884:1;2877:15;2741:161;;2528:380;;;:::o;3039:545::-;3141:2;3136:3;3133:11;3130:448;;;3177:1;3202:5;3198:2;3191:17;3247:4;3243:2;3233:19;3317:2;3305:10;3301:19;3298:1;3294:27;3288:4;3284:38;3353:4;3341:10;3338:20;3335:47;;;-1:-1:-1;3376:4:149;3335:47;3431:2;3426:3;3422:12;3419:1;3415:20;3409:4;3405:31;3395:41;;3486:82;3504:2;3497:5;3494:13;3486:82;;;3549:17;;;3530:1;3519:13;3486:82;;;3490:3;;;3130:448;3039:545;;;:::o;3760:1352::-;3880:10;;-1:-1:-1;;;;;3902:30:149;;3899:56;;;3935:18;;:::i;:::-;3964:97;4054:6;4014:38;4046:4;4040:11;4014:38;:::i;:::-;4008:4;3964:97;:::i;:::-;4116:4;;4180:2;4169:14;;4197:1;4192:663;;;;4899:1;4916:6;4913:89;;;-1:-1:-1;4968:19:149;;;4962:26;4913:89;-1:-1:-1;;3717:1:149;3713:11;;;3709:24;3705:29;3695:40;3741:1;3737:11;;;3692:57;5015:81;;4162:944;;4192:663;2986:1;2979:14;;;3023:4;3010:18;;-1:-1:-1;;4228:20:149;;;4346:236;4360:7;4357:1;4354:14;4346:236;;;4449:19;;;4443:26;4428:42;;4541:27;;;;4509:1;4497:14;;;;4376:19;;4346:236;;;4350:3;4610:6;4601:7;4598:19;4595:201;;;4671:19;;;4665:26;-1:-1:-1;;4754:1:149;4750:14;;;4766:3;4746:24;4742:37;4738:42;4723:58;4708:74;;4595:201;-1:-1:-1;;;;;4842:1:149;4826:14;;;4822:22;4809:36;;-1:-1:-1;3760:1352:149:o;5117:844::-;5247:3;5276:1;5309:6;5303:13;5339:36;5365:9;5339:36;:::i;:::-;5394:1;5411:18;;;5438:133;;;;5585:1;5580:356;;;;5404:532;;5438:133;-1:-1:-1;;5471:24:149;;5459:37;;5544:14;;5537:22;5525:35;;5516:45;;;-1:-1:-1;5438:133:149;;5580:356;5611:6;5608:1;5601:17;5641:4;5686:2;5683:1;5673:16;5711:1;5725:165;5739:6;5736:1;5733:13;5725:165;;;5817:14;;5804:11;;;5797:35;5860:16;;;;5754:10;;5725:165;;;5729:3;;;5919:6;5914:3;5910:16;5903:23;;5404:532;-1:-1:-1;5952:3:149;;5117:844;-1:-1:-1;;;;;;5117:844:149:o;5966:489::-;963:2644:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106101da5760003560e01c806370a0823111610104578063ba087652116100a2578063d505accf11610071578063d505accf14610419578063d905777e1461042c578063dd62ed3e14610455578063ef8b30f71461048057600080fd5b8063ba087652146103e0578063c63d75b614610309578063c6e6f592146103f3578063ce96cb771461040657600080fd5b806395d89b41116100de57806395d89b411461039f578063a9059cbb146103a7578063b3d7f6b9146103ba578063b460af94146103cd57600080fd5b806370a082311461034c5780637ecebe001461036c57806394bf804d1461038c57600080fd5b8063313ce5671161017c578063402d267d1161014b578063402d267d146103095780634cdad5061461031e578063679aefce146103315780636e553f651461033957600080fd5b8063313ce5671461027457806334fcf437146102ad5780633644e515146102c257806338d52e0f146102ca57600080fd5b8063095ea7b3116101b8578063095ea7b3146102225780630a28a4771461024557806318160ddd1461025857806323b872dd1461026157600080fd5b806301e1d114146101df57806306fdde03146101fa57806307a2d13a1461020f575b600080fd5b6101e7610493565b6040519081526020015b60405180910390f35b610202610534565b6040516101f19190611319565b6101e761021d366004611367565b6105c2565b61023561023036600461139c565b6105ef565b60405190151581526020016101f1565b6101e7610253366004611367565b61065c565b6101e760025481565b61023561026f3660046113c6565b61067c565b61029b7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016101f1565b6102c06102bb366004611367565b61075c565b005b6101e7610769565b6102f17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101f1565b6101e7610317366004611402565b5060001990565b6101e761032c366004611367565b6107bf565b6006546101e7565b6101e761034736600461141d565b6107ca565b6101e761035a366004611402565b60036020526000908152604090205481565b6101e761037a366004611402565b60056020526000908152604090205481565b6101e761039a36600461141d565b6107de565b6102026107f2565b6102356103b536600461139c565b6107ff565b6101e76103c8366004611367565b610865565b6101e76103db366004611449565b610884565b6101e76103ee366004611449565b6108a1565b6101e7610401366004611367565b6108b6565b6101e7610414366004611402565b6108d6565b6102c0610427366004611485565b6108f8565b6101e761043a366004611402565b6001600160a01b031660009081526003602052604090205490565b6101e76104633660046114f8565b600460209081526000928352604080842090915290825290205481565b6101e761048e366004611367565b610b41565b600061049d610b4c565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105259190611522565b61052f9190611551565b905090565b6000805461054190611564565b80601f016020809104026020016040519081016040528092919081815260200182805461056d90611564565b80156105ba5780601f1061058f576101008083540402835291602001916105ba565b820191906000526020600020905b81548152906001019060200180831161059d57829003601f168201915b505050505081565b60025460009080156105e6576105e16105d9610493565b849083610c15565b6105e8565b825b9392505050565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061064a9086815260200190565b60405180910390a35060015b92915050565b60025460009080156105e6576105e181610674610493565b859190610c33565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001981146106d8576106b3838261159e565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b0385166000908152600360205260408120805485929061070090849061159e565b90915550506001600160a01b0380851660008181526003602052604090819020805487019055519091871690600080516020611651833981519152906107499087815260200190565b60405180910390a3506001949350505050565b610764610c59565b600655565b60007f0000000000000000000000000000000000000000000000000000000000000000461461079a5761052f610ce6565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000610656826105c2565b60006107d4610c59565b6105e88383610d80565b60006107e8610c59565b6105e88383610e56565b6001805461054190611564565b3360009081526003602052604081208054839190839061082090849061159e565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133906000805160206116518339815191529061064a9086815260200190565b60025460009080156105e6576105e161087c610493565b849083610c33565b600061088e610c59565b610899848484610ee5565b949350505050565b60006108ab610c59565b610899848484610fe9565b60025460009080156105e6576105e1816108ce610493565b859190610c15565b6001600160a01b038116600090815260036020526040812054610656906105c2565b4284101561094d5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b60006001610959610769565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610a65573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610a9b5750876001600160a01b0316816001600160a01b0316145b610ad85760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606401610944565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b6000610656826108b6565b600080610b6b6301e1338060075442610b65919061159e565b9061112b565b905060006105e8610b878360065461114090919063ffffffff16565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610beb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0f9190611522565b90611140565b6000826000190484118302158202610c2c57600080fd5b5091020490565b6000826000190484118302158202610c4a57600080fd5b50910281810615159190040190565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0712d68610c90610b4c565b6040518263ffffffff1660e01b8152600401610cae91815260200190565b600060405180830381600087803b158015610cc857600080fd5b505af1158015610cdc573d6000803e3d6000fd5b5050426007555050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051610d1891906115b1565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000610d8b83610b41565b905080600003610dcb5760405162461bcd60e51b815260206004820152600b60248201526a5a45524f5f53484152455360a81b6044820152606401610944565b610e006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086611155565b610e0a82826111df565b60408051848152602081018390526001600160a01b0384169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d791015b60405180910390a3610656565b6000610e6183610865565b9050610e986001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084611155565b610ea282846111df565b60408051828152602081018590526001600160a01b0384169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79101610e49565b6000610ef08461065c565b9050336001600160a01b03831614610f60576001600160a01b03821660009081526004602090815260408083203384529091529020546000198114610f5e57610f39828261159e565b6001600160a01b03841660009081526004602090815260408083203384529091529020555b505b610f6a8282611239565b60408051858152602081018390526001600160a01b03808516929086169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a46105e86001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016848661129b565b6000336001600160a01b03831614611059576001600160a01b0382166000908152600460209081526040808320338452909152902054600019811461105757611032858261159e565b6001600160a01b03841660009081526004602090815260408083203384529091529020555b505b611062846107bf565b9050806000036110a25760405162461bcd60e51b815260206004820152600b60248201526a5a45524f5f41535345545360a81b6044820152606401610944565b6110ac8285611239565b60408051828152602081018690526001600160a01b03808516929086169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a46105e86001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016848361129b565b60006105e883670de0b6b3a764000084610c15565b60006105e88383670de0b6b3a7640000610c15565b60006040516323b872dd60e01b81528460048201528360248201528260448201526020600060648360008a5af13d15601f3d11600160005114161716915050806111d85760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610944565b5050505050565b80600260008282546111f19190611551565b90915550506001600160a01b03821660008181526003602090815260408083208054860190555184815260008051602061165183398151915291015b60405180910390a35050565b6001600160a01b0382166000908152600360205260408120805483929061126190849061159e565b90915550506002805482900390556040518181526000906001600160a01b038416906000805160206116518339815191529060200161122d565b600060405163a9059cbb60e01b8152836004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806113135760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610944565b50505050565b600060208083528351808285015260005b818110156113465785810183015185820160400152820161132a565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561137957600080fd5b5035919050565b80356001600160a01b038116811461139757600080fd5b919050565b600080604083850312156113af57600080fd5b6113b883611380565b946020939093013593505050565b6000806000606084860312156113db57600080fd5b6113e484611380565b92506113f260208501611380565b9150604084013590509250925092565b60006020828403121561141457600080fd5b6105e882611380565b6000806040838503121561143057600080fd5b8235915061144060208401611380565b90509250929050565b60008060006060848603121561145e57600080fd5b8335925061146e60208501611380565b915061147c60408501611380565b90509250925092565b600080600080600080600060e0888a0312156114a057600080fd5b6114a988611380565b96506114b760208901611380565b95506040880135945060608801359350608088013560ff811681146114db57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561150b57600080fd5b61151483611380565b915061144060208401611380565b60006020828403121561153457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106565761065661153b565b600181811c9082168061157857607f821691505b60208210810361159857634e487b7160e01b600052602260045260246000fd5b50919050565b818103818111156106565761065661153b565b600080835481600182811c9150808316806115cd57607f831692505b602080841082036115ec57634e487b7160e01b86526022600452602486fd5b818015611600576001811461161557611642565b60ff1986168952841515850289019650611642565b60008a81526020902060005b8681101561163a5781548b820152908501908301611621565b505084890196505b50949897505050505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b39cd7132ddd7029c62180c205741ec89412bcb2d0b7d85256859940116ed80a64736f6c63430008130033", - "sourceMap": "824:2120:43:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2079:140;;;:::i;:::-;;;160:25:162;;;148:2;133:18;2079:140:43;;;;;;;;1031:18:91;;;:::i;:::-;;;;;;;:::i;4463:257:90:-;;;;;;:::i;:::-;;:::i;2461:211:91:-;;;;;;:::i;:::-;;:::i;:::-;;;1536:14:162;;1529:22;1511:41;;1499:2;1484:18;2461:211:91;1371:187:162;5114:255:90;;;;;;:::i;:::-;;:::i;1304:26:91:-;;;;;;3057:592;;;;;;:::i;:::-;;:::i;1083:31::-;;;;;;;;2068:4:162;2056:17;;;2038:36;;2026:2;2011:18;1083:31:91;1896:184:162;2243:92:43;;;;;;:::i;:::-;;:::i;:::-;;5327:177:91;;;:::i;1149:28:90:-;;;;;;;;-1:-1:-1;;;;;2446:32:162;;;2428:51;;2416:2;2401:18;1149:28:90;2267:218:162;5696:108:90;;;;;;:::i;:::-;-1:-1:-1;;;5780:17:90;5696:108;5375:124;;;;;;:::i;:::-;;:::i;2341:80:43:-;2409:5;;2341:80;;1257:185;;;;;;:::i;:::-;;:::i;1337:44:91:-;;;;;;:::i;:::-;;;;;;;;;;;;;;1751:41;;;;;;:::i;:::-;;;;;;;;;;;;;;1448:179:43;;;;;;:::i;:::-;;:::i;1056:20:91:-;;;:::i;2678:373::-;;;;;;:::i;:::-;;:::i;4857:251:90:-;;;;;;:::i;:::-;;:::i;1633:219:43:-;;;;;;:::i;:::-;;:::i;1858:215::-;;;;;;:::i;:::-;;:::i;4200:257:90:-;;;;;;:::i;:::-;;:::i;5921:131::-;;;;;;:::i;:::-;;:::i;3838:1483:91:-;;;;;;:::i;:::-;;:::i;6058:112:90:-;;;;;;:::i;:::-;-1:-1:-1;;;;;6147:16:90;6121:7;6147:16;;;:9;:16;;;;;;;6058:112;1388:64:91;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;4726:125:90;;;;;;:::i;:::-;;:::i;2079:140:43:-;2132:7;2191:21;:19;:21::i;:::-;2158:30;;-1:-1:-1;;;2158:30:43;;2182:4;2158:30;;;2428:51:162;2158:5:43;-1:-1:-1;;;;;2158:15:43;;;;2401:18:162;;2158:30:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;;;:::i;:::-;2151:61;;2079:140;:::o;1031:18:91:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4463:257:90:-;4569:11;;4533:7;;4650:11;;:63;;4673:40;4691:13;:11;:13::i;:::-;4673:6;;4706;4673:17;:40::i;:::-;4650:63;;;4664:6;4650:63;4643:70;4463:257;-1:-1:-1;;;4463:257:90:o;2461:211:91:-;2561:10;2535:4;2551:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;2551:30:91;;;;;;;;;;:39;;;2606:37;2535:4;;2551:30;;2606:37;;;;2584:6;160:25:162;;148:2;133:18;;14:177;2606:37:91;;;;;;;;-1:-1:-1;2661:4:91;2461:211;;;;;:::o;5114:255:90:-;5220:11;;5184:7;;5301:11;;:61;;5324:38;5340:6;5348:13;:11;:13::i;:::-;5324:6;;:38;:15;:38::i;3057:592:91:-;-1:-1:-1;;;;;3209:15:91;;3175:4;3209:15;;;:9;:15;;;;;;;;3225:10;3209:27;;;;;;;;-1:-1:-1;;3287:28:91;;3283:80;;3347:16;3357:6;3347:7;:16;:::i;:::-;-1:-1:-1;;;;;3317:15:91;;;;;;:9;:15;;;;;;;;3333:10;3317:27;;;;;;;:46;3283:80;-1:-1:-1;;;;;3374:15:91;;;;;;:9;:15;;;;;:25;;3393:6;;3374:15;:25;;3393:6;;3374:25;:::i;:::-;;;;-1:-1:-1;;;;;;;3545:13:91;;;;;;;:9;:13;;;;;;;:23;;;;;;3594:26;3545:13;;3594:26;;;-1:-1:-1;;;;;;;;;;;3594:26:91;;;3562:6;160:25:162;;148:2;133:18;;14:177;3594:26:91;;;;;;;;-1:-1:-1;3638:4:91;;3057:592;-1:-1:-1;;;;3057:592:91:o;2243:92:43:-;2295:9;:7;:9::i;:::-;2314:5;:14;2243:92::o;5327:177:91:-;5384:7;5427:16;5410:13;:33;:87;;5473:24;:22;:24::i;5410:87::-;-1:-1:-1;5446:24:91;;5327:177::o;5375:124:90:-;5443:7;5469:23;5485:6;5469:15;:23::i;1257:185:43:-;1357:7;1376:9;:7;:9::i;:::-;1402:33;1416:7;1425:9;1402:13;:33::i;1448:179::-;1545:7;1564:9;:7;:9::i;:::-;1590:30;1601:7;1610:9;1590:10;:30::i;1056:20:91:-;;;;;;;:::i;2678:373::-;2774:10;2748:4;2764:21;;;:9;:21;;;;;:31;;2789:6;;2764:21;2748:4;;2764:31;;2789:6;;2764:31;:::i;:::-;;;;-1:-1:-1;;;;;;;2941:13:91;;;;;;:9;:13;;;;;;;:23;;;;;;2990:32;2999:10;;-1:-1:-1;;;;;;;;;;;2990:32:91;;;2958:6;160:25:162;;148:2;133:18;;14:177;4857:251:90;4959:11;;4923:7;;5040:11;;:61;;5063:38;5079:13;:11;:13::i;:::-;5063:6;;5094;5063:15;:38::i;1633:219:43:-;1758:7;1777:9;:7;:9::i;:::-;1803:42;1818:7;1827:9;1838:6;1803:14;:42::i;:::-;1796:49;1633:219;-1:-1:-1;;;;1633:219:43:o;1858:215::-;1981:7;2000:9;:7;:9::i;:::-;2026:40;2039:7;2048:9;2059:6;2026:12;:40::i;4200:257:90:-;4306:11;;4270:7;;4387:11;;:63;;4410:40;4428:6;4436:13;:11;:13::i;:::-;4410:6;;:40;:17;:40::i;5921:131::-;-1:-1:-1;;;;;6028:16:90;;5986:7;6028:16;;;:9;:16;;;;;;6012:33;;:15;:33::i;3838:1483:91:-;4057:15;4045:8;:27;;4037:63;;;;-1:-1:-1;;;4037:63:91;;5615:2:162;4037:63:91;;;5597:21:162;5654:2;5634:18;;;5627:30;5693:25;5673:18;;;5666:53;5736:18;;4037:63:91;;;;;;;;;4265:24;4292:805;4428:18;:16;:18::i;:::-;-1:-1:-1;;;;;4873:13:91;;;;;;;:6;:13;;;;;;;;;:15;;;;;;;;4511:449;;4555:165;4511:449;;;6052:25:162;6131:18;;;6124:43;;;;6203:15;;;6183:18;;;6176:43;6235:18;;;6228:34;;;6278:19;;;6271:35;;;;6322:19;;;;6315:35;;;4511:449:91;;;;;;;;;;6024:19:162;;;4511:449:91;;;4472:514;;;;;;;;-1:-1:-1;;;4350:658:91;;;6619:27:162;6662:11;;;6655:27;;;;6698:12;;;6691:28;;;;6735:12;;4350:658:91;;;-1:-1:-1;;4350:658:91;;;;;;;;;4319:707;;4350:658;4319:707;;;;4292:805;;;;;;;;;6985:25:162;7058:4;7046:17;;7026:18;;;7019:45;7080:18;;;7073:34;;;7123:18;;;7116:34;;;6957:19;;4292:805:91;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4292:805:91;;-1:-1:-1;;4292:805:91;;;-1:-1:-1;;;;;;;5120:30:91;;;;;;:59;;;5174:5;-1:-1:-1;;;;;5154:25:91;:16;-1:-1:-1;;;;;5154:25:91;;5120:59;5112:86;;;;-1:-1:-1;;;5112:86:91;;7363:2:162;5112:86:91;;;7345:21:162;7402:2;7382:18;;;7375:30;-1:-1:-1;;;7421:18:162;;;7414:44;7475:18;;5112:86:91;7161:338:162;5112:86:91;-1:-1:-1;;;;;5213:27:91;;;;;;;:9;:27;;;;;;;;:36;;;;;;;;;;;;;:44;;;5283:31;160:25:162;;;5213:36:91;;5283:31;;;;;133:18:162;5283:31:91;;;;;;;3838:1483;;;;;;;:::o;4726:125:90:-;4795:7;4821:23;4837:6;4821:15;:23::i;2575:367:43:-;2629:7;2701:19;2723:72;2777:8;2742:12;;2724:15;:30;;;;:::i;:::-;2723:40;;:72::i;:::-;2701:94;;2805:15;2823:88;2875:26;2889:11;2875:5;;:13;;:26;;;;:::i;:::-;2823:30;;-1:-1:-1;;;2823:30:43;;2847:4;2823:30;;;2428:51:162;2823:5:43;-1:-1:-1;;;;;2823:15:43;;;;2401:18:162;;2823:30:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:38;;:88::i;1564:526:93:-;1680:9;1928:1;-1:-1:-1;;1911:19:93;1908:1;1905:26;1902:1;1898:34;1891:42;1878:11;1874:60;1864:116;;1964:1;1961;1954:12;1864:116;-1:-1:-1;2051:9:93;;2047:27;;1564:526::o;2096:672::-;2210:9;2458:1;-1:-1:-1;;2441:19:93;2438:1;2435:26;2432:1;2428:34;2421:42;2408:11;2404:60;2394:116;;2494:1;2491;2484:12;2394:116;-1:-1:-1;2728:9:93;;2691:27;;;2688:34;;2724:27;;;2684:68;;2096:672::o;2427:142:43:-;2487:5;-1:-1:-1;;;;;2465:34:43;;2500:21;:19;:21::i;:::-;2465:57;;;;;;;;;;;;;160:25:162;;148:2;133:18;;14:177;2465:57:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2547:15:43;2532:12;:30;-1:-1:-1;;2427:142:43:o;5510:446:91:-;5575:7;5672:95;5805:4;5789:22;;;;;;:::i;:::-;;;;;;;;;;5640:295;;;9030:25:162;;;;9071:18;;9064:34;;;;5833:14:91;9114:18:162;;;9107:34;5869:13:91;9157:18:162;;;9150:34;5912:4:91;9200:19:162;;;9193:61;9002:19;;5640:295:91;;;;;;;;;;;;5613:336;;;;;;5594:355;;5510:446;:::o;1550:516:90:-;1625:14;1744:22;1759:6;1744:14;:22::i;:::-;1735:31;;;1771:1;1734:38;1726:62;;;;-1:-1:-1;;;1726:62:90;;9467:2:162;1726:62:90;;;9449:21:162;9506:2;9486:18;;;9479:30;-1:-1:-1;;;9525:18:162;;;9518:41;9576:18;;1726:62:90;9265:335:162;1726:62:90;1868:57;-1:-1:-1;;;;;1868:5:90;:22;1891:10;1911:4;1918:6;1868:22;:57::i;:::-;1936:23;1942:8;1952:6;1936:5;:23::i;:::-;1975:45;;;9779:25:162;;;9835:2;9820:18;;9813:34;;;-1:-1:-1;;;;;1975:45:90;;;1983:10;;1975:45;;9752:18:162;1975:45:90;;;;;;;;2031:28;6443:73;2072:467;2144:14;2179:19;2191:6;2179:11;:19::i;:::-;2170:28;-1:-1:-1;2341:57:90;-1:-1:-1;;;;;2341:5:90;:22;2364:10;2384:4;2170:28;2341:22;:57::i;:::-;2409:23;2415:8;2425:6;2409:5;:23::i;:::-;2448:45;;;9779:25:162;;;9835:2;9820:18;;9813:34;;;-1:-1:-1;;;;;2448:45:90;;;2456:10;;2448:45;;9752:18:162;2448:45:90;9605:248:162;2545:679:90;2666:14;2701:23;2717:6;2701:15;:23::i;:::-;2692:32;-1:-1:-1;2806:10:90;-1:-1:-1;;;;;2806:19:90;;;2802:228;;-1:-1:-1;;;;;2859:16:90;;2841:15;2859:16;;;:9;:16;;;;;;;;2876:10;2859:28;;;;;;;;-1:-1:-1;;2942:28:90;;2938:81;;3003:16;3013:6;3003:7;:16;:::i;:::-;-1:-1:-1;;;;;2972:16:90;;;;;;:9;:16;;;;;;;;2989:10;2972:28;;;;;;;:47;2938:81;2827:203;2802:228;3081:20;3087:5;3094:6;3081:5;:20::i;:::-;3117:53;;;9779:25:162;;;9835:2;9820:18;;9813:34;;;-1:-1:-1;;;;;3117:53:90;;;;;;;;3126:10;;3117:53;;9752:18:162;3117:53:90;;;;;;;3181:36;-1:-1:-1;;;;;3181:5:90;:18;3200:8;3210:6;3181:18;:36::i;3230:713::-;3349:14;3379:10;-1:-1:-1;;;;;3379:19:90;;;3375:228;;-1:-1:-1;;;;;3432:16:90;;3414:15;3432:16;;;:9;:16;;;;;;;;3449:10;3432:28;;;;;;;;-1:-1:-1;;3515:28:90;;3511:81;;3576:16;3586:6;3576:7;:16;:::i;:::-;-1:-1:-1;;;;;3545:16:90;;;;;;:9;:16;;;;;;;;3562:10;3545:28;;;;;;;:47;3511:81;3400:203;3375:228;3705:21;3719:6;3705:13;:21::i;:::-;3696:30;;;3731:1;3695:37;3687:61;;;;-1:-1:-1;;;3687:61:90;;10060:2:162;3687:61:90;;;10042:21:162;10099:2;10079:18;;;10072:30;-1:-1:-1;;;10118:18:162;;;10111:41;10169:18;;3687:61:90;9858:335:162;3687:61:90;3800:20;3806:5;3813:6;3800:5;:20::i;:::-;3836:53;;;9779:25:162;;;9835:2;9820:18;;9813:34;;;-1:-1:-1;;;;;3836:53:90;;;;;;;;3845:10;;3836:53;;9752:18:162;3836:53:90;;;;;;;3900:36;-1:-1:-1;;;;;3900:5:90;:18;3919:8;3929:6;3900:18;:36::i;2207:165:31:-;2269:7;2296:22;2307:1;2310:4;2316:1;2296:10;:22::i;1814:119::-;1876:7;1903:22;1914:1;1917;1920:4;1903:10;:22::i;1328:1616:95:-;1466:12;1636:4;1630:11;-1:-1:-1;;;1759:17:95;1752:93;1892:4;1888:1;1869:17;1865:25;1858:39;1976:2;1971;1952:17;1948:26;1941:38;2056:6;2051:2;2032:17;2028:26;2021:42;2860:2;2857:1;2852:3;2833:17;2830:1;2823:5;2816;2811:52;2379:16;2372:24;2366:2;2348:16;2345:24;2341:1;2337;2331:8;2328:15;2324:46;2321:76;2121:756;2110:767;;;2905:7;2897:40;;;;-1:-1:-1;;;2897:40:95;;10400:2:162;2897:40:95;;;10382:21:162;10439:2;10419:18;;;10412:30;-1:-1:-1;;;10458:18:162;;;10451:50;10518:18;;2897:40:95;10198:344:162;2897:40:95;1456:1488;1328:1616;;;;:::o;6150:325:91:-;6235:6;6220:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;6387:13:91;;;;;;:9;:13;;;;;;;;:23;;;;;;6436:32;160:25:162;;;-1:-1:-1;;;;;;;;;;;6436:32:91;133:18:162;6436:32:91;;;;;;;;6150:325;;:::o;6481:328::-;-1:-1:-1;;;;;6553:15:91;;;;;;:9;:15;;;;;:25;;6572:6;;6553:15;:25;;6572:6;;6553:25;:::i;:::-;;;;-1:-1:-1;;6721:11:91;:21;;;;;;;6768:34;;160:25:162;;;-1:-1:-1;;;;;;;6768:34:91;;;-1:-1:-1;;;;;;;;;;;6768:34:91;148:2:162;133:18;6768:34:91;14:177:162;2950:1499:95;3062:12;3232:4;3226:11;-1:-1:-1;;;3355:17:95;3348:93;3488:2;3484:1;3465:17;3461:25;3454:37;3568:6;3563:2;3544:17;3540:26;3533:42;4370:2;4367:1;4363:2;4344:17;4341:1;4334:5;4327;4322:51;3891:16;3884:24;3878:2;3860:16;3857:24;3853:1;3849;3843:8;3840:15;3836:46;3833:76;3633:754;3622:765;;;4415:7;4407:35;;;;-1:-1:-1;;;4407:35:95;;10749:2:162;4407:35:95;;;10731:21:162;10788:2;10768:18;;;10761:30;-1:-1:-1;;;10807:18:162;;;10800:45;10862:18;;4407:35:95;10547:339:162;4407:35:95;3052:1397;2950:1499;;;:::o;196:548:162:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:180::-;808:6;861:2;849:9;840:7;836:23;832:32;829:52;;;877:1;874;867:12;829:52;-1:-1:-1;900:23:162;;749:180;-1:-1:-1;749:180:162:o;934:173::-;1002:20;;-1:-1:-1;;;;;1051:31:162;;1041:42;;1031:70;;1097:1;1094;1087:12;1031:70;934:173;;;:::o;1112:254::-;1180:6;1188;1241:2;1229:9;1220:7;1216:23;1212:32;1209:52;;;1257:1;1254;1247:12;1209:52;1280:29;1299:9;1280:29;:::i;:::-;1270:39;1356:2;1341:18;;;;1328:32;;-1:-1:-1;;;1112:254:162:o;1563:328::-;1640:6;1648;1656;1709:2;1697:9;1688:7;1684:23;1680:32;1677:52;;;1725:1;1722;1715:12;1677:52;1748:29;1767:9;1748:29;:::i;:::-;1738:39;;1796:38;1830:2;1819:9;1815:18;1796:38;:::i;:::-;1786:48;;1881:2;1870:9;1866:18;1853:32;1843:42;;1563:328;;;;;:::o;2490:186::-;2549:6;2602:2;2590:9;2581:7;2577:23;2573:32;2570:52;;;2618:1;2615;2608:12;2570:52;2641:29;2660:9;2641:29;:::i;2681:254::-;2749:6;2757;2810:2;2798:9;2789:7;2785:23;2781:32;2778:52;;;2826:1;2823;2816:12;2778:52;2862:9;2849:23;2839:33;;2891:38;2925:2;2914:9;2910:18;2891:38;:::i;:::-;2881:48;;2681:254;;;;;:::o;2940:328::-;3017:6;3025;3033;3086:2;3074:9;3065:7;3061:23;3057:32;3054:52;;;3102:1;3099;3092:12;3054:52;3138:9;3125:23;3115:33;;3167:38;3201:2;3190:9;3186:18;3167:38;:::i;:::-;3157:48;;3224:38;3258:2;3247:9;3243:18;3224:38;:::i;:::-;3214:48;;2940:328;;;;;:::o;3273:693::-;3384:6;3392;3400;3408;3416;3424;3432;3485:3;3473:9;3464:7;3460:23;3456:33;3453:53;;;3502:1;3499;3492:12;3453:53;3525:29;3544:9;3525:29;:::i;:::-;3515:39;;3573:38;3607:2;3596:9;3592:18;3573:38;:::i;:::-;3563:48;;3658:2;3647:9;3643:18;3630:32;3620:42;;3709:2;3698:9;3694:18;3681:32;3671:42;;3763:3;3752:9;3748:19;3735:33;3808:4;3801:5;3797:16;3790:5;3787:27;3777:55;;3828:1;3825;3818:12;3777:55;3273:693;;;;-1:-1:-1;3273:693:162;;;;3851:5;3903:3;3888:19;;3875:33;;-1:-1:-1;3955:3:162;3940:19;;;3927:33;;3273:693;-1:-1:-1;;3273:693:162:o;3971:260::-;4039:6;4047;4100:2;4088:9;4079:7;4075:23;4071:32;4068:52;;;4116:1;4113;4106:12;4068:52;4139:29;4158:9;4139:29;:::i;:::-;4129:39;;4187:38;4221:2;4210:9;4206:18;4187:38;:::i;4444:184::-;4514:6;4567:2;4555:9;4546:7;4542:23;4538:32;4535:52;;;4583:1;4580;4573:12;4535:52;-1:-1:-1;4606:16:162;;4444:184;-1:-1:-1;4444:184:162:o;4633:127::-;4694:10;4689:3;4685:20;4682:1;4675:31;4725:4;4722:1;4715:15;4749:4;4746:1;4739:15;4765:125;4830:9;;;4851:10;;;4848:36;;;4864:18;;:::i;4895:380::-;4974:1;4970:12;;;;5017;;;5038:61;;5092:4;5084:6;5080:17;5070:27;;5038:61;5145:2;5137:6;5134:14;5114:18;5111:38;5108:161;;5191:10;5186:3;5182:20;5179:1;5172:31;5226:4;5223:1;5216:15;5254:4;5251:1;5244:15;5108:161;;4895:380;;;:::o;5280:128::-;5347:9;;;5368:11;;;5365:37;;;5382:18;;:::i;7633:1133::-;7763:3;7792:1;7825:6;7819:13;7855:3;7877:1;7905:9;7901:2;7897:18;7887:28;;7965:2;7954:9;7950:18;7987;7977:61;;8031:4;8023:6;8019:17;8009:27;;7977:61;8057:2;8105;8097:6;8094:14;8074:18;8071:38;8068:165;;-1:-1:-1;;;8132:33:162;;8188:4;8185:1;8178:15;8218:4;8139:3;8206:17;8068:165;8249:18;8276:133;;;;8423:1;8418:323;;;;8242:499;;8276:133;-1:-1:-1;;8309:24:162;;8297:37;;8382:14;;8375:22;8363:35;;8354:45;;;-1:-1:-1;8276:133:162;;8418:323;7580:1;7573:14;;;7617:4;7604:18;;8516:1;8530:165;8544:6;8541:1;8538:13;8530:165;;;8622:14;;8609:11;;;8602:35;8665:16;;;;8559:10;;8530:165;;;8534:3;;8724:6;8719:3;8715:16;8708:23;;8242:499;-1:-1:-1;8757:3:162;;7633:1133;-1:-1:-1;;;;;;;;7633:1133:162:o", + "object": "0x608060405234801561001057600080fd5b506004361061027f5760003560e01c80637a9e5e4b1161015c578063c53a3985116100ce578063dd62ed3e11610087578063dd62ed3e146105fe578063e688747b14610629578063ea7ca2761461065f578063ed0d0efb14610696578063ef8b30f7146106b6578063f2fde38b146106c957600080fd5b8063c53a398514610573578063c63d75b614610404578063c6e6f5921461059c578063ce96cb77146105af578063d505accf146105c2578063d905777e146105d557600080fd5b8063a9059cbb11610120578063a9059cbb14610501578063b3d7f6b914610514578063b460af9414610527578063b70096131461053a578063ba0876521461054d578063bf7e214f1461056057600080fd5b80637a9e5e4b146104a05780637ecebe00146104b35780638da5cb5b146104d357806394bf804d146104e657806395d89b41146104f957600080fd5b806334fcf437116101f55780634cdad506116101b95780634cdad5061461042c578063679aefce1461043f57806367aff484146104475780636e553f651461045a57806370a082311461046d578063728b952b1461048d57600080fd5b806334fcf437146103aa5780633644e515146103bd57806338d52e0f146103c5578063402d267d146104045780634b5159da1461041957600080fd5b80630a28a477116102475780630a28a4771461030a5780630bade8a41461031d5780630ea9b75b1461034057806318160ddd1461035557806323b872dd1461035e578063313ce5671461037157600080fd5b806301e1d1141461028457806306a36aee1461029f57806306fdde03146102bf57806307a2d13a146102d4578063095ea7b3146102e7575b600080fd5b61028c6106dc565b6040519081526020015b60405180910390f35b61028c6102ad366004611bd0565b60096020526000908152604090205481565b6102c761077d565b6040516102969190611bed565b61028c6102e2366004611c3b565b61080b565b6102fa6102f5366004611c54565b610838565b6040519015158152602001610296565b61028c610318366004611c3b565b6108a5565b6102fa61032b366004611c9d565b600a6020526000908152604090205460ff1681565b61035361034e366004611cd7565b6108c5565b005b61028c60025481565b6102fa61036c366004611d1e565b6109a6565b6103987f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610296565b6103536103b8366004611c3b565b610a86565b61028c610b1b565b6103ec7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610296565b61028c610412366004611bd0565b5060001990565b610353610427366004611d5f565b610b71565b61028c61043a366004611c3b565b610c03565b600c5461028c565b610353610455366004611d96565b610c0e565b61028c610468366004611dc4565b610cd6565b61028c61047b366004611bd0565b60036020526000908152604090205481565b61035361049b366004611de9565b610cea565b6103536104ae366004611bd0565b610d73565b61028c6104c1366004611bd0565b60056020526000908152604090205481565b6006546103ec906001600160a01b031681565b61028c6104f4366004611dc4565b610e5d565b6102c7610e71565b6102fa61050f366004611c54565b610e7e565b61028c610522366004611c3b565b610ee4565b61028c610535366004611e17565b610f03565b6102fa610548366004611e4e565b610f20565b61028c61055b366004611e17565b61101e565b6007546103ec906001600160a01b031681565b6103ec610581366004611bd0565b6008602052600090815260409020546001600160a01b031681565b61028c6105aa366004611c3b565b611033565b61028c6105bd366004611bd0565b611053565b6103536105d0366004611e95565b611075565b61028c6105e3366004611bd0565b6001600160a01b031660009081526003602052604090205490565b61028c61060c366004611de9565b600460209081526000928352604080842090915290825290205481565b6102fa610637366004611f03565b6001600160e01b0319166000908152600b602052604090205460ff919091161c600116151590565b6102fa61066d366004611f36565b6001600160a01b0391909116600090815260096020526040902054600160ff9092161c16151590565b61028c6106a4366004611c9d565b600b6020526000908152604090205481565b61028c6106c4366004611c3b565b6112b9565b6103536106d7366004611bd0565b6112c4565b60006106e6611342565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561074a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076e9190611f62565b6107789190611f91565b905090565b6000805461078a90611fa4565b80601f01602080910402602001604051908101604052809291908181526020018280546107b690611fa4565b80156108035780601f106107d857610100808354040283529160200191610803565b820191906000526020600020905b8154815290600101906020018083116107e657829003601f168201915b505050505081565b600254600090801561082f5761082a6108226106dc565b84908361140b565b610831565b825b9392505050565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108939086815260200190565b60405180910390a35060015b92915050565b600254600090801561082f5761082a816108bd6106dc565b859190611429565b6108db336000356001600160e01b03191661144f565b6109005760405162461bcd60e51b81526004016108f790611fde565b60405180910390fd5b8015610930576001600160e01b031982166000908152600b602052604090208054600160ff86161b179055610957565b6001600160e01b031982166000908152600b602052604090208054600160ff86161b191690555b816001600160e01b0319168360ff167fbfe16b2c35ce23dfd1ab0e7b5d086a10060c9b52d1574e1680c881b3b3a2b15183604051610999911515815260200190565b60405180910390a3505050565b6001600160a01b03831660009081526004602090815260408083203384529091528120546000198114610a02576109dd8382612004565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b03851660009081526003602052604081208054859290610a2a908490612004565b90915550506001600160a01b038085166000818152600360205260409081902080548701905551909187169060008051602061210183398151915290610a739087815260200190565b60405180910390a3506001949350505050565b7f000000000000000000000000000000000000000000000000000000000000000015610b0e57610ac2336000356001600160e01b03191661144f565b610b0e5760405162461bcd60e51b815260206004820152601b60248201527f4d6f636b455243343632363a206e6f7420617574686f72697a6564000000000060448201526064016108f7565b610b166114f8565b600c55565b60007f00000000000000000000000000000000000000000000000000000000000000004614610b4c57610778611585565b507f000000000000000000000000000000000000000000000000000000000000000090565b610b87336000356001600160e01b03191661144f565b610ba35760405162461bcd60e51b81526004016108f790611fde565b6001600160e01b031982166000818152600a6020908152604091829020805460ff191685151590811790915591519182527f36d28126bef21a4f3765d7fcb7c45cead463ae4c41094ef3b771ede598544103910160405180910390a25050565b600061089f8261080b565b610c24336000356001600160e01b03191661144f565b610c405760405162461bcd60e51b81526004016108f790611fde565b8015610c6f576001600160a01b03831660009081526009602052604090208054600160ff85161b179055610c95565b6001600160a01b03831660009081526009602052604090208054600160ff85161b191690555b8160ff16836001600160a01b03167f4c9bdd0c8e073eb5eda2250b18d8e5121ff27b62064fbeeeed4869bb99bc5bf283604051610999911515815260200190565b6000610ce06114f8565b610831838361161f565b610d00336000356001600160e01b03191661144f565b610d1c5760405162461bcd60e51b81526004016108f790611fde565b6001600160a01b0382811660008181526008602052604080822080546001600160a01b0319169486169485179055517fa4908e11a5f895b13d51526c331ac93cdd30e59772361c5d07874eb36bff20659190a35050565b6006546001600160a01b0316331480610e08575060075460405163b700961360e01b81526001600160a01b039091169063b700961390610dc790339030906001600160e01b03196000351690600401612017565b602060405180830381865afa158015610de4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e089190612044565b610e1157600080fd5b600780546001600160a01b0319166001600160a01b03831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b7638998019890600090a350565b6000610e676114f8565b61083183836116f5565b6001805461078a90611fa4565b33600090815260036020526040812080548391908390610e9f908490612004565b90915550506001600160a01b03831660008181526003602052604090819020805485019055513390600080516020612101833981519152906108939086815260200190565b600254600090801561082f5761082a610efb6106dc565b849083611429565b6000610f0d6114f8565b610f18848484611784565b949350505050565b6001600160a01b038083166000908152600860205260408120549091168015610fbc5760405163b700961360e01b81526001600160a01b0382169063b700961390610f7390889088908890600401612017565b602060405180830381865afa158015610f90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb49190612044565b915050610831565b6001600160e01b031983166000908152600a602052604090205460ff168061101557506001600160e01b031983166000908152600b60209081526040808320546001600160a01b03891684526009909252909120541615155b95945050505050565b60006110286114f8565b610f18848484611888565b600254600090801561082f5761082a8161104b6106dc565b85919061140b565b6001600160a01b03811660009081526003602052604081205461089f9061080b565b428410156110c55760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016108f7565b600060016110d1610b1b565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa1580156111dd573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906112135750876001600160a01b0316816001600160a01b0316145b6112505760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b60448201526064016108f7565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b600061089f82611033565b6112da336000356001600160e01b03191661144f565b6112f65760405162461bcd60e51b81526004016108f790611fde565b600680546001600160a01b0319166001600160a01b03831690811790915560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b6000806113616301e13380600d544261135b9190612004565b906119ca565b9050600061083161137d83600c546119df90919063ffffffff16565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156113e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114059190611f62565b906119df565b600082600019048411830215820261142257600080fd5b5091020490565b600082600019048411830215820261144057600080fd5b50910281810615159190040190565b6007546000906001600160a01b031680158015906114d9575060405163b700961360e01b81526001600160a01b0382169063b70096139061149890879030908890600401612017565b602060405180830381865afa1580156114b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d99190612044565b80610f1857506006546001600160a01b03858116911614949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0712d6861152f611342565b6040518263ffffffff1660e01b815260040161154d91815260200190565b600060405180830381600087803b15801561156757600080fd5b505af115801561157b573d6000803e3d6000fd5b505042600d555050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516115b79190612061565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600061162a836112b9565b90508060000361166a5760405162461bcd60e51b815260206004820152600b60248201526a5a45524f5f53484152455360a81b60448201526064016108f7565b61169f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330866119f4565b6116a98282611a7e565b60408051848152602081018390526001600160a01b0384169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d791015b60405180910390a361089f565b600061170083610ee4565b90506117376001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330846119f4565b6117418284611a7e565b60408051828152602081018590526001600160a01b0384169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d791016116e8565b600061178f846108a5565b9050336001600160a01b038316146117ff576001600160a01b038216600090815260046020908152604080832033845290915290205460001981146117fd576117d88282612004565b6001600160a01b03841660009081526004602090815260408083203384529091529020555b505b6118098282611ad8565b60408051858152602081018390526001600160a01b03808516929086169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a46108316001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168486611b3a565b6000336001600160a01b038316146118f8576001600160a01b038216600090815260046020908152604080832033845290915290205460001981146118f6576118d18582612004565b6001600160a01b03841660009081526004602090815260408083203384529091529020555b505b61190184610c03565b9050806000036119415760405162461bcd60e51b815260206004820152600b60248201526a5a45524f5f41535345545360a81b60448201526064016108f7565b61194b8285611ad8565b60408051828152602081018690526001600160a01b03808516929086169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a46108316001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168483611b3a565b600061083183670de0b6b3a76400008461140b565b60006108318383670de0b6b3a764000061140b565b60006040516323b872dd60e01b81528460048201528360248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080611a775760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b60448201526064016108f7565b5050505050565b8060026000828254611a909190611f91565b90915550506001600160a01b03821660008181526003602090815260408083208054860190555184815260008051602061210183398151915291015b60405180910390a35050565b6001600160a01b03821660009081526003602052604081208054839290611b00908490612004565b90915550506002805482900390556040518181526000906001600160a01b0384169060008051602061210183398151915290602001611acc565b600060405163a9059cbb60e01b8152836004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080611bb25760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b60448201526064016108f7565b50505050565b6001600160a01b0381168114611bcd57600080fd5b50565b600060208284031215611be257600080fd5b813561083181611bb8565b600060208083528351808285015260005b81811015611c1a57858101830151858201604001528201611bfe565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215611c4d57600080fd5b5035919050565b60008060408385031215611c6757600080fd5b8235611c7281611bb8565b946020939093013593505050565b80356001600160e01b031981168114611c9857600080fd5b919050565b600060208284031215611caf57600080fd5b61083182611c80565b803560ff81168114611c9857600080fd5b8015158114611bcd57600080fd5b600080600060608486031215611cec57600080fd5b611cf584611cb8565b9250611d0360208501611c80565b91506040840135611d1381611cc9565b809150509250925092565b600080600060608486031215611d3357600080fd5b8335611d3e81611bb8565b92506020840135611d4e81611bb8565b929592945050506040919091013590565b60008060408385031215611d7257600080fd5b611d7b83611c80565b91506020830135611d8b81611cc9565b809150509250929050565b600080600060608486031215611dab57600080fd5b8335611db681611bb8565b9250611d0360208501611cb8565b60008060408385031215611dd757600080fd5b823591506020830135611d8b81611bb8565b60008060408385031215611dfc57600080fd5b8235611e0781611bb8565b91506020830135611d8b81611bb8565b600080600060608486031215611e2c57600080fd5b833592506020840135611e3e81611bb8565b91506040840135611d1381611bb8565b600080600060608486031215611e6357600080fd5b8335611e6e81611bb8565b92506020840135611e7e81611bb8565b9150611e8c60408501611c80565b90509250925092565b600080600080600080600060e0888a031215611eb057600080fd5b8735611ebb81611bb8565b96506020880135611ecb81611bb8565b95506040880135945060608801359350611ee760808901611cb8565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611f1657600080fd5b611f1f83611cb8565b9150611f2d60208401611c80565b90509250929050565b60008060408385031215611f4957600080fd5b8235611f5481611bb8565b9150611f2d60208401611cb8565b600060208284031215611f7457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561089f5761089f611f7b565b600181811c90821680611fb857607f821691505b602082108103611fd857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b8181038181111561089f5761089f611f7b565b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b60006020828403121561205657600080fd5b815161083181611cc9565b600080835481600182811c91508083168061207d57607f831692505b6020808410820361209c57634e487b7160e01b86526022600452602486fd5b8180156120b057600181146120c5576120f2565b60ff19861689528415158502890196506120f2565b60008a81526020902060005b868110156120ea5781548b8201529085019083016120d1565b505084890196505b50949897505050505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212206a892e028ac2ffc99b8bec0c4cebf2d4bd4d97b2cf13aa9f0cddcbdcb61330a464736f6c63430008130033", + "sourceMap": "963:2644:40:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2712:140;;;:::i;:::-;;;160:25:149;;;148:2;133:18;2712:140:40;;;;;;;;1622:47:85;;;;;;:::i;:::-;;;;;;;;;;;;;;1031:18:87;;;:::i;:::-;;;;;;;:::i;4463:257:86:-;;;;;;:::i;:::-;;:::i;2461:211:87:-;;;;;;:::i;:::-;;:::i;:::-;;;1989:14:149;;1982:22;1964:41;;1952:2;1937:18;2461:211:87;1824:187:149;5114:255:86;;;;;;:::i;:::-;;:::i;1676:49:85:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4390:396;;;;;;:::i;:::-;;:::i;:::-;;1304:26:87;;;;;;3057:592;;;;;;:::i;:::-;;:::i;1083:31::-;;;;;;;;3688:4:149;3676:17;;;3658:36;;3646:2;3631:18;1083:31:87;3516:184:149;2876:122:40;;;;;;:::i;:::-;;:::i;5327:177:87:-;;;:::i;1149:28:86:-;;;;;;;;-1:-1:-1;;;;;3884:32:149;;;3866:51;;3854:2;3839:18;1149:28:86;3705:218:149;5696:108:86;;;;;;:::i;:::-;-1:-1:-1;;;5780:17:86;5696:108;3448:210:85;;;;;;:::i;:::-;;:::i;5375:124:86:-;;;;;;:::i;:::-;;:::i;3004:80:40:-;3072:5;;3004:80;;3853:337:85;;;;;;:::i;:::-;;:::i;1890:185:40:-;;;;;;:::i;:::-;;:::i;1337:44:87:-;;;;;;:::i;:::-;;;;;;;;;;;;;;3006:241:85;;;;;;:::i;:::-;;:::i;1523:434:84:-;;;;;;:::i;:::-;;:::i;1751:41:87:-;;;;;;:::i;:::-;;;;;;;;;;;;;;562:20:84;;;;;-1:-1:-1;;;;;562:20:84;;;2081:179:40;;;;;;:::i;:::-;;:::i;1056:20:87:-;;;:::i;2678:373::-;;;;;;:::i;:::-;;:::i;4857:251:86:-;;;;;;:::i;:::-;;:::i;2266:219:40:-;;;;;;:::i;:::-;;:::i;2336:465:85:-;;;;;;:::i;:::-;;:::i;2491:215:40:-;;;;;;:::i;:::-;;:::i;589:26:84:-;;;;;-1:-1:-1;;;;;589:26:84;;;1369:61:85;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1369:61:85;;;4200:257:86;;;;;;:::i;:::-;;:::i;5921:131::-;;;;;;:::i;:::-;;:::i;3838:1483:87:-;;;;;;:::i;:::-;;:::i;6058:112:86:-;;;;;;:::i;:::-;-1:-1:-1;;;;;6147:16:86;6121:7;6147:16;;;:9;:16;;;;;;;6058:112;1388:64:87;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1958:186:85;;;;;;:::i;:::-;-1:-1:-1;;;;;;2083:35:85;2051:4;2083:35;;;:22;:35;;;;;;2075:52;;;;;;2131:1;2074:58;:63;;;1958:186;1795:157;;;;;;:::i;:::-;-1:-1:-1;;;;;1908:18:85;;;;1876:4;1908:18;;;:12;:18;;;;;;1939:1;1900:35;;;;;1899:41;:46;;;1795:157;1732:56;;;;;;:::i;:::-;;;;;;;;;;;;;;4726:125:86;;;;;;:::i;:::-;;:::i;1963:164:84:-;;;;;;:::i;:::-;;:::i;2712:140:40:-;2765:7;2824:21;:19;:21::i;:::-;2791:30;;-1:-1:-1;;;2791:30:40;;2815:4;2791:30;;;3866:51:149;2791:5:40;-1:-1:-1;;;;;2791:15:40;;;;3839:18:149;;2791:30:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;;;:::i;:::-;2784:61;;2712:140;:::o;1031:18:87:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4463:257:86:-;4569:11;;4533:7;;4650:11;;:63;;4673:40;4691:13;:11;:13::i;:::-;4673:6;;4706;4673:17;:40::i;:::-;4650:63;;;4664:6;4650:63;4643:70;4463:257;-1:-1:-1;;;4463:257:86:o;2461:211:87:-;2561:10;2535:4;2551:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;2551:30:87;;;;;;;;;;:39;;;2606:37;2535:4;;2551:30;;2606:37;;;;2584:6;160:25:149;;148:2;133:18;;14:177;2606:37:87;;;;;;;;-1:-1:-1;2661:4:87;2461:211;;;;;:::o;5114:255:86:-;5220:11;;5184:7;;5301:11;;:61;;5324:38;5340:6;5348:13;:11;:13::i;:::-;5324:6;;:38;:15;:38::i;4390:396:85:-;902:33:84;915:10;927:7;;-1:-1:-1;;;;;;927:7:84;902:12;:33::i;:::-;894:58;;;;-1:-1:-1;;;894:58:84;;;;;;;:::i;:::-;;;;;;;;;4535:7:85::1;4531:184;;;-1:-1:-1::0;;;;;;4558:35:85;::::1;4597:18;4558:35:::0;;;:22:::1;:35;::::0;;;;:57;;4605:1:::1;:9;::::0;::::1;;4558:57;::::0;;4531:184:::1;;;-1:-1:-1::0;;;;;;4646:35:85;::::1;4686:18;4646:35:::0;;;:22:::1;:35;::::0;;;;:58;;4694:1:::1;:9;::::0;::::1;;4685:19;4646:58;::::0;;4531:184:::1;4758:11;-1:-1:-1::0;;;;;4730:49:85::1;;4752:4;4730:49;;;4771:7;4730:49;;;;1989:14:149::0;1982:22;1964:41;;1952:2;1937:18;;1824:187;4730:49:85::1;;;;;;;;4390:396:::0;;;:::o;3057:592:87:-;-1:-1:-1;;;;;3209:15:87;;3175:4;3209:15;;;:9;:15;;;;;;;;3225:10;3209:27;;;;;;;;-1:-1:-1;;3287:28:87;;3283:80;;3347:16;3357:6;3347:7;:16;:::i;:::-;-1:-1:-1;;;;;3317:15:87;;;;;;:9;:15;;;;;;;;3333:10;3317:27;;;;;;;:46;3283:80;-1:-1:-1;;;;;3374:15:87;;;;;;:9;:15;;;;;:25;;3393:6;;3374:15;:25;;3393:6;;3374:25;:::i;:::-;;;;-1:-1:-1;;;;;;;3545:13:87;;;;;;;:9;:13;;;;;;;:23;;;;;;3594:26;3545:13;;3594:26;;;-1:-1:-1;;;;;;;;;;;3594:26:87;;;3562:6;160:25:149;;148:2;133:18;;14:177;3594:26:87;;;;;;;;-1:-1:-1;3638:4:87;;3057:592;-1:-1:-1;;;;3057:592:87:o;2876:122:40:-;1680:18;1676:168;;;1739:33;1752:10;1764:7;;-1:-1:-1;;;;;;1764:7:40;1739:12;:33::i;:::-;1714:119;;;;-1:-1:-1;;;1714:119:40;;10292:2:149;1714:119:40;;;10274:21:149;10331:2;10311:18;;;10304:30;10370:29;10350:18;;;10343:57;10417:18;;1714:119:40;10090:351:149;1714:119:40;2958:9:::1;:7;:9::i;:::-;2977:5;:14:::0;2876:122::o;5327:177:87:-;5384:7;5427:16;5410:13;:33;:87;;5473:24;:22;:24::i;5410:87::-;-1:-1:-1;5446:24:87;;5327:177::o;3448:210:85:-;902:33:84;915:10;927:7;;-1:-1:-1;;;;;;927:7:84;902:12;:33::i;:::-;894:58;;;;-1:-1:-1;;;894:58:84;;;;;;;:::i;:::-;-1:-1:-1;;;;;;3549:31:85;::::1;;::::0;;;:18:::1;:31;::::0;;;;;;;;:41;;-1:-1:-1;;3549:41:85::1;::::0;::::1;;::::0;;::::1;::::0;;;3606:45;;1964:41:149;;;3606:45:85::1;::::0;1937:18:149;3606:45:85::1;;;;;;;3448:210:::0;;:::o;5375:124:86:-;5443:7;5469:23;5485:6;5469:15;:23::i;3853:337:85:-;902:33:84;915:10;927:7;;-1:-1:-1;;;;;;927:7:84;902:12;:33::i;:::-;894:58;;;;-1:-1:-1;;;894:58:84;;;;;;;:::i;:::-;3986:7:85::1;3982:150;;;-1:-1:-1::0;;;;;4009:18:85;::::1;4031;4009::::0;;;:12:::1;:18;::::0;;;;:40;;4039:1:::1;:9;::::0;::::1;;4009:40;::::0;;3982:150:::1;;;-1:-1:-1::0;;;;;4080:18:85;::::1;4103;4080::::0;;;:12:::1;:18;::::0;;;;:41;;4111:1:::1;:9;::::0;::::1;;4102:19;4080:41;::::0;;3982:150:::1;4169:4;4147:36;;4163:4;-1:-1:-1::0;;;;;4147:36:85::1;;4175:7;4147:36;;;;1989:14:149::0;1982:22;1964:41;;1952:2;1937:18;;1824:187;1890:185:40;1990:7;2009:9;:7;:9::i;:::-;2035:33;2049:7;2058:9;2035:13;:33::i;3006:241:85:-;902:33:84;915:10;927:7;;-1:-1:-1;;;;;;927:7:84;902:12;:33::i;:::-;894:58;;;;-1:-1:-1;;;894:58:84;;;;;;;:::i;:::-;-1:-1:-1;;;;;3121:32:85;;::::1;;::::0;;;:24:::1;:32;::::0;;;;;:50;;-1:-1:-1;;;;;;3121:50:85::1;::::0;;::::1;::::0;;::::1;::::0;;3187:53;::::1;::::0;3121:32;3187:53:::1;3006:241:::0;;:::o;1523:434:84:-;1794:5;;-1:-1:-1;;;;;1794:5:84;1780:10;:19;;:76;;-1:-1:-1;1803:9:84;;:53;;-1:-1:-1;;;1803:53:84;;-1:-1:-1;;;;;1803:9:84;;;;:17;;:53;;1821:10;;1841:4;;-1:-1:-1;;;;;;1803:9:84;1848:7;;;1803:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1772:85;;;;;;1868:9;:24;;-1:-1:-1;;;;;;1868:24:84;-1:-1:-1;;;;;1868:24:84;;;;;;;;1908:42;;1925:10;;1908:42;;-1:-1:-1;;1908:42:84;1523:434;:::o;2081:179:40:-;2178:7;2197:9;:7;:9::i;:::-;2223:30;2234:7;2243:9;2223:10;:30::i;1056:20:87:-;;;;;;;:::i;2678:373::-;2774:10;2748:4;2764:21;;;:9;:21;;;;;:31;;2789:6;;2764:21;2748:4;;2764:31;;2789:6;;2764:31;:::i;:::-;;;;-1:-1:-1;;;;;;;2941:13:87;;;;;;:9;:13;;;;;;;:23;;;;;;2990:32;2999:10;;-1:-1:-1;;;;;;;;;;;2990:32:87;;;2958:6;160:25:149;;148:2;133:18;;14:177;4857:251:86;4959:11;;4923:7;;5040:11;;:61;;5063:38;5079:13;:11;:13::i;:::-;5063:6;;5094;5063:15;:38::i;2266:219:40:-;2391:7;2410:9;:7;:9::i;:::-;2436:42;2451:7;2460:9;2471:6;2436:14;:42::i;:::-;2429:49;2266:219;-1:-1:-1;;;;2266:219:40:o;2336:465:85:-;-1:-1:-1;;;;;2515:32:85;;;2471:4;2515:32;;;:24;:32;;;;;;2471:4;;2515:32;2562:38;;2558:101;;2609:50;;-1:-1:-1;;;2609:50:85;;-1:-1:-1;;;;;2609:23:85;;;;;:50;;2633:4;;2639:6;;2647:11;;2609:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2602:57;;;;;2558:101;-1:-1:-1;;;;;;2689:31:85;;;;;;:18;:31;;;;;;;;;:105;;-1:-1:-1;;;;;;;2759:35:85;;;;;;:22;:35;;;;;;;;;-1:-1:-1;;;;;2738:18:85;;;;:12;:18;;;;;;;:56;2724:70;;2689:105;2670:124;2336:465;-1:-1:-1;;;;;2336:465:85:o;2491:215:40:-;2614:7;2633:9;:7;:9::i;:::-;2659:40;2672:7;2681:9;2692:6;2659:12;:40::i;4200:257:86:-;4306:11;;4270:7;;4387:11;;:63;;4410:40;4428:6;4436:13;:11;:13::i;:::-;4410:6;;:40;:17;:40::i;5921:131::-;-1:-1:-1;;;;;6028:16:86;;5986:7;6028:16;;;:9;:16;;;;;;6012:33;;:15;:33::i;3838:1483:87:-;4057:15;4045:8;:27;;4037:63;;;;-1:-1:-1;;;4037:63:87;;11303:2:149;4037:63:87;;;11285:21:149;11342:2;11322:18;;;11315:30;11381:25;11361:18;;;11354:53;11424:18;;4037:63:87;11101:347:149;4037:63:87;4265:24;4292:805;4428:18;:16;:18::i;:::-;-1:-1:-1;;;;;4873:13:87;;;;;;;:6;:13;;;;;;;;;:15;;;;;;;;4511:449;;4555:165;4511:449;;;11740:25:149;11819:18;;;11812:43;;;;11891:15;;;11871:18;;;11864:43;11923:18;;;11916:34;;;11966:19;;;11959:35;;;;12010:19;;;;12003:35;;;4511:449:87;;;;;;;;;;11712:19:149;;;4511:449:87;;;4472:514;;;;;;;;-1:-1:-1;;;4350:658:87;;;12307:27:149;12350:11;;;12343:27;;;;12386:12;;;12379:28;;;;12423:12;;4350:658:87;;;-1:-1:-1;;4350:658:87;;;;;;;;;4319:707;;4350:658;4319:707;;;;4292:805;;;;;;;;;12673:25:149;12746:4;12734:17;;12714:18;;;12707:45;12768:18;;;12761:34;;;12811:18;;;12804:34;;;12645:19;;4292:805:87;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4292:805:87;;-1:-1:-1;;4292:805:87;;;-1:-1:-1;;;;;;;5120:30:87;;;;;;:59;;;5174:5;-1:-1:-1;;;;;5154:25:87;:16;-1:-1:-1;;;;;5154:25:87;;5120:59;5112:86;;;;-1:-1:-1;;;5112:86:87;;13051:2:149;5112:86:87;;;13033:21:149;13090:2;13070:18;;;13063:30;-1:-1:-1;;;13109:18:149;;;13102:44;13163:18;;5112:86:87;12849:338:149;5112:86:87;-1:-1:-1;;;;;5213:27:87;;;;;;;:9;:27;;;;;;;;:36;;;;;;;;;;;;;:44;;;5283:31;160:25:149;;;5213:36:87;;5283:31;;;;;133:18:149;5283:31:87;;;;;;;3838:1483;;;;;;;:::o;4726:125:86:-;4795:7;4821:23;4837:6;4821:15;:23::i;1963:164:84:-;902:33;915:10;927:7;;-1:-1:-1;;;;;;927:7:84;902:12;:33::i;:::-;894:58;;;;-1:-1:-1;;;894:58:84;;;;;;;:::i;:::-;2046:5:::1;:16:::0;;-1:-1:-1;;;;;;2046:16:84::1;-1:-1:-1::0;;;;;2046:16:84;::::1;::::0;;::::1;::::0;;;2078:42:::1;::::0;2099:10:::1;::::0;2078:42:::1;::::0;-1:-1:-1;;2078:42:84::1;1963:164:::0;:::o;3238:367:40:-;3292:7;3364:19;3386:72;3440:8;3405:12;;3387:15;:30;;;;:::i;:::-;3386:40;;:72::i;:::-;3364:94;;3468:15;3486:88;3538:26;3552:11;3538:5;;:13;;:26;;;;:::i;:::-;3486:30;;-1:-1:-1;;;3486:30:40;;3510:4;3486:30;;;3866:51:149;3486:5:40;-1:-1:-1;;;;;3486:15:40;;;;3839:18:149;;3486:30:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:38;;:88::i;1564:526:89:-;1680:9;1928:1;-1:-1:-1;;1911:19:89;1908:1;1905:26;1902:1;1898:34;1891:42;1878:11;1874:60;1864:116;;1964:1;1961;1954:12;1864:116;-1:-1:-1;2051:9:89;;2047:27;;1564:526::o;2096:672::-;2210:9;2458:1;-1:-1:-1;;2441:19:89;2438:1;2435:26;2432:1;2428:34;2421:42;2408:11;2404:60;2394:116;;2494:1;2491;2484:12;2394:116;-1:-1:-1;2728:9:89;;2691:27;;;2688:34;;2724:27;;;2684:68;;2096:672::o;977:540:84:-;1097:9;;1064:4;;-1:-1:-1;;;;;1097:9:84;1415:27;;;;;:77;;-1:-1:-1;1446:46:84;;-1:-1:-1;;;1446:46:84;;-1:-1:-1;;;;;1446:12:84;;;;;:46;;1459:4;;1473;;1480:11;;1446:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1414:96;;;-1:-1:-1;1505:5:84;;-1:-1:-1;;;;;1497:13:84;;;1505:5;;1497:13;1407:103;977:540;-1:-1:-1;;;;977:540:84:o;3090:142:40:-;3150:5;-1:-1:-1;;;;;3128:34:40;;3163:21;:19;:21::i;:::-;3128:57;;;;;;;;;;;;;160:25:149;;148:2;133:18;;14:177;3128:57:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3210:15:40;3195:12;:30;-1:-1:-1;;3090:142:40:o;5510:446:87:-;5575:7;5672:95;5805:4;5789:22;;;;;;:::i;:::-;;;;;;;;;;5640:295;;;14718:25:149;;;;14759:18;;14752:34;;;;5833:14:87;14802:18:149;;;14795:34;5869:13:87;14845:18:149;;;14838:34;5912:4:87;14888:19:149;;;14881:61;14690:19;;5640:295:87;;;;;;;;;;;;5613:336;;;;;;5594:355;;5510:446;:::o;1550:516:86:-;1625:14;1744:22;1759:6;1744:14;:22::i;:::-;1735:31;;;1771:1;1734:38;1726:62;;;;-1:-1:-1;;;1726:62:86;;15155:2:149;1726:62:86;;;15137:21:149;15194:2;15174:18;;;15167:30;-1:-1:-1;;;15213:18:149;;;15206:41;15264:18;;1726:62:86;14953:335:149;1726:62:86;1868:57;-1:-1:-1;;;;;1868:5:86;:22;1891:10;1911:4;1918:6;1868:22;:57::i;:::-;1936:23;1942:8;1952:6;1936:5;:23::i;:::-;1975:45;;;15467:25:149;;;15523:2;15508:18;;15501:34;;;-1:-1:-1;;;;;1975:45:86;;;1983:10;;1975:45;;15440:18:149;1975:45:86;;;;;;;;2031:28;6443:73;2072:467;2144:14;2179:19;2191:6;2179:11;:19::i;:::-;2170:28;-1:-1:-1;2341:57:86;-1:-1:-1;;;;;2341:5:86;:22;2364:10;2384:4;2170:28;2341:22;:57::i;:::-;2409:23;2415:8;2425:6;2409:5;:23::i;:::-;2448:45;;;15467:25:149;;;15523:2;15508:18;;15501:34;;;-1:-1:-1;;;;;2448:45:86;;;2456:10;;2448:45;;15440:18:149;2448:45:86;15293:248:149;2545:679:86;2666:14;2701:23;2717:6;2701:15;:23::i;:::-;2692:32;-1:-1:-1;2806:10:86;-1:-1:-1;;;;;2806:19:86;;;2802:228;;-1:-1:-1;;;;;2859:16:86;;2841:15;2859:16;;;:9;:16;;;;;;;;2876:10;2859:28;;;;;;;;-1:-1:-1;;2942:28:86;;2938:81;;3003:16;3013:6;3003:7;:16;:::i;:::-;-1:-1:-1;;;;;2972:16:86;;;;;;:9;:16;;;;;;;;2989:10;2972:28;;;;;;;:47;2938:81;2827:203;2802:228;3081:20;3087:5;3094:6;3081:5;:20::i;:::-;3117:53;;;15467:25:149;;;15523:2;15508:18;;15501:34;;;-1:-1:-1;;;;;3117:53:86;;;;;;;;3126:10;;3117:53;;15440:18:149;3117:53:86;;;;;;;3181:36;-1:-1:-1;;;;;3181:5:86;:18;3200:8;3210:6;3181:18;:36::i;3230:713::-;3349:14;3379:10;-1:-1:-1;;;;;3379:19:86;;;3375:228;;-1:-1:-1;;;;;3432:16:86;;3414:15;3432:16;;;:9;:16;;;;;;;;3449:10;3432:28;;;;;;;;-1:-1:-1;;3515:28:86;;3511:81;;3576:16;3586:6;3576:7;:16;:::i;:::-;-1:-1:-1;;;;;3545:16:86;;;;;;:9;:16;;;;;;;;3562:10;3545:28;;;;;;;:47;3511:81;3400:203;3375:228;3705:21;3719:6;3705:13;:21::i;:::-;3696:30;;;3731:1;3695:37;3687:61;;;;-1:-1:-1;;;3687:61:86;;15748:2:149;3687:61:86;;;15730:21:149;15787:2;15767:18;;;15760:30;-1:-1:-1;;;15806:18:149;;;15799:41;15857:18;;3687:61:86;15546:335:149;3687:61:86;3800:20;3806:5;3813:6;3800:5;:20::i;:::-;3836:53;;;15467:25:149;;;15523:2;15508:18;;15501:34;;;-1:-1:-1;;;;;3836:53:86;;;;;;;;3845:10;;3836:53;;15440:18:149;3836:53:86;;;;;;;3900:36;-1:-1:-1;;;;;3900:5:86;:18;3919:8;3929:6;3900:18;:36::i;2207:165:28:-;2269:7;2296:22;2307:1;2310:4;2316:1;2296:10;:22::i;1814:119::-;1876:7;1903:22;1914:1;1917;1920:4;1903:10;:22::i;1328:1616:91:-;1466:12;1636:4;1630:11;-1:-1:-1;;;1759:17:91;1752:93;1892:4;1888:1;1869:17;1865:25;1858:39;1976:2;1971;1952:17;1948:26;1941:38;2056:6;2051:2;2032:17;2028:26;2021:42;2860:2;2857:1;2852:3;2833:17;2830:1;2823:5;2816;2811:52;2379:16;2372:24;2366:2;2348:16;2345:24;2341:1;2337;2331:8;2328:15;2324:46;2321:76;2121:756;2110:767;;;2905:7;2897:40;;;;-1:-1:-1;;;2897:40:91;;16088:2:149;2897:40:91;;;16070:21:149;16127:2;16107:18;;;16100:30;-1:-1:-1;;;16146:18:149;;;16139:50;16206:18;;2897:40:91;15886:344:149;2897:40:91;1456:1488;1328:1616;;;;:::o;6150:325:87:-;6235:6;6220:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;6387:13:87;;;;;;:9;:13;;;;;;;;:23;;;;;;6436:32;160:25:149;;;-1:-1:-1;;;;;;;;;;;6436:32:87;133:18:149;6436:32:87;;;;;;;;6150:325;;:::o;6481:328::-;-1:-1:-1;;;;;6553:15:87;;;;;;:9;:15;;;;;:25;;6572:6;;6553:15;:25;;6572:6;;6553:25;:::i;:::-;;;;-1:-1:-1;;6721:11:87;:21;;;;;;;6768:34;;160:25:149;;;-1:-1:-1;;;;;;;6768:34:87;;;-1:-1:-1;;;;;;;;;;;6768:34:87;148:2:149;133:18;6768:34:87;14:177:149;2950:1499:91;3062:12;3232:4;3226:11;-1:-1:-1;;;3355:17:91;3348:93;3488:2;3484:1;3465:17;3461:25;3454:37;3568:6;3563:2;3544:17;3540:26;3533:42;4370:2;4367:1;4363:2;4344:17;4341:1;4334:5;4327;4322:51;3891:16;3884:24;3878:2;3860:16;3857:24;3853:1;3849;3843:8;3840:15;3836:46;3833:76;3633:754;3622:765;;;4415:7;4407:35;;;;-1:-1:-1;;;4407:35:91;;16437:2:149;4407:35:91;;;16419:21:149;16476:2;16456:18;;;16449:30;-1:-1:-1;;;16495:18:149;;;16488:45;16550:18;;4407:35:91;16235:339:149;4407:35:91;3052:1397;2950:1499;;;:::o;196:131:149:-;-1:-1:-1;;;;;271:31:149;;261:42;;251:70;;317:1;314;307:12;251:70;196:131;:::o;332:247::-;391:6;444:2;432:9;423:7;419:23;415:32;412:52;;;460:1;457;450:12;412:52;499:9;486:23;518:31;543:5;518:31;:::i;766:548::-;878:4;907:2;936;925:9;918:21;968:6;962:13;1011:6;1006:2;995:9;991:18;984:34;1036:1;1046:140;1060:6;1057:1;1054:13;1046:140;;;1155:14;;;1151:23;;1145:30;1121:17;;;1140:2;1117:26;1110:66;1075:10;;1046:140;;;1050:3;1235:1;1230:2;1221:6;1210:9;1206:22;1202:31;1195:42;1305:2;1298;1294:7;1289:2;1281:6;1277:15;1273:29;1262:9;1258:45;1254:54;1246:62;;;;766:548;;;;:::o;1319:180::-;1378:6;1431:2;1419:9;1410:7;1406:23;1402:32;1399:52;;;1447:1;1444;1437:12;1399:52;-1:-1:-1;1470:23:149;;1319:180;-1:-1:-1;1319:180:149:o;1504:315::-;1572:6;1580;1633:2;1621:9;1612:7;1608:23;1604:32;1601:52;;;1649:1;1646;1639:12;1601:52;1688:9;1675:23;1707:31;1732:5;1707:31;:::i;:::-;1757:5;1809:2;1794:18;;;;1781:32;;-1:-1:-1;;;1504:315:149:o;2016:173::-;2083:20;;-1:-1:-1;;;;;;2132:32:149;;2122:43;;2112:71;;2179:1;2176;2169:12;2112:71;2016:173;;;:::o;2194:184::-;2252:6;2305:2;2293:9;2284:7;2280:23;2276:32;2273:52;;;2321:1;2318;2311:12;2273:52;2344:28;2362:9;2344:28;:::i;2383:156::-;2449:20;;2509:4;2498:16;;2488:27;;2478:55;;2529:1;2526;2519:12;2544:118;2630:5;2623:13;2616:21;2609:5;2606:32;2596:60;;2652:1;2649;2642:12;2667:383;2738:6;2746;2754;2807:2;2795:9;2786:7;2782:23;2778:32;2775:52;;;2823:1;2820;2813:12;2775:52;2846:27;2863:9;2846:27;:::i;:::-;2836:37;;2892;2925:2;2914:9;2910:18;2892:37;:::i;:::-;2882:47;;2979:2;2968:9;2964:18;2951:32;2992:28;3014:5;2992:28;:::i;:::-;3039:5;3029:15;;;2667:383;;;;;:::o;3055:456::-;3132:6;3140;3148;3201:2;3189:9;3180:7;3176:23;3172:32;3169:52;;;3217:1;3214;3207:12;3169:52;3256:9;3243:23;3275:31;3300:5;3275:31;:::i;:::-;3325:5;-1:-1:-1;3382:2:149;3367:18;;3354:32;3395:33;3354:32;3395:33;:::i;:::-;3055:456;;3447:7;;-1:-1:-1;;;3501:2:149;3486:18;;;;3473:32;;3055:456::o;3928:313::-;3992:6;4000;4053:2;4041:9;4032:7;4028:23;4024:32;4021:52;;;4069:1;4066;4059:12;4021:52;4092:28;4110:9;4092:28;:::i;:::-;4082:38;;4170:2;4159:9;4155:18;4142:32;4183:28;4205:5;4183:28;:::i;:::-;4230:5;4220:15;;;3928:313;;;;;:::o;4246:452::-;4318:6;4326;4334;4387:2;4375:9;4366:7;4362:23;4358:32;4355:52;;;4403:1;4400;4393:12;4355:52;4442:9;4429:23;4461:31;4486:5;4461:31;:::i;:::-;4511:5;-1:-1:-1;4535:36:149;4567:2;4552:18;;4535:36;:::i;4703:315::-;4771:6;4779;4832:2;4820:9;4811:7;4807:23;4803:32;4800:52;;;4848:1;4845;4838:12;4800:52;4884:9;4871:23;4861:33;;4944:2;4933:9;4929:18;4916:32;4957:31;4982:5;4957:31;:::i;5023:407::-;5110:6;5118;5171:2;5159:9;5150:7;5146:23;5142:32;5139:52;;;5187:1;5184;5177:12;5139:52;5226:9;5213:23;5245:31;5270:5;5245:31;:::i;:::-;5295:5;-1:-1:-1;5352:2:149;5337:18;;5324:32;5365:33;5324:32;5365:33;:::i;5914:456::-;5991:6;5999;6007;6060:2;6048:9;6039:7;6035:23;6031:32;6028:52;;;6076:1;6073;6066:12;6028:52;6112:9;6099:23;6089:33;;6172:2;6161:9;6157:18;6144:32;6185:31;6210:5;6185:31;:::i;:::-;6235:5;-1:-1:-1;6292:2:149;6277:18;;6264:32;6305:33;6264:32;6305:33;:::i;6375:460::-;6451:6;6459;6467;6520:2;6508:9;6499:7;6495:23;6491:32;6488:52;;;6536:1;6533;6526:12;6488:52;6575:9;6562:23;6594:31;6619:5;6594:31;:::i;:::-;6644:5;-1:-1:-1;6701:2:149;6686:18;;6673:32;6714:33;6673:32;6714:33;:::i;:::-;6766:7;-1:-1:-1;6792:37:149;6825:2;6810:18;;6792:37;:::i;:::-;6782:47;;6375:460;;;;;:::o;7067:734::-;7178:6;7186;7194;7202;7210;7218;7226;7279:3;7267:9;7258:7;7254:23;7250:33;7247:53;;;7296:1;7293;7286:12;7247:53;7335:9;7322:23;7354:31;7379:5;7354:31;:::i;:::-;7404:5;-1:-1:-1;7461:2:149;7446:18;;7433:32;7474:33;7433:32;7474:33;:::i;:::-;7526:7;-1:-1:-1;7580:2:149;7565:18;;7552:32;;-1:-1:-1;7631:2:149;7616:18;;7603:32;;-1:-1:-1;7654:37:149;7686:3;7671:19;;7654:37;:::i;:::-;7644:47;;7738:3;7727:9;7723:19;7710:33;7700:43;;7790:3;7779:9;7775:19;7762:33;7752:43;;7067:734;;;;;;;;;;:::o;8199:254::-;8264:6;8272;8325:2;8313:9;8304:7;8300:23;8296:32;8293:52;;;8341:1;8338;8331:12;8293:52;8364:27;8381:9;8364:27;:::i;:::-;8354:37;;8410;8443:2;8432:9;8428:18;8410:37;:::i;:::-;8400:47;;8199:254;;;;;:::o;8458:317::-;8524:6;8532;8585:2;8573:9;8564:7;8560:23;8556:32;8553:52;;;8601:1;8598;8591:12;8553:52;8640:9;8627:23;8659:31;8684:5;8659:31;:::i;:::-;8709:5;-1:-1:-1;8733:36:149;8765:2;8750:18;;8733:36;:::i;8780:184::-;8850:6;8903:2;8891:9;8882:7;8878:23;8874:32;8871:52;;;8919:1;8916;8909:12;8871:52;-1:-1:-1;8942:16:149;;8780:184;-1:-1:-1;8780:184:149:o;8969:127::-;9030:10;9025:3;9021:20;9018:1;9011:31;9061:4;9058:1;9051:15;9085:4;9082:1;9075:15;9101:125;9166:9;;;9187:10;;;9184:36;;;9200:18;;:::i;9231:380::-;9310:1;9306:12;;;;9353;;;9374:61;;9428:4;9420:6;9416:17;9406:27;;9374:61;9481:2;9473:6;9470:14;9450:18;9447:38;9444:161;;9527:10;9522:3;9518:20;9515:1;9508:31;9562:4;9559:1;9552:15;9590:4;9587:1;9580:15;9444:161;;9231:380;;;:::o;9616:336::-;9818:2;9800:21;;;9857:2;9837:18;;;9830:30;-1:-1:-1;;;9891:2:149;9876:18;;9869:42;9943:2;9928:18;;9616:336::o;9957:128::-;10024:9;;;10045:11;;;10042:37;;;10059:18;;:::i;10446:400::-;-1:-1:-1;;;;;10702:15:149;;;10684:34;;10754:15;;;;10749:2;10734:18;;10727:43;-1:-1:-1;;;;;;10806:33:149;;;10801:2;10786:18;;10779:61;10634:2;10619:18;;10446:400::o;10851:245::-;10918:6;10971:2;10959:9;10950:7;10946:23;10942:32;10939:52;;;10987:1;10984;10977:12;10939:52;11019:9;11013:16;11038:28;11060:5;11038:28;:::i;13321:1133::-;13451:3;13480:1;13513:6;13507:13;13543:3;13565:1;13593:9;13589:2;13585:18;13575:28;;13653:2;13642:9;13638:18;13675;13665:61;;13719:4;13711:6;13707:17;13697:27;;13665:61;13745:2;13793;13785:6;13782:14;13762:18;13759:38;13756:165;;-1:-1:-1;;;13820:33:149;;13876:4;13873:1;13866:15;13906:4;13827:3;13894:17;13756:165;13937:18;13964:133;;;;14111:1;14106:323;;;;13930:499;;13964:133;-1:-1:-1;;13997:24:149;;13985:37;;14070:14;;14063:22;14051:35;;14042:45;;;-1:-1:-1;13964:133:149;;14106:323;13268:1;13261:14;;;13305:4;13292:18;;14204:1;14218:165;14232:6;14229:1;14226:13;14218:165;;;14310:14;;14297:11;;;14290:35;14353:16;;;;14247:10;;14218:165;;;14222:3;;14412:6;14407:3;14403:16;14396:23;;13930:499;-1:-1:-1;14445:3:149;;13321:1133;-1:-1:-1;;;;;;;;13321:1133:149:o", "linkReferences": {}, "immutableReferences": { - "61772": [ + "13333": [ + { + "start": 2696, + "length": 32 + } + ], + "61847": [ { - "start": 719, + "start": 970, "length": 32 }, { - "start": 1202, + "start": 1787, "length": 32 }, { - "start": 2972, + "start": 5010, "length": 32 }, { - "start": 3163, + "start": 5370, "length": 32 }, { - "start": 3544, + "start": 5751, "length": 32 }, { - "start": 3696, + "start": 5903, "length": 32 }, { - "start": 4034, + "start": 6241, "length": 32 }, { - "start": 4356, + "start": 6563, "length": 32 } ], - "62275": [ + "62350": [ { - "start": 633, + "start": 886, "length": 32 } ], - "62289": [ + "62364": [ { - "start": 1901, + "start": 2847, "length": 32 } ], - "62291": [ + "62366": [ { - "start": 1949, + "start": 2895, "length": 32 } ] @@ -809,12 +1238,20 @@ "allowance(address,address)": "dd62ed3e", "approve(address,uint256)": "095ea7b3", "asset()": "38d52e0f", + "authority()": "bf7e214f", "balanceOf(address)": "70a08231", + "canCall(address,address,bytes4)": "b7009613", "convertToAssets(uint256)": "07a2d13a", "convertToShares(uint256)": "c6e6f592", "decimals()": "313ce567", "deposit(uint256,address)": "6e553f65", + "doesRoleHaveCapability(uint8,bytes4)": "e688747b", + "doesUserHaveRole(address,uint8)": "ea7ca276", "getRate()": "679aefce", + "getRolesWithCapability(bytes4)": "ed0d0efb", + "getTargetCustomAuthority(address)": "c53a3985", + "getUserRoles(address)": "06a36aee", + "isCapabilityPublic(bytes4)": "0bade8a4", "maxDeposit(address)": "402d267d", "maxMint(address)": "c63d75b6", "maxRedeem(address)": "d905777e", @@ -822,21 +1259,28 @@ "mint(uint256,address)": "94bf804d", "name()": "06fdde03", "nonces(address)": "7ecebe00", + "owner()": "8da5cb5b", "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf", "previewDeposit(uint256)": "ef8b30f7", "previewMint(uint256)": "b3d7f6b9", "previewRedeem(uint256)": "4cdad506", "previewWithdraw(uint256)": "0a28a477", "redeem(uint256,address,address)": "ba087652", + "setAuthority(address)": "7a9e5e4b", + "setPublicCapability(bytes4,bool)": "4b5159da", "setRate(uint256)": "34fcf437", + "setRoleCapability(uint8,bytes4,bool)": "0ea9b75b", + "setTargetCustomAuthority(address,address)": "728b952b", + "setUserRole(address,uint8,bool)": "67aff484", "symbol()": "95d89b41", "totalAssets()": "01e1d114", "totalSupply()": "18160ddd", "transfer(address,uint256)": "a9059cbb", "transferFrom(address,address,uint256)": "23b872dd", + "transferOwnership(address)": "f2fde38b", "withdraw(uint256,address,address)": "b460af94" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ERC20Mintable\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_initialRate\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"convertToShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_rate_\",\"type\":\"uint256\"}],\"name\":\"setRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"DELV\",\"custom:disclaimer\":\"The language used in this code is for coding convenience only, and is not intended to, and does not, have any particular legal or regulatory significance.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"MockERC4626\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deposit(uint256,address)\":{\"notice\":\"Overrides ///\"},\"setRate(uint256)\":{\"notice\":\"Mock ///\"}},\"notice\":\"This mock yield source will accrue interest at a specified rate Every stateful interaction will accrue interest, so the interest accrual will approximate continuous compounding as the contract is called more frequently.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockERC4626.sol\":\"MockERC4626\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@aave/=lib/aave-v3-core/contracts/\",\":aave-v3-core/=lib/aave-v3-core/\",\":create3-factory/=lib/yield-daddy/lib/create3-factory/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":yield-daddy/=lib/yield-daddy/\"]},\"sources\":{\"contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4642a027efffb3aa6cdc85e31796fb3b1bc4fff4316e6390874e6f4add37b86c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3720a6c1c427dcfcbdeeec15cbdb682115e44e0a9136af7e0ad9e5af2ea40672\",\"dweb:/ipfs/QmP4bmaHw8MfX9MQLhhgnVQ9U9BTQAR3e5cCCE9RcoeX7w\"]},\"contracts/src/interfaces/IHyperdrive.sol\":{\"keccak256\":\"0x3336dbc3128174594baa25c95f3be485aa61a77a06afbb75e2708987247a5bb5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e189558d4f78633d90ecdb3ff8d775109394a98cb18d19507642cb56c43dc1e\",\"dweb:/ipfs/QmZMVsor78To4nbXwLDBaZKD8m68PT53C9mxvR8iUkM5i5\"]},\"contracts/src/interfaces/IHyperdriveRead.sol\":{\"keccak256\":\"0x837939af4a9224c5f4ea564e9b33a5612442b7d7d50b7f8bb32be6bb3ce239b3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3bfebedcb31d2edf86a69f0dfbcc5aa7b96edc2d8197b4a4681a200cb6ffe993\",\"dweb:/ipfs/Qmeq4oAGxKv3mvRRWkqYBjfdozPkhi3MqBRFNnNkmAwCtt\"]},\"contracts/src/interfaces/IHyperdriveWrite.sol\":{\"keccak256\":\"0xe2ba8031ab98a81026010af00de9935b79ade6701dc486fd1c02d67f4eb81bf8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e6acf863128f355e6ad26130037797a08321054ac8e202274debf6730162467\",\"dweb:/ipfs/Qmbf6882o3a7mci1j4w2XJtUDfsJvECGF6Yz3PG8q4LQgk\"]},\"contracts/src/interfaces/IMultiToken.sol\":{\"keccak256\":\"0xe3d64871148bdae5a714107b8b1a55f39cd4ede601436d2777a165d20d768a1a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9ebc0bfda35e9b7299c43f0efff38012b8074fcca867b781c0cedeede10cf3d0\",\"dweb:/ipfs/QmbHRLezFhWavHakK5G26DB4ud5PueU6fNvZf3L3TwXnPb\"]},\"contracts/src/interfaces/IMultiTokenMetadata.sol\":{\"keccak256\":\"0xcdc60ba02194150741a78cb0c52c306f5f577c5c814c63e98a13d46c02d2d9cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8f5866cb2c8c4342dba88c0e4d78296fef0e170b18b3613c796c29dc31a5ca87\",\"dweb:/ipfs/QmZcoDTYhhYSB5ds3cNPJpdZTxrz6cF8M2vNVeuAcT8gw6\"]},\"contracts/src/interfaces/IMultiTokenRead.sol\":{\"keccak256\":\"0x2e55fa961123a8bb7284c8388af9bd1302a7153441ffe641804ea79021bdca05\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c7dc03bbab02976609dec59c201e5b57a2998d1c626cef58d7a9fa7c2b06b939\",\"dweb:/ipfs/QmSifWr9cVWaUEmyKpGFcgpKCYdoBYgWtQBLgemtwo4a7x\"]},\"contracts/src/interfaces/IMultiTokenWrite.sol\":{\"keccak256\":\"0xa5ba8812e06fb6d38e1872603c8b80321cfd2f96cecbe7b67b92cb33e93b3fc8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://73afa34919c7d457e925b4be83abb1b1ed2ed731a382ebffad95a3005c04bd5a\",\"dweb:/ipfs/QmauMxmgtYTS7RJQw1mS7Pwe5FUMDPHE2N1MBhFUjk6HPe\"]},\"contracts/src/libraries/FixedPointMath.sol\":{\"keccak256\":\"0x0108762fdecfae06d7b8d76bb52b1a5757669cc2a4e5f3ad701499295ed635bd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a94cdbab2bdbb0212597f70cebea86fcf69be0702f6d6fe76571ee43992d7d6b\",\"dweb:/ipfs/QmXyncXgKixNzP7rgqoCA2dzehjPTAsEbtAKZGW6CQADFE\"]},\"contracts/test/ERC20Mintable.sol\":{\"keccak256\":\"0x6b711c69de04598e0cb9579dd1dbd445793963a7c2999fee9db70b6ff3548612\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6ab89c2a83f6bbfa87055a302aeeee51f7693fb6715ef3bd484e996308789071\",\"dweb:/ipfs/QmXdHzQ6ymLpUaVQihD1PoCyiArioSLSfLaXMuevXmcngB\"]},\"contracts/test/MockERC4626.sol\":{\"keccak256\":\"0x2c9256fdeea7afef9ae475c239dddb84295689344d20134ac1d0f68dae363237\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c78dd4a1f667c8d873af1100c852ae8ebb6a50987599587a595a9a5757eea52a\",\"dweb:/ipfs/QmUTqPLg3t7Mfa844vYxMP2oDadCGtiWxP22BRhs69KyVQ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xb62681ccbf84aef125665cfdfc0bf13b532925b1a520d6c935913560f539a31b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://21dbc5b8aede7dee8f0e3bf296a58270f376f8e40d6f8becccde5b3cf34bc8df\",\"dweb:/ipfs/QmfHPWrtGiMNhTtLDYtqSd1eVd35Zqgd4PW9bR3i23oJgg\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol\":{\"keccak256\":\"0x0d19410453cda55960a818e02bd7c18952a5c8fe7a3036e81f0d599f34487a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c0f62d3d5bef22b5ca00cc3903e7de6152cb68d2d22401a463f373cda54c00f\",\"dweb:/ipfs/QmSfzjZux7LC7NW2f7rjCXTHeFMUCWERqDkhpCTBy7kxTe\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/solmate/src/mixins/ERC4626.sol\":{\"keccak256\":\"0xa404f6f45bd53f24a90cc5ffe95e16b52e3f2dfd88f0d7a1edcb35f815919a7b\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://9f01e32d713e05cc58c1563e9938a1c5e096b1da9f52c7ea8424f2317b94adc1\",\"dweb:/ipfs/QmVt5SsbA3kezM5pyovupN7iZLy6QVqY5qQRZKLFqxKJUs\"]},\"lib/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9\",\"dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi\"]},\"lib/solmate/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0xbadf3d708cf532b12f75f78a1d423135954b63774a6d4ba15914a551d348db8a\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://88ac8256bd520d1b8e6f9c4ac9e8777bffdc4a6c8afb1a848f596665779a55b4\",\"dweb:/ipfs/QmXx7X1dxe6f5VM91vgQ5BA4r2eF97GWDcQDrgHytcvfjU\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ERC20Mintable\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_initialRate\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isCompetitionMode_\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract Authority\",\"name\":\"newAuthority\",\"type\":\"address\"}],\"name\":\"AuthorityUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"functionSig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"PublicCapabilityUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"role\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"functionSig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"RoleCapabilityUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract Authority\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"TargetCustomAuthorityUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"role\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"UserRoleUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"authority\",\"outputs\":[{\"internalType\":\"contract Authority\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"functionSig\",\"type\":\"bytes4\"}],\"name\":\"canCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"convertToShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"role\",\"type\":\"uint8\"},{\"internalType\":\"bytes4\",\"name\":\"functionSig\",\"type\":\"bytes4\"}],\"name\":\"doesRoleHaveCapability\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"role\",\"type\":\"uint8\"}],\"name\":\"doesUserHaveRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"name\":\"getRolesWithCapability\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getTargetCustomAuthority\",\"outputs\":[{\"internalType\":\"contract Authority\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getUserRoles\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"name\":\"isCapabilityPublic\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract Authority\",\"name\":\"newAuthority\",\"type\":\"address\"}],\"name\":\"setAuthority\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"functionSig\",\"type\":\"bytes4\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setPublicCapability\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_rate_\",\"type\":\"uint256\"}],\"name\":\"setRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"role\",\"type\":\"uint8\"},{\"internalType\":\"bytes4\",\"name\":\"functionSig\",\"type\":\"bytes4\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setRoleCapability\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"contract Authority\",\"name\":\"customAuthority\",\"type\":\"address\"}],\"name\":\"setTargetCustomAuthority\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"role\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setUserRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"DELV\",\"custom:disclaimer\":\"The language used in this code is for coding convenience only, and is not intended to, and does not, have any particular legal or regulatory significance.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"MockERC4626\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deposit(uint256,address)\":{\"notice\":\"Overrides ///\"},\"setRate(uint256)\":{\"notice\":\"Mock ///\"}},\"notice\":\"This mock yield source will accrue interest at a specified rate Every stateful interaction will accrue interest, so the interest accrual will approximate continuous compounding as the contract is called more frequently.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockERC4626.sol\":\"MockERC4626\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@aave/=lib/aave-v3-core/contracts/\",\":aave-v3-core/=lib/aave-v3-core/\",\":create3-factory/=lib/yield-daddy/lib/create3-factory/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":yield-daddy/=lib/yield-daddy/\"]},\"sources\":{\"contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4642a027efffb3aa6cdc85e31796fb3b1bc4fff4316e6390874e6f4add37b86c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3720a6c1c427dcfcbdeeec15cbdb682115e44e0a9136af7e0ad9e5af2ea40672\",\"dweb:/ipfs/QmP4bmaHw8MfX9MQLhhgnVQ9U9BTQAR3e5cCCE9RcoeX7w\"]},\"contracts/src/interfaces/IHyperdrive.sol\":{\"keccak256\":\"0x3336dbc3128174594baa25c95f3be485aa61a77a06afbb75e2708987247a5bb5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e189558d4f78633d90ecdb3ff8d775109394a98cb18d19507642cb56c43dc1e\",\"dweb:/ipfs/QmZMVsor78To4nbXwLDBaZKD8m68PT53C9mxvR8iUkM5i5\"]},\"contracts/src/interfaces/IHyperdriveRead.sol\":{\"keccak256\":\"0x837939af4a9224c5f4ea564e9b33a5612442b7d7d50b7f8bb32be6bb3ce239b3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3bfebedcb31d2edf86a69f0dfbcc5aa7b96edc2d8197b4a4681a200cb6ffe993\",\"dweb:/ipfs/Qmeq4oAGxKv3mvRRWkqYBjfdozPkhi3MqBRFNnNkmAwCtt\"]},\"contracts/src/interfaces/IHyperdriveWrite.sol\":{\"keccak256\":\"0xe2ba8031ab98a81026010af00de9935b79ade6701dc486fd1c02d67f4eb81bf8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e6acf863128f355e6ad26130037797a08321054ac8e202274debf6730162467\",\"dweb:/ipfs/Qmbf6882o3a7mci1j4w2XJtUDfsJvECGF6Yz3PG8q4LQgk\"]},\"contracts/src/interfaces/IMultiToken.sol\":{\"keccak256\":\"0xe3d64871148bdae5a714107b8b1a55f39cd4ede601436d2777a165d20d768a1a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9ebc0bfda35e9b7299c43f0efff38012b8074fcca867b781c0cedeede10cf3d0\",\"dweb:/ipfs/QmbHRLezFhWavHakK5G26DB4ud5PueU6fNvZf3L3TwXnPb\"]},\"contracts/src/interfaces/IMultiTokenMetadata.sol\":{\"keccak256\":\"0xcdc60ba02194150741a78cb0c52c306f5f577c5c814c63e98a13d46c02d2d9cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8f5866cb2c8c4342dba88c0e4d78296fef0e170b18b3613c796c29dc31a5ca87\",\"dweb:/ipfs/QmZcoDTYhhYSB5ds3cNPJpdZTxrz6cF8M2vNVeuAcT8gw6\"]},\"contracts/src/interfaces/IMultiTokenRead.sol\":{\"keccak256\":\"0x2e55fa961123a8bb7284c8388af9bd1302a7153441ffe641804ea79021bdca05\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c7dc03bbab02976609dec59c201e5b57a2998d1c626cef58d7a9fa7c2b06b939\",\"dweb:/ipfs/QmSifWr9cVWaUEmyKpGFcgpKCYdoBYgWtQBLgemtwo4a7x\"]},\"contracts/src/interfaces/IMultiTokenWrite.sol\":{\"keccak256\":\"0xa5ba8812e06fb6d38e1872603c8b80321cfd2f96cecbe7b67b92cb33e93b3fc8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://73afa34919c7d457e925b4be83abb1b1ed2ed731a382ebffad95a3005c04bd5a\",\"dweb:/ipfs/QmauMxmgtYTS7RJQw1mS7Pwe5FUMDPHE2N1MBhFUjk6HPe\"]},\"contracts/src/libraries/FixedPointMath.sol\":{\"keccak256\":\"0x0108762fdecfae06d7b8d76bb52b1a5757669cc2a4e5f3ad701499295ed635bd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a94cdbab2bdbb0212597f70cebea86fcf69be0702f6d6fe76571ee43992d7d6b\",\"dweb:/ipfs/QmXyncXgKixNzP7rgqoCA2dzehjPTAsEbtAKZGW6CQADFE\"]},\"contracts/test/ERC20Mintable.sol\":{\"keccak256\":\"0x43aae73d059561cab83b67044a3602c1899f584fda312edc1640c575a6a04389\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8eac46f31959bc5111826cc457473b1b3f0257588607c98c7adbe376f9365f65\",\"dweb:/ipfs/QmQjWWRgve9Cc8Fs96QPekK1gVJNwSdqEjmMaYxy8mw7ui\"]},\"contracts/test/MockERC4626.sol\":{\"keccak256\":\"0xf4ceae2e2441dc6d1c10240c4287b745a298b6a49a65766d65fd4f2475135028\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://22410fb1c994f8533280da6f17aa7f28431d05af92d7c1dea1e4aaf1ac6b34d1\",\"dweb:/ipfs/QmU6iUyYn9obmDxVqkydXtYJUNuMHTtoef5EzoKgWpghXA\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/solmate/src/auth/Auth.sol\":{\"keccak256\":\"0x6e05238d59cd40172c04c1974eb8f1f6cef4fdc4b6553ef7844a7302b885f76c\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://a9743c21ca0470d9082e4cf00aea53786868c977d40775e6954463658ebb50ac\",\"dweb:/ipfs/QmPFdyrLHUX1zSipTC2tcJ58EzxxPp2TTvCZx9KCgqZn2W\"]},\"lib/solmate/src/auth/authorities/MultiRolesAuthority.sol\":{\"keccak256\":\"0x5544e61f98c0e80a8c4b9b691952122d3547ade0c0ad830ae6d5fd65f2d0dbe3\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://232d9054e5c087e0f416d995753051d352b9f24c5bd823be69a6061757fd1fef\",\"dweb:/ipfs/QmZTwcv8YycBRUWX3NLrxNyKud2SCGtfZJiCasTXpjKM4B\"]},\"lib/solmate/src/mixins/ERC4626.sol\":{\"keccak256\":\"0xa404f6f45bd53f24a90cc5ffe95e16b52e3f2dfd88f0d7a1edcb35f815919a7b\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://9f01e32d713e05cc58c1563e9938a1c5e096b1da9f52c7ea8424f2317b94adc1\",\"dweb:/ipfs/QmVt5SsbA3kezM5pyovupN7iZLy6QVqY5qQRZKLFqxKJUs\"]},\"lib/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9\",\"dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi\"]},\"lib/solmate/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0xbadf3d708cf532b12f75f78a1d423135954b63774a6d4ba15914a551d348db8a\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://88ac8256bd520d1b8e6f9c4ac9e8777bffdc4a6c8afb1a848f596665779a55b4\",\"dweb:/ipfs/QmXx7X1dxe6f5VM91vgQ5BA4r2eF97GWDcQDrgHytcvfjU\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.19+commit.7dd6d404" @@ -865,6 +1309,16 @@ "internalType": "uint256", "name": "_initialRate", "type": "uint256" + }, + { + "internalType": "address", + "name": "_admin", + "type": "address" + }, + { + "internalType": "bool", + "name": "_isCompetitionMode_", + "type": "bool" } ], "stateMutability": "nonpayable", @@ -895,6 +1349,25 @@ "name": "Approval", "anonymous": false }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address", + "indexed": true + }, + { + "internalType": "contract Authority", + "name": "newAuthority", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "AuthorityUpdated", + "anonymous": false + }, { "inputs": [ { @@ -926,6 +1399,88 @@ "name": "Deposit", "anonymous": false }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "newOwner", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "OwnershipTransferred", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4", + "indexed": true + }, + { + "internalType": "bool", + "name": "enabled", + "type": "bool", + "indexed": false + } + ], + "type": "event", + "name": "PublicCapabilityUpdated", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "role", + "type": "uint8", + "indexed": true + }, + { + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4", + "indexed": true + }, + { + "internalType": "bool", + "name": "enabled", + "type": "bool", + "indexed": false + } + ], + "type": "event", + "name": "RoleCapabilityUpdated", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address", + "indexed": true + }, + { + "internalType": "contract Authority", + "name": "authority", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "TargetCustomAuthorityUpdated", + "anonymous": false + }, { "inputs": [ { @@ -951,6 +1506,31 @@ "name": "Transfer", "anonymous": false }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address", + "indexed": true + }, + { + "internalType": "uint8", + "name": "role", + "type": "uint8", + "indexed": true + }, + { + "internalType": "bool", + "name": "enabled", + "type": "bool", + "indexed": false + } + ], + "type": "event", + "name": "UserRoleUpdated", + "anonymous": false + }, { "inputs": [ { @@ -1053,12 +1633,172 @@ "inputs": [], "stateMutability": "view", "type": "function", - "name": "asset", + "name": "asset", + "outputs": [ + { + "internalType": "contract ERC20", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "authority", + "outputs": [ + { + "internalType": "contract Authority", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function", + "name": "canCall", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "shares", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "convertToAssets", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "convertToShares", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_assets", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_receiver", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "deposit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "role", + "type": "uint8" + }, + { + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function", + "name": "doesRoleHaveCapability", "outputs": [ { - "internalType": "contract ERC20", + "internalType": "bool", "name": "", - "type": "address" + "type": "bool" } ] }, @@ -1066,32 +1806,31 @@ "inputs": [ { "internalType": "address", - "name": "", + "name": "user", "type": "address" + }, + { + "internalType": "uint8", + "name": "role", + "type": "uint8" } ], "stateMutability": "view", "type": "function", - "name": "balanceOf", + "name": "doesUserHaveRole", "outputs": [ { - "internalType": "uint256", + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ] }, { - "inputs": [ - { - "internalType": "uint256", - "name": "shares", - "type": "uint256" - } - ], + "inputs": [], "stateMutability": "view", "type": "function", - "name": "convertToAssets", + "name": "getRate", "outputs": [ { "internalType": "uint256", @@ -1103,69 +1842,76 @@ { "inputs": [ { - "internalType": "uint256", - "name": "assets", - "type": "uint256" + "internalType": "bytes4", + "name": "", + "type": "bytes4" } ], "stateMutability": "view", "type": "function", - "name": "convertToShares", + "name": "getRolesWithCapability", "outputs": [ { - "internalType": "uint256", + "internalType": "bytes32", "name": "", - "type": "uint256" + "type": "bytes32" } ] }, { - "inputs": [], + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], "stateMutability": "view", "type": "function", - "name": "decimals", + "name": "getTargetCustomAuthority", "outputs": [ { - "internalType": "uint8", + "internalType": "contract Authority", "name": "", - "type": "uint8" + "type": "address" } ] }, { "inputs": [ - { - "internalType": "uint256", - "name": "_assets", - "type": "uint256" - }, { "internalType": "address", - "name": "_receiver", + "name": "", "type": "address" } ], - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "name": "deposit", + "name": "getUserRoles", "outputs": [ { - "internalType": "uint256", + "internalType": "bytes32", "name": "", - "type": "uint256" + "type": "bytes32" } ] }, { - "inputs": [], + "inputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], "stateMutability": "view", "type": "function", - "name": "getRate", + "name": "isCapabilityPublic", "outputs": [ { - "internalType": "uint256", + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ] }, @@ -1301,6 +2047,19 @@ } ] }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ] + }, { "inputs": [ { @@ -1448,6 +2207,35 @@ } ] }, + { + "inputs": [ + { + "internalType": "contract Authority", + "name": "newAuthority", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setAuthority" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "enabled", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setPublicCapability" + }, { "inputs": [ { @@ -1460,6 +2248,67 @@ "type": "function", "name": "setRate" }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "role", + "type": "uint8" + }, + { + "internalType": "bytes4", + "name": "functionSig", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "enabled", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setRoleCapability" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "contract Authority", + "name": "customAuthority", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setTargetCustomAuthority" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint8", + "name": "role", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "enabled", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setUserRole" + }, { "inputs": [], "stateMutability": "view", @@ -1552,6 +2401,18 @@ } ] }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "transferOwnership" + }, { "inputs": [ { @@ -1699,29 +2560,21 @@ "license": "Apache-2.0" }, "contracts/test/ERC20Mintable.sol": { - "keccak256": "0x6b711c69de04598e0cb9579dd1dbd445793963a7c2999fee9db70b6ff3548612", + "keccak256": "0x43aae73d059561cab83b67044a3602c1899f584fda312edc1640c575a6a04389", "urls": [ - "bzz-raw://6ab89c2a83f6bbfa87055a302aeeee51f7693fb6715ef3bd484e996308789071", - "dweb:/ipfs/QmXdHzQ6ymLpUaVQihD1PoCyiArioSLSfLaXMuevXmcngB" + "bzz-raw://8eac46f31959bc5111826cc457473b1b3f0257588607c98c7adbe376f9365f65", + "dweb:/ipfs/QmQjWWRgve9Cc8Fs96QPekK1gVJNwSdqEjmMaYxy8mw7ui" ], "license": "Apache-2.0" }, "contracts/test/MockERC4626.sol": { - "keccak256": "0x2c9256fdeea7afef9ae475c239dddb84295689344d20134ac1d0f68dae363237", + "keccak256": "0xf4ceae2e2441dc6d1c10240c4287b745a298b6a49a65766d65fd4f2475135028", "urls": [ - "bzz-raw://c78dd4a1f667c8d873af1100c852ae8ebb6a50987599587a595a9a5757eea52a", - "dweb:/ipfs/QmUTqPLg3t7Mfa844vYxMP2oDadCGtiWxP22BRhs69KyVQ" + "bzz-raw://22410fb1c994f8533280da6f17aa7f28431d05af92d7c1dea1e4aaf1ac6b34d1", + "dweb:/ipfs/QmU6iUyYn9obmDxVqkydXtYJUNuMHTtoef5EzoKgWpghXA" ], "license": "Apache-2.0" }, - "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol": { - "keccak256": "0xb62681ccbf84aef125665cfdfc0bf13b532925b1a520d6c935913560f539a31b", - "urls": [ - "bzz-raw://21dbc5b8aede7dee8f0e3bf296a58270f376f8e40d6f8becccde5b3cf34bc8df", - "dweb:/ipfs/QmfHPWrtGiMNhTtLDYtqSd1eVd35Zqgd4PW9bR3i23oJgg" - ], - "license": "MIT" - }, "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { "keccak256": "0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0", "urls": [ @@ -1730,22 +2583,6 @@ ], "license": "MIT" }, - "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol": { - "keccak256": "0x0d19410453cda55960a818e02bd7c18952a5c8fe7a3036e81f0d599f34487a7b", - "urls": [ - "bzz-raw://4c0f62d3d5bef22b5ca00cc3903e7de6152cb68d2d22401a463f373cda54c00f", - "dweb:/ipfs/QmSfzjZux7LC7NW2f7rjCXTHeFMUCWERqDkhpCTBy7kxTe" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol": { - "keccak256": "0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca", - "urls": [ - "bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd", - "dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8" - ], - "license": "MIT" - }, "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol": { "keccak256": "0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb", "urls": [ @@ -1770,13 +2607,21 @@ ], "license": "MIT" }, - "lib/openzeppelin-contracts/contracts/utils/Context.sol": { - "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", + "lib/solmate/src/auth/Auth.sol": { + "keccak256": "0x6e05238d59cd40172c04c1974eb8f1f6cef4fdc4b6553ef7844a7302b885f76c", "urls": [ - "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", - "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" + "bzz-raw://a9743c21ca0470d9082e4cf00aea53786868c977d40775e6954463658ebb50ac", + "dweb:/ipfs/QmPFdyrLHUX1zSipTC2tcJ58EzxxPp2TTvCZx9KCgqZn2W" ], - "license": "MIT" + "license": "AGPL-3.0-only" + }, + "lib/solmate/src/auth/authorities/MultiRolesAuthority.sol": { + "keccak256": "0x5544e61f98c0e80a8c4b9b691952122d3547ade0c0ad830ae6d5fd65f2d0dbe3", + "urls": [ + "bzz-raw://232d9054e5c087e0f416d995753051d352b9f24c5bd823be69a6061757fd1fef", + "dweb:/ipfs/QmZTwcv8YycBRUWX3NLrxNyKud2SCGtfZJiCasTXpjKM4B" + ], + "license": "AGPL-3.0-only" }, "lib/solmate/src/mixins/ERC4626.sol": { "keccak256": "0xa404f6f45bd53f24a90cc5ffe95e16b52e3f2dfd88f0d7a1edcb35f815919a7b", @@ -1815,31 +2660,37 @@ }, "ast": { "absolutePath": "contracts/test/MockERC4626.sol", - "id": 13586, + "id": 13585, "exportedSymbols": { + "Authority": [ + 61499 + ], "ERC20": [ - 62638 + 62713 ], "ERC20Mintable": [ - 13230 + 13185 ], "ERC4626": [ - 62250 + 62325 ], "FixedPointMath": [ - 8453 + 8350 ], "MockERC4626": [ - 13585 + 13584 + ], + "MultiRolesAuthority": [ + 61804 ] }, "nodeType": "SourceUnit", - "src": "39:2906:43", + "src": "39:3569:40", "nodes": [ { - "id": 13352, + "id": 13307, "nodeType": "PragmaDirective", - "src": "39:23:43", + "src": "39:23:40", "nodes": [], "literals": [ "solidity", @@ -1848,24 +2699,76 @@ ] }, { - "id": 13354, + "id": 13309, + "nodeType": "ImportDirective", + "src": "64:50:40", + "nodes": [], + "absolutePath": "lib/solmate/src/auth/Auth.sol", + "file": "solmate/auth/Auth.sol", + "nameLocation": "-1:-1:-1", + "scope": 13585, + "sourceUnit": 61500, + "symbolAliases": [ + { + "foreign": { + "id": 13308, + "name": "Authority", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61499, + "src": "73:9:40", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 13311, + "nodeType": "ImportDirective", + "src": "115:87:40", + "nodes": [], + "absolutePath": "lib/solmate/src/auth/authorities/MultiRolesAuthority.sol", + "file": "solmate/auth/authorities/MultiRolesAuthority.sol", + "nameLocation": "-1:-1:-1", + "scope": 13585, + "sourceUnit": 61805, + "symbolAliases": [ + { + "foreign": { + "id": 13310, + "name": "MultiRolesAuthority", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61804, + "src": "124:19:40", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 13313, "nodeType": "ImportDirective", - "src": "64:49:43", + "src": "203:49:40", "nodes": [], "absolutePath": "lib/solmate/src/tokens/ERC20.sol", "file": "solmate/tokens/ERC20.sol", "nameLocation": "-1:-1:-1", - "scope": 13586, - "sourceUnit": 62639, + "scope": 13585, + "sourceUnit": 62714, "symbolAliases": [ { "foreign": { - "id": 13353, + "id": 13312, "name": "ERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62638, - "src": "73:5:43", + "referencedDeclaration": 62713, + "src": "212:5:40", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1874,24 +2777,24 @@ "unitAlias": "" }, { - "id": 13356, + "id": 13315, "nodeType": "ImportDirective", - "src": "114:53:43", + "src": "253:53:40", "nodes": [], "absolutePath": "lib/solmate/src/mixins/ERC4626.sol", "file": "solmate/mixins/ERC4626.sol", "nameLocation": "-1:-1:-1", - "scope": 13586, - "sourceUnit": 62251, + "scope": 13585, + "sourceUnit": 62326, "symbolAliases": [ { "foreign": { - "id": 13355, + "id": 13314, "name": "ERC4626", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62250, - "src": "123:7:43", + "referencedDeclaration": 62325, + "src": "262:7:40", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1900,24 +2803,24 @@ "unitAlias": "" }, { - "id": 13358, + "id": 13317, "nodeType": "ImportDirective", - "src": "168:69:43", + "src": "307:69:40", "nodes": [], "absolutePath": "contracts/src/libraries/FixedPointMath.sol", "file": "../src/libraries/FixedPointMath.sol", "nameLocation": "-1:-1:-1", - "scope": 13586, - "sourceUnit": 8454, + "scope": 13585, + "sourceUnit": 8351, "symbolAliases": [ { "foreign": { - "id": 13357, + "id": 13316, "name": "FixedPointMath", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8453, - "src": "177:14:43", + "referencedDeclaration": 8350, + "src": "316:14:40", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1926,24 +2829,24 @@ "unitAlias": "" }, { - "id": 13360, + "id": 13319, "nodeType": "ImportDirective", - "src": "238:52:43", + "src": "377:52:40", "nodes": [], "absolutePath": "contracts/test/ERC20Mintable.sol", "file": "./ERC20Mintable.sol", "nameLocation": "-1:-1:-1", - "scope": 13586, - "sourceUnit": 13231, + "scope": 13585, + "sourceUnit": 13186, "symbolAliases": [ { "foreign": { - "id": 13359, + "id": 13318, "name": "ERC20Mintable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13230, - "src": "247:13:43", + "referencedDeclaration": 13185, + "src": "386:13:40", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1952,31 +2855,31 @@ "unitAlias": "" }, { - "id": 13585, + "id": 13584, "nodeType": "ContractDefinition", - "src": "824:2120:43", + "src": "963:2644:40", "nodes": [ { - "id": 13366, + "id": 13327, "nodeType": "UsingForDirective", - "src": "862:33:43", + "src": "1022:33:40", "nodes": [], "global": false, "libraryName": { - "id": 13364, + "id": 13325, "name": "FixedPointMath", "nameLocations": [ - "868:14:43" + "1028:14:40" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 8453, - "src": "868:14:43" + "referencedDeclaration": 8350, + "src": "1028:14:40" }, "typeName": { - "id": 13365, + "id": 13326, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "887:7:43", + "src": "1047:7:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1984,15 +2887,15 @@ } }, { - "id": 13368, + "id": 13329, "nodeType": "VariableDeclaration", - "src": "901:22:43", + "src": "1061:22:40", "nodes": [], "constant": false, "mutability": "mutable", "name": "_rate", - "nameLocation": "918:5:43", - "scope": 13585, + "nameLocation": "1078:5:40", + "scope": 13584, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2000,10 +2903,10 @@ "typeString": "uint256" }, "typeName": { - "id": 13367, + "id": 13328, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "901:7:43", + "src": "1061:7:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2012,15 +2915,15 @@ "visibility": "internal" }, { - "id": 13370, + "id": 13331, "nodeType": "VariableDeclaration", - "src": "929:29:43", + "src": "1089:29:40", "nodes": [], "constant": false, "mutability": "mutable", "name": "_lastUpdated", - "nameLocation": "946:12:43", - "scope": 13585, + "nameLocation": "1106:12:40", + "scope": 13584, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2028,10 +2931,10 @@ "typeString": "uint256" }, "typeName": { - "id": 13369, + "id": 13330, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "929:7:43", + "src": "1089:7:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2040,30 +2943,58 @@ "visibility": "internal" }, { - "id": 13402, + "id": 13333, + "nodeType": "VariableDeclaration", + "src": "1125:42:40", + "nodes": [], + "constant": false, + "mutability": "immutable", + "name": "_isCompetitionMode", + "nameLocation": "1149:18:40", + "scope": 13584, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13332, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1125:4:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "id": 13382, "nodeType": "FunctionDefinition", - "src": "965:263:43", + "src": "1174:445:40", "nodes": [], "body": { - "id": 13401, + "id": 13381, "nodeType": "Block", - "src": "1151:77:43", + "src": "1492:127:40", "nodes": [], "statements": [ { "expression": { - "id": 13394, + "id": 13370, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 13392, + "id": 13368, "name": "_rate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13368, - "src": "1161:5:43", + "referencedDeclaration": 13329, + "src": "1502:5:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2072,41 +3003,41 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 13393, + "id": 13369, "name": "_initialRate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13379, - "src": "1169:12:43", + "referencedDeclaration": 13342, + "src": "1510:12:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1161:20:43", + "src": "1502:20:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 13395, + "id": 13371, "nodeType": "ExpressionStatement", - "src": "1161:20:43" + "src": "1502:20:40" }, { "expression": { - "id": 13399, + "id": 13375, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 13396, + "id": 13372, "name": "_lastUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13370, - "src": "1191:12:43", + "referencedDeclaration": 13331, + "src": "1532:12:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2116,40 +3047,83 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 13397, + "id": 13373, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "1206:5:43", + "src": "1547:5:40", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 13398, + "id": 13374, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1212:9:43", + "memberLocation": "1553:9:40", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "1206:15:43", + "src": "1547:15:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1191:30:43", + "src": "1532:30:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 13400, + "id": 13376, + "nodeType": "ExpressionStatement", + "src": "1532:30:40" + }, + { + "expression": { + "id": 13379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 13377, + "name": "_isCompetitionMode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13333, + "src": "1572:18:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 13378, + "name": "_isCompetitionMode_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13346, + "src": "1593:19:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1572:40:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13380, "nodeType": "ExpressionStatement", - "src": "1191:30:43" + "src": "1572:40:40" } ] }, @@ -2163,14 +3137,14 @@ { "arguments": [ { - "id": 13385, + "id": 13352, "name": "_asset", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13373, - "src": "1125:6:43", + "referencedDeclaration": 13336, + "src": "1400:6:40", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Mintable_$13230", + "typeIdentifier": "t_contract$_ERC20Mintable_$13185", "typeString": "contract ERC20Mintable" } } @@ -2178,30 +3152,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ERC20Mintable_$13230", + "typeIdentifier": "t_contract$_ERC20Mintable_$13185", "typeString": "contract ERC20Mintable" } ], - "id": 13384, + "id": 13351, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1117:7:43", + "src": "1392:7:40", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 13383, + "id": 13350, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1117:7:43", + "src": "1392:7:40", "typeDescriptions": {} } }, - "id": 13386, + "id": 13353, "isConstant": false, "isLValue": false, "isPure": false, @@ -2210,7 +3184,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1117:15:43", + "src": "1392:15:40", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2225,18 +3199,18 @@ "typeString": "address" } ], - "id": 13382, + "id": 13349, "name": "ERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62638, - "src": "1111:5:43", + "referencedDeclaration": 62713, + "src": "1386:5:40", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20_$62638_$", + "typeIdentifier": "t_type$_t_contract$_ERC20_$62713_$", "typeString": "type(contract ERC20)" } }, - "id": 13387, + "id": 13354, "isConstant": false, "isLValue": false, "isPure": false, @@ -2245,92 +3219,216 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1111:22:43", + "src": "1386:22:40", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$62638", + "typeIdentifier": "t_contract$_ERC20_$62713", "typeString": "contract ERC20" } }, { - "id": 13388, + "id": 13355, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13375, - "src": "1135:5:43", + "referencedDeclaration": 13338, + "src": "1410:5:40", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, { - "id": 13389, + "id": 13356, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13377, - "src": "1142:7:43", + "referencedDeclaration": 13340, + "src": "1417:7:40", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } } ], - "id": 13390, + "id": 13357, "kind": "baseConstructorSpecifier", "modifierName": { - "id": 13381, + "id": 13348, "name": "ERC4626", "nameLocations": [ - "1103:7:43" + "1378:7:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 62325, + "src": "1378:7:40" + }, + "nodeType": "ModifierInvocation", + "src": "1378:47:40" + }, + { + "arguments": [ + { + "id": 13359, + "name": "_admin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13344, + "src": "1454:6:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 13363, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1480:4:40", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MockERC4626_$13584", + "typeString": "contract MockERC4626" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MockERC4626_$13584", + "typeString": "contract MockERC4626" + } + ], + "id": 13362, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1472:7:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 13361, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1472:7:40", + "typeDescriptions": {} + } + }, + "id": 13364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1472:13:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13360, + "name": "Authority", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61499, + "src": "1462:9:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Authority_$61499_$", + "typeString": "type(contract Authority)" + } + }, + "id": 13365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1462:24:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_Authority_$61499", + "typeString": "contract Authority" + } + } + ], + "id": 13366, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 13358, + "name": "MultiRolesAuthority", + "nameLocations": [ + "1434:19:40" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 62250, - "src": "1103:7:43" + "referencedDeclaration": 61804, + "src": "1434:19:40" }, "nodeType": "ModifierInvocation", - "src": "1103:47:43" + "src": "1434:53:40" } ], "name": "", "nameLocation": "-1:-1:-1", "parameters": { - "id": 13380, + "id": 13347, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 13373, + "id": 13336, "mutability": "mutable", "name": "_asset", - "nameLocation": "1000:6:43", + "nameLocation": "1209:6:40", "nodeType": "VariableDeclaration", - "scope": 13402, - "src": "986:20:43", + "scope": 13382, + "src": "1195:20:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Mintable_$13230", + "typeIdentifier": "t_contract$_ERC20Mintable_$13185", "typeString": "contract ERC20Mintable" }, "typeName": { - "id": 13372, + "id": 13335, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 13371, + "id": 13334, "name": "ERC20Mintable", "nameLocations": [ - "986:13:43" + "1195:13:40" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 13230, - "src": "986:13:43" + "referencedDeclaration": 13185, + "src": "1195:13:40" }, - "referencedDeclaration": 13230, - "src": "986:13:43", + "referencedDeclaration": 13185, + "src": "1195:13:40", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Mintable_$13230", + "typeIdentifier": "t_contract$_ERC20Mintable_$13185", "typeString": "contract ERC20Mintable" } }, @@ -2338,13 +3436,13 @@ }, { "constant": false, - "id": 13375, + "id": 13338, "mutability": "mutable", "name": "_name", - "nameLocation": "1030:5:43", + "nameLocation": "1239:5:40", "nodeType": "VariableDeclaration", - "scope": 13402, - "src": "1016:19:43", + "scope": 13382, + "src": "1225:19:40", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2352,10 +3450,10 @@ "typeString": "string" }, "typeName": { - "id": 13374, + "id": 13337, "name": "string", "nodeType": "ElementaryTypeName", - "src": "1016:6:43", + "src": "1225:6:40", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -2365,13 +3463,13 @@ }, { "constant": false, - "id": 13377, + "id": 13340, "mutability": "mutable", "name": "_symbol", - "nameLocation": "1059:7:43", + "nameLocation": "1268:7:40", "nodeType": "VariableDeclaration", - "scope": 13402, - "src": "1045:21:43", + "scope": 13382, + "src": "1254:21:40", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2379,10 +3477,10 @@ "typeString": "string" }, "typeName": { - "id": 13376, + "id": 13339, "name": "string", "nodeType": "ElementaryTypeName", - "src": "1045:6:43", + "src": "1254:6:40", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -2392,13 +3490,13 @@ }, { "constant": false, - "id": 13379, + "id": 13342, "mutability": "mutable", "name": "_initialRate", - "nameLocation": "1084:12:43", + "nameLocation": "1293:12:40", "nodeType": "VariableDeclaration", - "scope": 13402, - "src": "1076:20:43", + "scope": 13382, + "src": "1285:20:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2406,40 +3504,308 @@ "typeString": "uint256" }, "typeName": { - "id": 13378, + "id": 13341, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1076:7:43", + "src": "1285:7:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" + }, + { + "constant": false, + "id": 13344, + "mutability": "mutable", + "name": "_admin", + "nameLocation": "1323:6:40", + "nodeType": "VariableDeclaration", + "scope": 13382, + "src": "1315:14:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13343, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1315:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13346, + "mutability": "mutable", + "name": "_isCompetitionMode_", + "nameLocation": "1344:19:40", + "nodeType": "VariableDeclaration", + "scope": 13382, + "src": "1339:24:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13345, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1339:4:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" } ], - "src": "976:126:43" + "src": "1185:184:40" }, "returnParameters": { - "id": 13391, + "id": 13367, "nodeType": "ParameterList", "parameters": [], - "src": "1151:0:43" + "src": "1492:0:40" }, - "scope": 13585, + "scope": 13584, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 13423, + "id": 13399, + "nodeType": "ModifierDefinition", + "src": "1625:236:40", + "nodes": [], + "body": { + "id": 13398, + "nodeType": "Block", + "src": "1666:195:40", + "nodes": [], + "statements": [ + { + "condition": { + "id": 13384, + "name": "_isCompetitionMode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13333, + "src": "1680:18:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13396, + "nodeType": "IfStatement", + "src": "1676:168:40", + "trueBody": { + "id": 13395, + "nodeType": "Block", + "src": "1700:144:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 13387, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1752:3:40", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 13388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1756:6:40", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "1752:10:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 13389, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1764:3:40", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 13390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1768:3:40", + "memberName": "sig", + "nodeType": "MemberAccess", + "src": "1764:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 13386, + "name": "isAuthorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61431, + "src": "1739:12:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (address,bytes4) view returns (bool)" + } + }, + "id": 13391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1739:33:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4d6f636b455243343632363a206e6f7420617574686f72697a6564", + "id": 13392, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1790:29:40", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a7626d0608fc151c96b381abf9f1ef1d92bb12f776fb43bcd63a3eefd31ed019", + "typeString": "literal_string \"MockERC4626: not authorized\"" + }, + "value": "MockERC4626: not authorized" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a7626d0608fc151c96b381abf9f1ef1d92bb12f776fb43bcd63a3eefd31ed019", + "typeString": "literal_string \"MockERC4626: not authorized\"" + } + ], + "id": 13385, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1714:7:40", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 13393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1714:119:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13394, + "nodeType": "ExpressionStatement", + "src": "1714:119:40" + } + ] + } + }, + { + "id": 13397, + "nodeType": "PlaceholderStatement", + "src": "1853:1:40" + } + ] + }, + "name": "requiresAuthDuringCompetition", + "nameLocation": "1634:29:40", + "parameters": { + "id": 13383, + "nodeType": "ParameterList", + "parameters": [], + "src": "1663:2:40" + }, + "virtual": false, + "visibility": "internal" + }, + { + "id": 13420, "nodeType": "FunctionDefinition", - "src": "1257:185:43", + "src": "1890:185:40", "nodes": [], "body": { - "id": 13422, + "id": 13419, "nodeType": "Block", - "src": "1366:76:43", + "src": "1999:76:40", "nodes": [], "statements": [ { @@ -2447,18 +3813,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 13413, + "id": 13410, "name": "_accrue", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13549, - "src": "1376:7:43", + "referencedDeclaration": 13548, + "src": "2009:7:40", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 13414, + "id": 13411, "isConstant": false, "isLValue": false, "isPure": false, @@ -2467,39 +3833,39 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1376:9:43", + "src": "2009:9:40", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 13415, + "id": 13412, "nodeType": "ExpressionStatement", - "src": "1376:9:43" + "src": "2009:9:40" }, { "expression": { "arguments": [ { - "id": 13418, + "id": 13415, "name": "_assets", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13405, - "src": "1416:7:43", + "referencedDeclaration": 13402, + "src": "2049:7:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 13419, + "id": 13416, "name": "_receiver", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13407, - "src": "1425:9:43", + "referencedDeclaration": 13404, + "src": "2058:9:40", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2518,33 +3884,33 @@ } ], "expression": { - "id": 13416, + "id": 13413, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, - "src": "1402:5:43", + "src": "2035:5:40", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_MockERC4626_$13585_$", + "typeIdentifier": "t_type$_t_super$_MockERC4626_$13584_$", "typeString": "type(contract super MockERC4626)" } }, - "id": 13417, + "id": 13414, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1408:7:43", + "memberLocation": "2041:7:40", "memberName": "deposit", "nodeType": "MemberAccess", - "referencedDeclaration": 61846, - "src": "1402:13:43", + "referencedDeclaration": 61921, + "src": "2035:13:40", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$_t_uint256_$", "typeString": "function (uint256,address) returns (uint256)" } }, - "id": 13420, + "id": 13417, "isConstant": false, "isLValue": false, "isPure": false, @@ -2553,27 +3919,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1402:33:43", + "src": "2035:33:40", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 13412, - "id": 13421, + "functionReturnParameters": 13409, + "id": 13418, "nodeType": "Return", - "src": "1395:40:43" + "src": "2028:40:40" } ] }, "baseFunctions": [ - 61846 + 61921 ], "documentation": { - "id": 13403, + "id": 13400, "nodeType": "StructuredDocumentation", - "src": "1234:18:43", + "src": "1867:18:40", "text": "Overrides ///" }, "functionSelector": "6e553f65", @@ -2581,26 +3947,26 @@ "kind": "function", "modifiers": [], "name": "deposit", - "nameLocation": "1266:7:43", + "nameLocation": "1899:7:40", "overrides": { - "id": 13409, + "id": 13406, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "1339:8:43" + "src": "1972:8:40" }, "parameters": { - "id": 13408, + "id": 13405, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 13405, + "id": 13402, "mutability": "mutable", "name": "_assets", - "nameLocation": "1291:7:43", + "nameLocation": "1924:7:40", "nodeType": "VariableDeclaration", - "scope": 13423, - "src": "1283:15:43", + "scope": 13420, + "src": "1916:15:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2608,10 +3974,10 @@ "typeString": "uint256" }, "typeName": { - "id": 13404, + "id": 13401, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1283:7:43", + "src": "1916:7:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2621,13 +3987,13 @@ }, { "constant": false, - "id": 13407, + "id": 13404, "mutability": "mutable", "name": "_receiver", - "nameLocation": "1316:9:43", + "nameLocation": "1949:9:40", "nodeType": "VariableDeclaration", - "scope": 13423, - "src": "1308:17:43", + "scope": 13420, + "src": "1941:17:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2635,10 +4001,10 @@ "typeString": "address" }, "typeName": { - "id": 13406, + "id": 13403, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1308:7:43", + "src": "1941:7:40", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2648,21 +4014,21 @@ "visibility": "internal" } ], - "src": "1273:58:43" + "src": "1906:58:40" }, "returnParameters": { - "id": 13412, + "id": 13409, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 13411, + "id": 13408, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 13423, - "src": "1357:7:43", + "scope": 13420, + "src": "1990:7:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2670,10 +4036,10 @@ "typeString": "uint256" }, "typeName": { - "id": 13410, + "id": 13407, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1357:7:43", + "src": "1990:7:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2682,22 +4048,22 @@ "visibility": "internal" } ], - "src": "1356:9:43" + "src": "1989:9:40" }, - "scope": 13585, + "scope": 13584, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 13443, + "id": 13440, "nodeType": "FunctionDefinition", - "src": "1448:179:43", + "src": "2081:179:40", "nodes": [], "body": { - "id": 13442, + "id": 13439, "nodeType": "Block", - "src": "1554:73:43", + "src": "2187:73:40", "nodes": [], "statements": [ { @@ -2705,18 +4071,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 13433, + "id": 13430, "name": "_accrue", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13549, - "src": "1564:7:43", + "referencedDeclaration": 13548, + "src": "2197:7:40", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 13434, + "id": 13431, "isConstant": false, "isLValue": false, "isPure": false, @@ -2725,39 +4091,39 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1564:9:43", + "src": "2197:9:40", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 13435, + "id": 13432, "nodeType": "ExpressionStatement", - "src": "1564:9:43" + "src": "2197:9:40" }, { "expression": { "arguments": [ { - "id": 13438, + "id": 13435, "name": "_shares", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13425, - "src": "1601:7:43", + "referencedDeclaration": 13422, + "src": "2234:7:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 13439, + "id": 13436, "name": "_receiver", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13427, - "src": "1610:9:43", + "referencedDeclaration": 13424, + "src": "2243:9:40", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2776,33 +4142,33 @@ } ], "expression": { - "id": 13436, + "id": 13433, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, - "src": "1590:5:43", + "src": "2223:5:40", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_MockERC4626_$13585_$", + "typeIdentifier": "t_type$_t_super$_MockERC4626_$13584_$", "typeString": "type(contract super MockERC4626)" } }, - "id": 13437, + "id": 13434, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1596:4:43", + "memberLocation": "2229:4:40", "memberName": "mint", "nodeType": "MemberAccess", - "referencedDeclaration": 61892, - "src": "1590:10:43", + "referencedDeclaration": 61967, + "src": "2223:10:40", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$_t_uint256_$", "typeString": "function (uint256,address) returns (uint256)" } }, - "id": 13440, + "id": 13437, "isConstant": false, "isLValue": false, "isPure": false, @@ -2811,48 +4177,48 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1590:30:43", + "src": "2223:30:40", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 13432, - "id": 13441, + "functionReturnParameters": 13429, + "id": 13438, "nodeType": "Return", - "src": "1583:37:43" + "src": "2216:37:40" } ] }, "baseFunctions": [ - 61892 + 61967 ], "functionSelector": "94bf804d", "implemented": true, "kind": "function", "modifiers": [], "name": "mint", - "nameLocation": "1457:4:43", + "nameLocation": "2090:4:40", "overrides": { - "id": 13429, + "id": 13426, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "1527:8:43" + "src": "2160:8:40" }, "parameters": { - "id": 13428, + "id": 13425, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 13425, + "id": 13422, "mutability": "mutable", "name": "_shares", - "nameLocation": "1479:7:43", + "nameLocation": "2112:7:40", "nodeType": "VariableDeclaration", - "scope": 13443, - "src": "1471:15:43", + "scope": 13440, + "src": "2104:15:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2860,10 +4226,10 @@ "typeString": "uint256" }, "typeName": { - "id": 13424, + "id": 13421, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1471:7:43", + "src": "2104:7:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2873,13 +4239,13 @@ }, { "constant": false, - "id": 13427, + "id": 13424, "mutability": "mutable", "name": "_receiver", - "nameLocation": "1504:9:43", + "nameLocation": "2137:9:40", "nodeType": "VariableDeclaration", - "scope": 13443, - "src": "1496:17:43", + "scope": 13440, + "src": "2129:17:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2887,10 +4253,10 @@ "typeString": "address" }, "typeName": { - "id": 13426, + "id": 13423, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1496:7:43", + "src": "2129:7:40", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2900,21 +4266,21 @@ "visibility": "internal" } ], - "src": "1461:58:43" + "src": "2094:58:40" }, "returnParameters": { - "id": 13432, + "id": 13429, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 13431, + "id": 13428, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 13443, - "src": "1545:7:43", + "scope": 13440, + "src": "2178:7:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2922,10 +4288,10 @@ "typeString": "uint256" }, "typeName": { - "id": 13430, + "id": 13427, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1545:7:43", + "src": "2178:7:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2934,22 +4300,22 @@ "visibility": "internal" } ], - "src": "1544:9:43" + "src": "2177:9:40" }, - "scope": 13585, + "scope": 13584, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 13466, + "id": 13463, "nodeType": "FunctionDefinition", - "src": "1633:219:43", + "src": "2266:219:40", "nodes": [], "body": { - "id": 13465, + "id": 13462, "nodeType": "Block", - "src": "1767:85:43", + "src": "2400:85:40", "nodes": [], "statements": [ { @@ -2957,18 +4323,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 13455, + "id": 13452, "name": "_accrue", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13549, - "src": "1777:7:43", + "referencedDeclaration": 13548, + "src": "2410:7:40", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 13456, + "id": 13453, "isConstant": false, "isLValue": false, "isPure": false, @@ -2977,51 +4343,51 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1777:9:43", + "src": "2410:9:40", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 13457, + "id": 13454, "nodeType": "ExpressionStatement", - "src": "1777:9:43" + "src": "2410:9:40" }, { "expression": { "arguments": [ { - "id": 13460, + "id": 13457, "name": "_assets", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13445, - "src": "1818:7:43", + "referencedDeclaration": 13442, + "src": "2451:7:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 13461, + "id": 13458, "name": "_receiver", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13447, - "src": "1827:9:43", + "referencedDeclaration": 13444, + "src": "2460:9:40", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 13462, + "id": 13459, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13449, - "src": "1838:6:43", + "referencedDeclaration": 13446, + "src": "2471:6:40", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3044,33 +4410,33 @@ } ], "expression": { - "id": 13458, + "id": 13455, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, - "src": "1803:5:43", + "src": "2436:5:40", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_MockERC4626_$13585_$", + "typeIdentifier": "t_type$_t_super$_MockERC4626_$13584_$", "typeString": "type(contract super MockERC4626)" } }, - "id": 13459, + "id": 13456, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1809:8:43", + "memberLocation": "2442:8:40", "memberName": "withdraw", "nodeType": "MemberAccess", - "referencedDeclaration": 61970, - "src": "1803:14:43", + "referencedDeclaration": 62045, + "src": "2436:14:40", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (uint256,address,address) returns (uint256)" } }, - "id": 13463, + "id": 13460, "isConstant": false, "isLValue": false, "isPure": false, @@ -3079,48 +4445,48 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1803:42:43", + "src": "2436:42:40", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 13454, - "id": 13464, + "functionReturnParameters": 13451, + "id": 13461, "nodeType": "Return", - "src": "1796:49:43" + "src": "2429:49:40" } ] }, "baseFunctions": [ - 61970 + 62045 ], "functionSelector": "b460af94", "implemented": true, "kind": "function", "modifiers": [], "name": "withdraw", - "nameLocation": "1642:8:43", + "nameLocation": "2275:8:40", "overrides": { - "id": 13451, + "id": 13448, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "1740:8:43" + "src": "2373:8:40" }, "parameters": { - "id": 13450, + "id": 13447, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 13445, + "id": 13442, "mutability": "mutable", "name": "_assets", - "nameLocation": "1668:7:43", + "nameLocation": "2301:7:40", "nodeType": "VariableDeclaration", - "scope": 13466, - "src": "1660:15:43", + "scope": 13463, + "src": "2293:15:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3128,10 +4494,10 @@ "typeString": "uint256" }, "typeName": { - "id": 13444, + "id": 13441, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1660:7:43", + "src": "2293:7:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3141,13 +4507,13 @@ }, { "constant": false, - "id": 13447, + "id": 13444, "mutability": "mutable", "name": "_receiver", - "nameLocation": "1693:9:43", + "nameLocation": "2326:9:40", "nodeType": "VariableDeclaration", - "scope": 13466, - "src": "1685:17:43", + "scope": 13463, + "src": "2318:17:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3155,10 +4521,10 @@ "typeString": "address" }, "typeName": { - "id": 13446, + "id": 13443, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1685:7:43", + "src": "2318:7:40", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3169,13 +4535,13 @@ }, { "constant": false, - "id": 13449, + "id": 13446, "mutability": "mutable", "name": "_owner", - "nameLocation": "1720:6:43", + "nameLocation": "2353:6:40", "nodeType": "VariableDeclaration", - "scope": 13466, - "src": "1712:14:43", + "scope": 13463, + "src": "2345:14:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3183,10 +4549,10 @@ "typeString": "address" }, "typeName": { - "id": 13448, + "id": 13445, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1712:7:43", + "src": "2345:7:40", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3196,21 +4562,21 @@ "visibility": "internal" } ], - "src": "1650:82:43" + "src": "2283:82:40" }, "returnParameters": { - "id": 13454, + "id": 13451, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 13453, + "id": 13450, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 13466, - "src": "1758:7:43", + "scope": 13463, + "src": "2391:7:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3218,10 +4584,10 @@ "typeString": "uint256" }, "typeName": { - "id": 13452, + "id": 13449, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1758:7:43", + "src": "2391:7:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3230,22 +4596,22 @@ "visibility": "internal" } ], - "src": "1757:9:43" + "src": "2390:9:40" }, - "scope": 13585, + "scope": 13584, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 13489, + "id": 13486, "nodeType": "FunctionDefinition", - "src": "1858:215:43", + "src": "2491:215:40", "nodes": [], "body": { - "id": 13488, + "id": 13485, "nodeType": "Block", - "src": "1990:83:43", + "src": "2623:83:40", "nodes": [], "statements": [ { @@ -3253,18 +4619,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 13478, + "id": 13475, "name": "_accrue", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13549, - "src": "2000:7:43", + "referencedDeclaration": 13548, + "src": "2633:7:40", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 13479, + "id": 13476, "isConstant": false, "isLValue": false, "isPure": false, @@ -3273,51 +4639,51 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2000:9:43", + "src": "2633:9:40", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 13480, + "id": 13477, "nodeType": "ExpressionStatement", - "src": "2000:9:43" + "src": "2633:9:40" }, { "expression": { "arguments": [ { - "id": 13483, + "id": 13480, "name": "_shares", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13468, - "src": "2039:7:43", + "referencedDeclaration": 13465, + "src": "2672:7:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 13484, + "id": 13481, "name": "_receiver", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13470, - "src": "2048:9:43", + "referencedDeclaration": 13467, + "src": "2681:9:40", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 13485, + "id": 13482, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13472, - "src": "2059:6:43", + "referencedDeclaration": 13469, + "src": "2692:6:40", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3340,33 +4706,33 @@ } ], "expression": { - "id": 13481, + "id": 13478, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, - "src": "2026:5:43", + "src": "2659:5:40", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_MockERC4626_$13585_$", + "typeIdentifier": "t_type$_t_super$_MockERC4626_$13584_$", "typeString": "type(contract super MockERC4626)" } }, - "id": 13482, + "id": 13479, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2032:6:43", + "memberLocation": "2665:6:40", "memberName": "redeem", "nodeType": "MemberAccess", - "referencedDeclaration": 62054, - "src": "2026:12:43", + "referencedDeclaration": 62129, + "src": "2659:12:40", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (uint256,address,address) returns (uint256)" } }, - "id": 13486, + "id": 13483, "isConstant": false, "isLValue": false, "isPure": false, @@ -3375,48 +4741,48 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2026:40:43", + "src": "2659:40:40", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 13477, - "id": 13487, + "functionReturnParameters": 13474, + "id": 13484, "nodeType": "Return", - "src": "2019:47:43" + "src": "2652:47:40" } ] }, "baseFunctions": [ - 62054 + 62129 ], "functionSelector": "ba087652", "implemented": true, "kind": "function", "modifiers": [], "name": "redeem", - "nameLocation": "1867:6:43", + "nameLocation": "2500:6:40", "overrides": { - "id": 13474, + "id": 13471, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "1963:8:43" + "src": "2596:8:40" }, "parameters": { - "id": 13473, + "id": 13470, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 13468, + "id": 13465, "mutability": "mutable", "name": "_shares", - "nameLocation": "1891:7:43", + "nameLocation": "2524:7:40", "nodeType": "VariableDeclaration", - "scope": 13489, - "src": "1883:15:43", + "scope": 13486, + "src": "2516:15:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3424,10 +4790,10 @@ "typeString": "uint256" }, "typeName": { - "id": 13467, + "id": 13464, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1883:7:43", + "src": "2516:7:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3437,13 +4803,13 @@ }, { "constant": false, - "id": 13470, + "id": 13467, "mutability": "mutable", "name": "_receiver", - "nameLocation": "1916:9:43", + "nameLocation": "2549:9:40", "nodeType": "VariableDeclaration", - "scope": 13489, - "src": "1908:17:43", + "scope": 13486, + "src": "2541:17:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3451,10 +4817,10 @@ "typeString": "address" }, "typeName": { - "id": 13469, + "id": 13466, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1908:7:43", + "src": "2541:7:40", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3465,13 +4831,13 @@ }, { "constant": false, - "id": 13472, + "id": 13469, "mutability": "mutable", "name": "_owner", - "nameLocation": "1943:6:43", + "nameLocation": "2576:6:40", "nodeType": "VariableDeclaration", - "scope": 13489, - "src": "1935:14:43", + "scope": 13486, + "src": "2568:14:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3479,10 +4845,10 @@ "typeString": "address" }, "typeName": { - "id": 13471, + "id": 13468, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1935:7:43", + "src": "2568:7:40", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3492,21 +4858,21 @@ "visibility": "internal" } ], - "src": "1873:82:43" + "src": "2506:82:40" }, "returnParameters": { - "id": 13477, + "id": 13474, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 13476, + "id": 13473, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 13489, - "src": "1981:7:43", + "scope": 13486, + "src": "2614:7:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3514,10 +4880,10 @@ "typeString": "uint256" }, "typeName": { - "id": 13475, + "id": 13472, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1981:7:43", + "src": "2614:7:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3526,22 +4892,22 @@ "visibility": "internal" } ], - "src": "1980:9:43" + "src": "2613:9:40" }, - "scope": 13585, + "scope": 13584, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 13507, + "id": 13504, "nodeType": "FunctionDefinition", - "src": "2079:140:43", + "src": "2712:140:40", "nodes": [], "body": { - "id": 13506, + "id": 13503, "nodeType": "Block", - "src": "2141:78:43", + "src": "2774:78:40", "nodes": [], "statements": [ { @@ -3550,7 +4916,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 13504, + "id": 13501, "isConstant": false, "isLValue": false, "isPure": false, @@ -3560,14 +4926,14 @@ { "arguments": [ { - "id": 13499, + "id": 13496, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, - "src": "2182:4:43", + "src": "2815:4:40", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC4626_$13585", + "typeIdentifier": "t_contract$_MockERC4626_$13584", "typeString": "contract MockERC4626" } } @@ -3575,30 +4941,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_MockERC4626_$13585", + "typeIdentifier": "t_contract$_MockERC4626_$13584", "typeString": "contract MockERC4626" } ], - "id": 13498, + "id": 13495, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2174:7:43", + "src": "2807:7:40", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 13497, + "id": 13494, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2174:7:43", + "src": "2807:7:40", "typeDescriptions": {} } }, - "id": 13500, + "id": 13497, "isConstant": false, "isLValue": false, "isPure": false, @@ -3607,7 +4973,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2174:13:43", + "src": "2807:13:40", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3623,33 +4989,33 @@ } ], "expression": { - "id": 13495, + "id": 13492, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61772, - "src": "2158:5:43", + "referencedDeclaration": 61847, + "src": "2791:5:40", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$62638", + "typeIdentifier": "t_contract$_ERC20_$62713", "typeString": "contract ERC20" } }, - "id": 13496, + "id": 13493, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2164:9:43", + "memberLocation": "2797:9:40", "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 62281, - "src": "2158:15:43", + "referencedDeclaration": 62356, + "src": "2791:15:40", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 13501, + "id": 13498, "isConstant": false, "isLValue": false, "isPure": false, @@ -3658,7 +5024,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2158:30:43", + "src": "2791:30:40", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3671,18 +5037,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 13502, + "id": 13499, "name": "_getAccruedInterest", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13584, - "src": "2191:19:43", + "referencedDeclaration": 13583, + "src": "2824:19:40", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 13503, + "id": 13500, "isConstant": false, "isLValue": false, "isPure": false, @@ -3691,60 +5057,60 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2191:21:43", + "src": "2824:21:40", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2158:54:43", + "src": "2791:54:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 13494, - "id": 13505, + "functionReturnParameters": 13491, + "id": 13502, "nodeType": "Return", - "src": "2151:61:43" + "src": "2784:61:40" } ] }, "baseFunctions": [ - 62059 + 62134 ], "functionSelector": "01e1d114", "implemented": true, "kind": "function", "modifiers": [], "name": "totalAssets", - "nameLocation": "2088:11:43", + "nameLocation": "2721:11:40", "overrides": { - "id": 13491, + "id": 13488, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "2114:8:43" + "src": "2747:8:40" }, "parameters": { - "id": 13490, + "id": 13487, "nodeType": "ParameterList", "parameters": [], - "src": "2099:2:43" + "src": "2732:2:40" }, "returnParameters": { - "id": 13494, + "id": 13491, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 13493, + "id": 13490, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 13507, - "src": "2132:7:43", + "scope": 13504, + "src": "2765:7:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3752,10 +5118,10 @@ "typeString": "uint256" }, "typeName": { - "id": 13492, + "id": 13489, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2132:7:43", + "src": "2765:7:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3764,22 +5130,22 @@ "visibility": "internal" } ], - "src": "2131:9:43" + "src": "2764:9:40" }, - "scope": 13585, + "scope": 13584, "stateMutability": "view", "virtual": false, "visibility": "public" }, { - "id": 13521, + "id": 13520, "nodeType": "FunctionDefinition", - "src": "2243:92:43", + "src": "2876:122:40", "nodes": [], "body": { - "id": 13520, + "id": 13519, "nodeType": "Block", - "src": "2285:50:43", + "src": "2948:50:40", "nodes": [], "statements": [ { @@ -3787,18 +5153,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 13513, + "id": 13512, "name": "_accrue", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13549, - "src": "2295:7:43", + "referencedDeclaration": 13548, + "src": "2958:7:40", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 13514, + "id": 13513, "isConstant": false, "isLValue": false, "isPure": false, @@ -3807,31 +5173,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2295:9:43", + "src": "2958:9:40", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 13515, + "id": 13514, "nodeType": "ExpressionStatement", - "src": "2295:9:43" + "src": "2958:9:40" }, { "expression": { - "id": 13518, + "id": 13517, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 13516, + "id": 13515, "name": "_rate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13368, - "src": "2314:5:43", + "referencedDeclaration": 13329, + "src": "2977:5:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3840,54 +5206,71 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 13517, + "id": 13516, "name": "_rate_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13510, - "src": "2322:6:43", + "referencedDeclaration": 13507, + "src": "2985:6:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2314:14:43", + "src": "2977:14:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 13519, + "id": 13518, "nodeType": "ExpressionStatement", - "src": "2314:14:43" + "src": "2977:14:40" } ] }, "documentation": { - "id": 13508, + "id": 13505, "nodeType": "StructuredDocumentation", - "src": "2225:13:43", + "src": "2858:13:40", "text": "Mock ///" }, "functionSelector": "34fcf437", "implemented": true, "kind": "function", - "modifiers": [], + "modifiers": [ + { + "id": 13510, + "kind": "modifierInvocation", + "modifierName": { + "id": 13509, + "name": "requiresAuthDuringCompetition", + "nameLocations": [ + "2918:29:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13399, + "src": "2918:29:40" + }, + "nodeType": "ModifierInvocation", + "src": "2918:29:40" + } + ], "name": "setRate", - "nameLocation": "2252:7:43", + "nameLocation": "2885:7:40", "parameters": { - "id": 13511, + "id": 13508, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 13510, + "id": 13507, "mutability": "mutable", "name": "_rate_", - "nameLocation": "2268:6:43", + "nameLocation": "2901:6:40", "nodeType": "VariableDeclaration", - "scope": 13521, - "src": "2260:14:43", + "scope": 13520, + "src": "2893:14:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3895,10 +5278,10 @@ "typeString": "uint256" }, "typeName": { - "id": 13509, + "id": 13506, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2260:7:43", + "src": "2893:7:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3907,47 +5290,47 @@ "visibility": "internal" } ], - "src": "2259:16:43" + "src": "2892:16:40" }, "returnParameters": { - "id": 13512, + "id": 13511, "nodeType": "ParameterList", "parameters": [], - "src": "2285:0:43" + "src": "2948:0:40" }, - "scope": 13585, + "scope": 13584, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 13529, + "id": 13528, "nodeType": "FunctionDefinition", - "src": "2341:80:43", + "src": "3004:80:40", "nodes": [], "body": { - "id": 13528, + "id": 13527, "nodeType": "Block", - "src": "2392:29:43", + "src": "3055:29:40", "nodes": [], "statements": [ { "expression": { - "id": 13526, + "id": 13525, "name": "_rate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13368, - "src": "2409:5:43", + "referencedDeclaration": 13329, + "src": "3072:5:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 13525, - "id": 13527, + "functionReturnParameters": 13524, + "id": 13526, "nodeType": "Return", - "src": "2402:12:43" + "src": "3065:12:40" } ] }, @@ -3956,26 +5339,26 @@ "kind": "function", "modifiers": [], "name": "getRate", - "nameLocation": "2350:7:43", + "nameLocation": "3013:7:40", "parameters": { - "id": 13522, + "id": 13521, "nodeType": "ParameterList", "parameters": [], - "src": "2357:2:43" + "src": "3020:2:40" }, "returnParameters": { - "id": 13525, + "id": 13524, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 13524, + "id": 13523, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 13529, - "src": "2383:7:43", + "scope": 13528, + "src": "3046:7:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3983,10 +5366,10 @@ "typeString": "uint256" }, "typeName": { - "id": 13523, + "id": 13522, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2383:7:43", + "src": "3046:7:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3995,22 +5378,22 @@ "visibility": "internal" } ], - "src": "2382:9:43" + "src": "3045:9:40" }, - "scope": 13585, + "scope": 13584, "stateMutability": "view", "virtual": false, "visibility": "external" }, { - "id": 13549, + "id": 13548, "nodeType": "FunctionDefinition", - "src": "2427:142:43", + "src": "3090:142:40", "nodes": [], "body": { - "id": 13548, + "id": 13547, "nodeType": "Block", - "src": "2455:114:43", + "src": "3118:114:40", "nodes": [], "statements": [ { @@ -4020,18 +5403,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 13539, + "id": 13538, "name": "_getAccruedInterest", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13584, - "src": "2500:19:43", + "referencedDeclaration": 13583, + "src": "3163:19:40", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 13540, + "id": 13539, "isConstant": false, "isLValue": false, "isPure": false, @@ -4040,7 +5423,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2500:21:43", + "src": "3163:21:40", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4060,14 +5443,14 @@ { "arguments": [ { - "id": 13535, + "id": 13534, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61772, - "src": "2487:5:43", + "referencedDeclaration": 61847, + "src": "3150:5:40", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$62638", + "typeIdentifier": "t_contract$_ERC20_$62713", "typeString": "contract ERC20" } } @@ -4075,30 +5458,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ERC20_$62638", + "typeIdentifier": "t_contract$_ERC20_$62713", "typeString": "contract ERC20" } ], - "id": 13534, + "id": 13533, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2479:7:43", + "src": "3142:7:40", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 13533, + "id": 13532, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2479:7:43", + "src": "3142:7:40", "typeDescriptions": {} } }, - "id": 13536, + "id": 13535, "isConstant": false, "isLValue": false, "isPure": false, @@ -4107,7 +5490,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2479:14:43", + "src": "3142:14:40", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -4122,18 +5505,18 @@ "typeString": "address" } ], - "id": 13532, + "id": 13531, "name": "ERC20Mintable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13230, - "src": "2465:13:43", + "referencedDeclaration": 13185, + "src": "3128:13:40", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20Mintable_$13230_$", + "typeIdentifier": "t_type$_t_contract$_ERC20Mintable_$13185_$", "typeString": "type(contract ERC20Mintable)" } }, - "id": 13537, + "id": 13536, "isConstant": false, "isLValue": false, "isPure": false, @@ -4142,29 +5525,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2465:29:43", + "src": "3128:29:40", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Mintable_$13230", + "typeIdentifier": "t_contract$_ERC20Mintable_$13185", "typeString": "contract ERC20Mintable" } }, - "id": 13538, + "id": 13537, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2495:4:43", + "memberLocation": "3158:4:40", "memberName": "mint", "nodeType": "MemberAccess", - "referencedDeclaration": 13191, - "src": "2465:34:43", + "referencedDeclaration": 13140, + "src": "3128:34:40", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 13541, + "id": 13540, "isConstant": false, "isLValue": false, "isPure": false, @@ -4173,31 +5556,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2465:57:43", + "src": "3128:57:40", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 13542, + "id": 13541, "nodeType": "ExpressionStatement", - "src": "2465:57:43" + "src": "3128:57:40" }, { "expression": { - "id": 13546, + "id": 13545, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 13543, + "id": 13542, "name": "_lastUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13370, - "src": "2532:12:43", + "referencedDeclaration": 13331, + "src": "3195:12:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4207,40 +5590,40 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 13544, + "id": 13543, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "2547:5:43", + "src": "3210:5:40", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 13545, + "id": 13544, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2553:9:43", + "memberLocation": "3216:9:40", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "2547:15:43", + "src": "3210:15:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2532:30:43", + "src": "3195:30:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 13547, + "id": 13546, "nodeType": "ExpressionStatement", - "src": "2532:30:43" + "src": "3195:30:40" } ] }, @@ -4248,49 +5631,49 @@ "kind": "function", "modifiers": [], "name": "_accrue", - "nameLocation": "2436:7:43", + "nameLocation": "3099:7:40", "parameters": { - "id": 13530, + "id": 13529, "nodeType": "ParameterList", "parameters": [], - "src": "2443:2:43" + "src": "3106:2:40" }, "returnParameters": { - "id": 13531, + "id": 13530, "nodeType": "ParameterList", "parameters": [], - "src": "2455:0:43" + "src": "3118:0:40" }, - "scope": 13585, + "scope": 13584, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { - "id": 13584, + "id": 13583, "nodeType": "FunctionDefinition", - "src": "2575:367:43", + "src": "3238:367:40", "nodes": [], "body": { - "id": 13583, + "id": 13582, "nodeType": "Block", - "src": "2638:304:43", + "src": "3301:304:40", "nodes": [], "statements": [ { "assignments": [ - 13555 + 13554 ], "declarations": [ { "constant": false, - "id": 13555, + "id": 13554, "mutability": "mutable", "name": "timeElapsed", - "nameLocation": "2709:11:43", + "nameLocation": "3372:11:40", "nodeType": "VariableDeclaration", - "scope": 13583, - "src": "2701:19:43", + "scope": 13582, + "src": "3364:19:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4298,10 +5681,10 @@ "typeString": "uint256" }, "typeName": { - "id": 13554, + "id": 13553, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2701:7:43", + "src": "3364:7:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4310,19 +5693,19 @@ "visibility": "internal" } ], - "id": 13564, + "id": 13563, "initialValue": { "arguments": [ { "hexValue": "333635", - "id": 13562, + "id": 13561, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2777:8:43", + "src": "3440:8:40", "subdenomination": "days", "typeDescriptions": { "typeIdentifier": "t_rational_31536000_by_1", @@ -4345,33 +5728,33 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 13559, + "id": 13558, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 13556, + "id": 13555, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "2724:5:43", + "src": "3387:5:40", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 13557, + "id": 13556, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2730:9:43", + "memberLocation": "3393:9:40", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "2724:15:43", + "src": "3387:15:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4380,53 +5763,53 @@ "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { - "id": 13558, + "id": 13557, "name": "_lastUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13370, - "src": "2742:12:43", + "referencedDeclaration": 13331, + "src": "3405:12:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2724:30:43", + "src": "3387:30:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 13560, + "id": 13559, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "2723:32:43", + "src": "3386:32:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 13561, + "id": 13560, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2756:7:43", + "memberLocation": "3419:7:40", "memberName": "divDown", "nodeType": "MemberAccess", - "referencedDeclaration": 7769, - "src": "2723:40:43", + "referencedDeclaration": 7666, + "src": "3386:40:40", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 13563, + "id": 13562, "isConstant": false, "isLValue": false, "isPure": false, @@ -4435,7 +5818,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2723:72:43", + "src": "3386:72:40", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4443,22 +5826,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "2701:94:43" + "src": "3364:94:40" }, { "assignments": [ - 13566 + 13565 ], "declarations": [ { "constant": false, - "id": 13566, + "id": 13565, "mutability": "mutable", "name": "accrued", - "nameLocation": "2813:7:43", + "nameLocation": "3476:7:40", "nodeType": "VariableDeclaration", - "scope": 13583, - "src": "2805:15:43", + "scope": 13582, + "src": "3468:15:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4466,10 +5849,10 @@ "typeString": "uint256" }, "typeName": { - "id": 13565, + "id": 13564, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2805:7:43", + "src": "3468:7:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4478,18 +5861,18 @@ "visibility": "internal" } ], - "id": 13580, + "id": 13579, "initialValue": { "arguments": [ { "arguments": [ { - "id": 13577, + "id": 13576, "name": "timeElapsed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13555, - "src": "2889:11:43", + "referencedDeclaration": 13554, + "src": "3552:11:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4504,33 +5887,33 @@ } ], "expression": { - "id": 13575, + "id": 13574, "name": "_rate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13368, - "src": "2875:5:43", + "referencedDeclaration": 13329, + "src": "3538:5:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 13576, + "id": 13575, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2881:7:43", + "memberLocation": "3544:7:40", "memberName": "mulDown", "nodeType": "MemberAccess", - "referencedDeclaration": 7751, - "src": "2875:13:43", + "referencedDeclaration": 7648, + "src": "3538:13:40", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 13578, + "id": 13577, "isConstant": false, "isLValue": false, "isPure": false, @@ -4539,7 +5922,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2875:26:43", + "src": "3538:26:40", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4559,14 +5942,14 @@ { "arguments": [ { - "id": 13571, + "id": 13570, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, - "src": "2847:4:43", + "src": "3510:4:40", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC4626_$13585", + "typeIdentifier": "t_contract$_MockERC4626_$13584", "typeString": "contract MockERC4626" } } @@ -4574,30 +5957,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_MockERC4626_$13585", + "typeIdentifier": "t_contract$_MockERC4626_$13584", "typeString": "contract MockERC4626" } ], - "id": 13570, + "id": 13569, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2839:7:43", + "src": "3502:7:40", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 13569, + "id": 13568, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2839:7:43", + "src": "3502:7:40", "typeDescriptions": {} } }, - "id": 13572, + "id": 13571, "isConstant": false, "isLValue": false, "isPure": false, @@ -4606,7 +5989,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2839:13:43", + "src": "3502:13:40", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -4622,33 +6005,33 @@ } ], "expression": { - "id": 13567, + "id": 13566, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61772, - "src": "2823:5:43", + "referencedDeclaration": 61847, + "src": "3486:5:40", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$62638", + "typeIdentifier": "t_contract$_ERC20_$62713", "typeString": "contract ERC20" } }, - "id": 13568, + "id": 13567, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2829:9:43", + "memberLocation": "3492:9:40", "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 62281, - "src": "2823:15:43", + "referencedDeclaration": 62356, + "src": "3486:15:40", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 13573, + "id": 13572, "isConstant": false, "isLValue": false, "isPure": false, @@ -4657,29 +6040,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2823:30:43", + "src": "3486:30:40", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 13574, + "id": 13573, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2854:7:43", + "memberLocation": "3517:7:40", "memberName": "mulDown", "nodeType": "MemberAccess", - "referencedDeclaration": 7751, - "src": "2823:38:43", + "referencedDeclaration": 7648, + "src": "3486:38:40", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 13579, + "id": 13578, "isConstant": false, "isLValue": false, "isPure": false, @@ -4688,7 +6071,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2823:88:43", + "src": "3486:88:40", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4696,25 +6079,25 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "2805:106:43" + "src": "3468:106:40" }, { "expression": { - "id": 13581, + "id": 13580, "name": "accrued", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 13566, - "src": "2928:7:43", + "referencedDeclaration": 13565, + "src": "3591:7:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 13553, - "id": 13582, + "functionReturnParameters": 13552, + "id": 13581, "nodeType": "Return", - "src": "2921:14:43" + "src": "3584:14:40" } ] }, @@ -4722,26 +6105,26 @@ "kind": "function", "modifiers": [], "name": "_getAccruedInterest", - "nameLocation": "2584:19:43", + "nameLocation": "3247:19:40", "parameters": { - "id": 13550, + "id": 13549, "nodeType": "ParameterList", "parameters": [], - "src": "2603:2:43" + "src": "3266:2:40" }, "returnParameters": { - "id": 13553, + "id": 13552, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 13552, + "id": 13551, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 13584, - "src": "2629:7:43", + "scope": 13583, + "src": "3292:7:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4749,10 +6132,10 @@ "typeString": "uint256" }, "typeName": { - "id": 13551, + "id": 13550, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2629:7:43", + "src": "3292:7:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4761,9 +6144,9 @@ "visibility": "internal" } ], - "src": "2628:9:43" + "src": "3291:9:40" }, - "scope": 13585, + "scope": 13584, "stateMutability": "view", "virtual": false, "visibility": "internal" @@ -4773,42 +6156,60 @@ "baseContracts": [ { "baseName": { - "id": 13362, + "id": 13321, "name": "ERC4626", "nameLocations": [ - "848:7:43" + "987:7:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 62325, + "src": "987:7:40" + }, + "id": 13322, + "nodeType": "InheritanceSpecifier", + "src": "987:7:40" + }, + { + "baseName": { + "id": 13323, + "name": "MultiRolesAuthority", + "nameLocations": [ + "996:19:40" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 62250, - "src": "848:7:43" + "referencedDeclaration": 61804, + "src": "996:19:40" }, - "id": 13363, + "id": 13324, "nodeType": "InheritanceSpecifier", - "src": "848:7:43" + "src": "996:19:40" } ], "canonicalName": "MockERC4626", "contractDependencies": [], "contractKind": "contract", "documentation": { - "id": 13361, + "id": 13320, "nodeType": "StructuredDocumentation", - "src": "292:532:43", + "src": "431:532:40", "text": "@author DELV\n @title MockERC4626\n @notice This mock yield source will accrue interest at a specified rate\n Every stateful interaction will accrue interest, so the interest\n accrual will approximate continuous compounding as the contract\n is called more frequently.\n @custom:disclaimer The language used in this code is for coding convenience\n only, and is not intended to, and does not, have any\n particular legal or regulatory significance." }, "fullyImplemented": true, "linearizedBaseContracts": [ - 13585, - 62250, - 62638 + 13584, + 61804, + 61499, + 61486, + 62325, + 62713 ], "name": "MockERC4626", - "nameLocation": "833:11:43", - "scope": 13586, + "nameLocation": "972:11:40", + "scope": 13585, "usedErrors": [] } ], "license": "Apache-2.0" }, - "id": 43 + "id": 40 } \ No newline at end of file From 03dec3117243ace90282fab7784ef9b7d8311c6b Mon Sep 17 00:00:00 2001 From: Dylan Date: Mon, 16 Oct 2023 15:28:05 -0700 Subject: [PATCH 3/5] fixes deploy args --- lib/ethpy/ethpy/hyperdrive/api.py | 14 ++++++++++++-- lib/ethpy/ethpy/hyperdrive/deploy.py | 15 ++++++++++++++- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/lib/ethpy/ethpy/hyperdrive/api.py b/lib/ethpy/ethpy/hyperdrive/api.py index 2a1ec7ee1b..d73e107dec 100644 --- a/lib/ethpy/ethpy/hyperdrive/api.py +++ b/lib/ethpy/ethpy/hyperdrive/api.py @@ -221,7 +221,12 @@ def get_out_for_in( pool_config_str = self._serialized_pool_config() pool_info_str = self._serialized_pool_info() # pylint: disable=no-member - out_for_in = pyperdrive.get_out_for_in(pool_config_str, pool_info_str, str(amount_in.scaled_value), shares_in) + out_for_in = pyperdrive.get_out_for_in( # type: ignore + pool_config_str, + pool_info_str, + str(amount_in.scaled_value), + shares_in, + ) return FixedPoint(scaled_value=int(out_for_in)) def get_in_for_out( @@ -246,7 +251,12 @@ def get_in_for_out( pool_config_str = self._serialized_pool_config() pool_info_str = self._serialized_pool_info() # pylint: disable=no-member - in_for_out = pyperdrive.get_in_for_out(pool_config_str, pool_info_str, str(amount_out.scaled_value), shares_out) + in_for_out = pyperdrive.get_in_for_out( # type: ignore + pool_config_str, + pool_info_str, + str(amount_out.scaled_value), + shares_out, + ) return FixedPoint(scaled_value=int(in_for_out)) def _serialized_pool_config(self) -> PoolConfig: diff --git a/lib/ethpy/ethpy/hyperdrive/deploy.py b/lib/ethpy/ethpy/hyperdrive/deploy.py index 79b4325cbf..ecf6fde7d7 100644 --- a/lib/ethpy/ethpy/hyperdrive/deploy.py +++ b/lib/ethpy/ethpy/hyperdrive/deploy.py @@ -12,6 +12,7 @@ from fixedpointmath import FixedPoint from hypertypes.IHyperdriveTypes import Fees, PoolConfig from web3 import Web3 +from web3.constants import ADDRESS_ZERO from web3.contract.contract import Contract from web3.types import TxReceipt @@ -222,18 +223,30 @@ def _deploy_hyperdrive_factory( (base_token_contract, factory_token_contract) : tuple[Contract, Contract] Containing he deployed base token and factory contracts. """ + # args = [name, symbol, decimals, admin_addr, isCompetitionMode] + args = ["Base", "BASE", 18, ADDRESS_ZERO, False] base_token_contract_addr, base_token_contract = deploy_contract( web3, abi=abis["ERC20Mintable"], bytecode=bytecodes["ERC20Mintable"], deploy_account_addr=deploy_account_addr, + args=args, ) + # args = [erc20_contract_addr, name, symbol, initial_apr, admin_addr, isCompetitionMode] + args = [ + base_token_contract_addr, + "Delvnet Yield Source", + "DELV", + initial_variable_rate.scaled_value, + ADDRESS_ZERO, + False, + ] pool_contract_addr, _ = deploy_contract( web3, abi=abis["MockERC4626"], bytecode=bytecodes["MockERC4626"], deploy_account_addr=deploy_account_addr, - args=[base_token_contract_addr, "Delvnet Yield Source", "DELV", initial_variable_rate.scaled_value], + args=args, ) forwarder_factory_contract_addr, forwarder_factory_contract = deploy_contract( web3, From 97346a43bc72272f0e9af3f0d4e0ee9373627785 Mon Sep 17 00:00:00 2001 From: Dylan Date: Mon, 16 Oct 2023 15:41:25 -0700 Subject: [PATCH 4/5] put this back --- lib/hypertypes/hypertypes/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 lib/hypertypes/hypertypes/__init__.py diff --git a/lib/hypertypes/hypertypes/__init__.py b/lib/hypertypes/hypertypes/__init__.py new file mode 100644 index 0000000000..e69de29bb2 From 43ebf0cade5208e82482f982fd84d4f71eb75c4c Mon Sep 17 00:00:00 2001 From: Dylan Date: Mon, 16 Oct 2023 15:44:08 -0700 Subject: [PATCH 5/5] black --- .../hypertypes/ERC20MintableContract.py | 80 +++---------- .../hypertypes/ERC4626DataProviderContract.py | 52 ++------- .../ERC4626HyperdriveDeployerContract.py | 12 +- .../ERC4626HyperdriveFactoryContract.py | 92 ++++----------- .../ERC4626HyperdriveFactoryTypes.py | 4 +- .../hypertypes/ForwarderFactoryContract.py | 16 +-- .../hypertypes/IERC4626HyperdriveContract.py | 96 ++++------------ .../hypertypes/IERC4626HyperdriveTypes.py | 8 +- .../hypertypes/IHyperdriveContract.py | 64 +++-------- lib/hypertypes/hypertypes/IHyperdriveTypes.py | 8 +- .../hypertypes/MockERC4626Contract.py | 108 +++++------------- 11 files changed, 127 insertions(+), 413 deletions(-) diff --git a/lib/hypertypes/hypertypes/ERC20MintableContract.py b/lib/hypertypes/hypertypes/ERC20MintableContract.py index 045218dc24..9b90cab0da 100644 --- a/lib/hypertypes/hypertypes/ERC20MintableContract.py +++ b/lib/hypertypes/hypertypes/ERC20MintableContract.py @@ -36,9 +36,7 @@ class ERC20MintableAllowanceContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, arg1: str, arg2: str - ) -> "ERC20MintableAllowanceContractFunction": + def __call__(self, arg1: str, arg2: str) -> "ERC20MintableAllowanceContractFunction": super().__call__() return self @@ -52,9 +50,7 @@ class ERC20MintableApproveContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, spender: str, amount: int - ) -> "ERC20MintableApproveContractFunction": + def __call__(self, spender: str, amount: int) -> "ERC20MintableApproveContractFunction": super().__call__(spender, amount) return self @@ -96,9 +92,7 @@ class ERC20MintableBurnContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, amount: int, destination: str | None = None - ) -> "ERC20MintableBurnContractFunction": + def __call__(self, amount: int, destination: str | None = None) -> "ERC20MintableBurnContractFunction": if all([destination is None]): super().__call__() return self @@ -117,9 +111,7 @@ class ERC20MintableCanCallContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, user: str, target: str, functionSig: bytes - ) -> "ERC20MintableCanCallContractFunction": + def __call__(self, user: str, target: str, functionSig: bytes) -> "ERC20MintableCanCallContractFunction": super().__call__(user, target, functionSig) return self @@ -147,9 +139,7 @@ class ERC20MintableDoesRoleHaveCapabilityContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, role: int, functionSig: bytes - ) -> "ERC20MintableDoesRoleHaveCapabilityContractFunction": + def __call__(self, role: int, functionSig: bytes) -> "ERC20MintableDoesRoleHaveCapabilityContractFunction": super().__call__(role, functionSig) return self @@ -163,9 +153,7 @@ class ERC20MintableDoesUserHaveRoleContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, user: str, role: int - ) -> "ERC20MintableDoesUserHaveRoleContractFunction": + def __call__(self, user: str, role: int) -> "ERC20MintableDoesUserHaveRoleContractFunction": super().__call__(user, role) return self @@ -179,9 +167,7 @@ class ERC20MintableGetRolesWithCapabilityContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, arg1: bytes - ) -> "ERC20MintableGetRolesWithCapabilityContractFunction": + def __call__(self, arg1: bytes) -> "ERC20MintableGetRolesWithCapabilityContractFunction": super().__call__() return self @@ -195,9 +181,7 @@ class ERC20MintableGetTargetCustomAuthorityContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, arg1: str - ) -> "ERC20MintableGetTargetCustomAuthorityContractFunction": + def __call__(self, arg1: str) -> "ERC20MintableGetTargetCustomAuthorityContractFunction": super().__call__() return self @@ -211,9 +195,7 @@ class ERC20MintableGetUserRolesContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, arg1: str - ) -> "ERC20MintableGetUserRolesContractFunction": + def __call__(self, arg1: str) -> "ERC20MintableGetUserRolesContractFunction": super().__call__() return self @@ -227,9 +209,7 @@ class ERC20MintableIsCapabilityPublicContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, arg1: bytes - ) -> "ERC20MintableIsCapabilityPublicContractFunction": + def __call__(self, arg1: bytes) -> "ERC20MintableIsCapabilityPublicContractFunction": super().__call__() return self @@ -243,9 +223,7 @@ class ERC20MintableMintContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, amount: int, destination: str | None = None - ) -> "ERC20MintableMintContractFunction": + def __call__(self, amount: int, destination: str | None = None) -> "ERC20MintableMintContractFunction": if all([destination is not None]): super().__call__() return self @@ -329,9 +307,7 @@ class ERC20MintableSetAuthorityContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, newAuthority: str - ) -> "ERC20MintableSetAuthorityContractFunction": + def __call__(self, newAuthority: str) -> "ERC20MintableSetAuthorityContractFunction": super().__call__(newAuthority) return self @@ -345,9 +321,7 @@ class ERC20MintableSetPublicCapabilityContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, functionSig: bytes, enabled: bool - ) -> "ERC20MintableSetPublicCapabilityContractFunction": + def __call__(self, functionSig: bytes, enabled: bool) -> "ERC20MintableSetPublicCapabilityContractFunction": super().__call__(functionSig, enabled) return self @@ -377,9 +351,7 @@ class ERC20MintableSetTargetCustomAuthorityContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, target: str, customAuthority: str - ) -> "ERC20MintableSetTargetCustomAuthorityContractFunction": + def __call__(self, target: str, customAuthority: str) -> "ERC20MintableSetTargetCustomAuthorityContractFunction": super().__call__(target, customAuthority) return self @@ -393,9 +365,7 @@ class ERC20MintableSetUserRoleContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, user: str, role: int, enabled: bool - ) -> "ERC20MintableSetUserRoleContractFunction": + def __call__(self, user: str, role: int, enabled: bool) -> "ERC20MintableSetUserRoleContractFunction": super().__call__(user, role, enabled) return self @@ -437,9 +407,7 @@ class ERC20MintableTransferContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, to: str, amount: int - ) -> "ERC20MintableTransferContractFunction": + def __call__(self, to: str, amount: int) -> "ERC20MintableTransferContractFunction": super().__call__(to, amount) return self @@ -453,9 +421,7 @@ class ERC20MintableTransferFromContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, _from: str, to: str, amount: int - ) -> "ERC20MintableTransferFromContractFunction": + def __call__(self, _from: str, to: str, amount: int) -> "ERC20MintableTransferFromContractFunction": super().__call__(_from, to, amount) return self @@ -469,9 +435,7 @@ class ERC20MintableTransferOwnershipContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, newOwner: str - ) -> "ERC20MintableTransferOwnershipContractFunction": + def __call__(self, newOwner: str) -> "ERC20MintableTransferOwnershipContractFunction": super().__call__(newOwner) return self @@ -548,13 +512,7 @@ def __init__(self, address: ChecksumAddress | None = None, abi=Any) -> None: self.abi = abi # TODO: make this better, shouldn't initialize to the zero address, but the Contract's init # function requires an address. - self.address = ( - address - if address - else cast( - ChecksumAddress, "0x0000000000000000000000000000000000000000" - ) - ) + self.address = address if address else cast(ChecksumAddress, "0x0000000000000000000000000000000000000000") try: # Initialize parent Contract class diff --git a/lib/hypertypes/hypertypes/ERC4626DataProviderContract.py b/lib/hypertypes/hypertypes/ERC4626DataProviderContract.py index 32842aa258..109f0c9c60 100644 --- a/lib/hypertypes/hypertypes/ERC4626DataProviderContract.py +++ b/lib/hypertypes/hypertypes/ERC4626DataProviderContract.py @@ -22,9 +22,7 @@ class ERC4626DataProviderBalanceOfContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, tokenId: int, account: str - ) -> "ERC4626DataProviderBalanceOfContractFunction": + def __call__(self, tokenId: int, account: str) -> "ERC4626DataProviderBalanceOfContractFunction": super().__call__(tokenId, account) return self @@ -66,9 +64,7 @@ class ERC4626DataProviderGetCheckpointContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, _checkpointId: int - ) -> "ERC4626DataProviderGetCheckpointContractFunction": + def __call__(self, _checkpointId: int) -> "ERC4626DataProviderGetCheckpointContractFunction": super().__call__(_checkpointId) return self @@ -118,9 +114,7 @@ def __call__(self) -> "ERC4626DataProviderGetPoolInfoContractFunction": # def call() -class ERC4626DataProviderGetUncollectedGovernanceFeesContractFunction( - ContractFunction -): +class ERC4626DataProviderGetUncollectedGovernanceFeesContractFunction(ContractFunction): """ContractFunction for the getUncollectedGovernanceFees method.""" # super() call methods are generic, while our version adds values & types @@ -156,9 +150,7 @@ class ERC4626DataProviderIsApprovedForAllContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, account: str, operator: str - ) -> "ERC4626DataProviderIsApprovedForAllContractFunction": + def __call__(self, account: str, operator: str) -> "ERC4626DataProviderIsApprovedForAllContractFunction": super().__call__(account, operator) return self @@ -172,9 +164,7 @@ class ERC4626DataProviderIsSweepableContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, _target: str - ) -> "ERC4626DataProviderIsSweepableContractFunction": + def __call__(self, _target: str) -> "ERC4626DataProviderIsSweepableContractFunction": super().__call__(_target) return self @@ -202,9 +192,7 @@ class ERC4626DataProviderLoadContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, _slots: list[int] - ) -> "ERC4626DataProviderLoadContractFunction": + def __call__(self, _slots: list[int]) -> "ERC4626DataProviderLoadContractFunction": super().__call__(_slots) return self @@ -218,9 +206,7 @@ class ERC4626DataProviderNameContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, tokenId: int - ) -> "ERC4626DataProviderNameContractFunction": + def __call__(self, tokenId: int) -> "ERC4626DataProviderNameContractFunction": super().__call__(tokenId) return self @@ -234,9 +220,7 @@ class ERC4626DataProviderNoncesContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, account: str - ) -> "ERC4626DataProviderNoncesContractFunction": + def __call__(self, account: str) -> "ERC4626DataProviderNoncesContractFunction": super().__call__(account) return self @@ -280,9 +264,7 @@ class ERC4626DataProviderQueryContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, period: int - ) -> "ERC4626DataProviderQueryContractFunction": + def __call__(self, period: int) -> "ERC4626DataProviderQueryContractFunction": super().__call__(period) return self @@ -296,9 +278,7 @@ class ERC4626DataProviderSymbolContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, tokenId: int - ) -> "ERC4626DataProviderSymbolContractFunction": + def __call__(self, tokenId: int) -> "ERC4626DataProviderSymbolContractFunction": super().__call__(tokenId) return self @@ -312,9 +292,7 @@ class ERC4626DataProviderTotalSupplyContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, tokenId: int - ) -> "ERC4626DataProviderTotalSupplyContractFunction": + def __call__(self, tokenId: int) -> "ERC4626DataProviderTotalSupplyContractFunction": super().__call__(tokenId) return self @@ -373,13 +351,7 @@ def __init__(self, address: ChecksumAddress | None = None, abi=Any) -> None: self.abi = abi # TODO: make this better, shouldn't initialize to the zero address, but the Contract's init # function requires an address. - self.address = ( - address - if address - else cast( - ChecksumAddress, "0x0000000000000000000000000000000000000000" - ) - ) + self.address = address if address else cast(ChecksumAddress, "0x0000000000000000000000000000000000000000") try: # Initialize parent Contract class diff --git a/lib/hypertypes/hypertypes/ERC4626HyperdriveDeployerContract.py b/lib/hypertypes/hypertypes/ERC4626HyperdriveDeployerContract.py index 32d1e70b06..b384620f9f 100644 --- a/lib/hypertypes/hypertypes/ERC4626HyperdriveDeployerContract.py +++ b/lib/hypertypes/hypertypes/ERC4626HyperdriveDeployerContract.py @@ -30,9 +30,7 @@ def __call__( _linkerFactory: str, _extraData: list[bytes], ) -> "ERC4626HyperdriveDeployerDeployContractFunction": - super().__call__( - _config, _dataProvider, _linkerCodeHash, _linkerFactory, _extraData - ) + super().__call__(_config, _dataProvider, _linkerCodeHash, _linkerFactory, _extraData) return self # TODO: add call def so we can get return types for the calls @@ -52,13 +50,7 @@ def __init__(self, address: ChecksumAddress | None = None, abi=Any) -> None: self.abi = abi # TODO: make this better, shouldn't initialize to the zero address, but the Contract's init # function requires an address. - self.address = ( - address - if address - else cast( - ChecksumAddress, "0x0000000000000000000000000000000000000000" - ) - ) + self.address = address if address else cast(ChecksumAddress, "0x0000000000000000000000000000000000000000") try: # Initialize parent Contract class diff --git a/lib/hypertypes/hypertypes/ERC4626HyperdriveFactoryContract.py b/lib/hypertypes/hypertypes/ERC4626HyperdriveFactoryContract.py index 5654f7d6b0..cd6961b731 100644 --- a/lib/hypertypes/hypertypes/ERC4626HyperdriveFactoryContract.py +++ b/lib/hypertypes/hypertypes/ERC4626HyperdriveFactoryContract.py @@ -16,9 +16,7 @@ from web3.exceptions import FallbackNotFound -class ERC4626HyperdriveFactoryDeployAndInitializeContractFunction( - ContractFunction -): +class ERC4626HyperdriveFactoryDeployAndInitializeContractFunction(ContractFunction): """ContractFunction for the deployAndInitialize method.""" # super() call methods are generic, while our version adds values & types @@ -64,9 +62,7 @@ def __call__(self) -> "ERC4626HyperdriveFactoryFeesContractFunction": # def call() -class ERC4626HyperdriveFactoryGetDefaultPausersContractFunction( - ContractFunction -): +class ERC4626HyperdriveFactoryGetDefaultPausersContractFunction(ContractFunction): """ContractFunction for the getDefaultPausers method.""" # super() call methods are generic, while our version adds values & types @@ -112,9 +108,7 @@ def __call__(self) -> "ERC4626HyperdriveFactoryGovernanceContractFunction": # def call() -class ERC4626HyperdriveFactoryHyperdriveDeployerContractFunction( - ContractFunction -): +class ERC4626HyperdriveFactoryHyperdriveDeployerContractFunction(ContractFunction): """ContractFunction for the hyperdriveDeployer method.""" # super() call methods are generic, while our version adds values & types @@ -130,9 +124,7 @@ def __call__( # def call() -class ERC4626HyperdriveFactoryHyperdriveGovernanceContractFunction( - ContractFunction -): +class ERC4626HyperdriveFactoryHyperdriveGovernanceContractFunction(ContractFunction): """ContractFunction for the hyperdriveGovernance method.""" # super() call methods are generic, while our version adds values & types @@ -154,9 +146,7 @@ class ERC4626HyperdriveFactoryIsOfficialContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, instance: str - ) -> "ERC4626HyperdriveFactoryIsOfficialContractFunction": + def __call__(self, instance: str) -> "ERC4626HyperdriveFactoryIsOfficialContractFunction": super().__call__(instance) return self @@ -196,17 +186,13 @@ def __call__( # def call() -class ERC4626HyperdriveFactoryUpdateDefaultPausersContractFunction( - ContractFunction -): +class ERC4626HyperdriveFactoryUpdateDefaultPausersContractFunction(ContractFunction): """ContractFunction for the updateDefaultPausers method.""" # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, _defaultPausers_: list[str] - ) -> "ERC4626HyperdriveFactoryUpdateDefaultPausersContractFunction": + def __call__(self, _defaultPausers_: list[str]) -> "ERC4626HyperdriveFactoryUpdateDefaultPausersContractFunction": super().__call__(_defaultPausers_) return self @@ -214,17 +200,13 @@ def __call__( # def call() -class ERC4626HyperdriveFactoryUpdateFeeCollectorContractFunction( - ContractFunction -): +class ERC4626HyperdriveFactoryUpdateFeeCollectorContractFunction(ContractFunction): """ContractFunction for the updateFeeCollector method.""" # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, _feeCollector: str - ) -> "ERC4626HyperdriveFactoryUpdateFeeCollectorContractFunction": + def __call__(self, _feeCollector: str) -> "ERC4626HyperdriveFactoryUpdateFeeCollectorContractFunction": super().__call__(_feeCollector) return self @@ -238,9 +220,7 @@ class ERC4626HyperdriveFactoryUpdateFeesContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, _fees: tuple - ) -> "ERC4626HyperdriveFactoryUpdateFeesContractFunction": + def __call__(self, _fees: tuple) -> "ERC4626HyperdriveFactoryUpdateFeesContractFunction": super().__call__(_fees) return self @@ -248,17 +228,13 @@ def __call__( # def call() -class ERC4626HyperdriveFactoryUpdateGovernanceContractFunction( - ContractFunction -): +class ERC4626HyperdriveFactoryUpdateGovernanceContractFunction(ContractFunction): """ContractFunction for the updateGovernance method.""" # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, _governance: str - ) -> "ERC4626HyperdriveFactoryUpdateGovernanceContractFunction": + def __call__(self, _governance: str) -> "ERC4626HyperdriveFactoryUpdateGovernanceContractFunction": super().__call__(_governance) return self @@ -266,9 +242,7 @@ def __call__( # def call() -class ERC4626HyperdriveFactoryUpdateHyperdriveGovernanceContractFunction( - ContractFunction -): +class ERC4626HyperdriveFactoryUpdateHyperdriveGovernanceContractFunction(ContractFunction): """ContractFunction for the updateHyperdriveGovernance method.""" # super() call methods are generic, while our version adds values & types @@ -284,17 +258,13 @@ def __call__( # def call() -class ERC4626HyperdriveFactoryUpdateImplementationContractFunction( - ContractFunction -): +class ERC4626HyperdriveFactoryUpdateImplementationContractFunction(ContractFunction): """ContractFunction for the updateImplementation method.""" # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, newDeployer: str - ) -> "ERC4626HyperdriveFactoryUpdateImplementationContractFunction": + def __call__(self, newDeployer: str) -> "ERC4626HyperdriveFactoryUpdateImplementationContractFunction": super().__call__(newDeployer) return self @@ -302,17 +272,13 @@ def __call__( # def call() -class ERC4626HyperdriveFactoryUpdateLinkerCodeHashContractFunction( - ContractFunction -): +class ERC4626HyperdriveFactoryUpdateLinkerCodeHashContractFunction(ContractFunction): """ContractFunction for the updateLinkerCodeHash method.""" # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, _linkerCodeHash: bytes - ) -> "ERC4626HyperdriveFactoryUpdateLinkerCodeHashContractFunction": + def __call__(self, _linkerCodeHash: bytes) -> "ERC4626HyperdriveFactoryUpdateLinkerCodeHashContractFunction": super().__call__(_linkerCodeHash) return self @@ -320,17 +286,13 @@ def __call__( # def call() -class ERC4626HyperdriveFactoryUpdateLinkerFactoryContractFunction( - ContractFunction -): +class ERC4626HyperdriveFactoryUpdateLinkerFactoryContractFunction(ContractFunction): """ContractFunction for the updateLinkerFactory method.""" # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, _linkerFactory: str - ) -> "ERC4626HyperdriveFactoryUpdateLinkerFactoryContractFunction": + def __call__(self, _linkerFactory: str) -> "ERC4626HyperdriveFactoryUpdateLinkerFactoryContractFunction": super().__call__(_linkerFactory) return self @@ -338,17 +300,13 @@ def __call__( # def call() -class ERC4626HyperdriveFactoryUpdateSweepTargetsContractFunction( - ContractFunction -): +class ERC4626HyperdriveFactoryUpdateSweepTargetsContractFunction(ContractFunction): """ContractFunction for the updateSweepTargets method.""" # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, _sweepTargets_: list[str] - ) -> "ERC4626HyperdriveFactoryUpdateSweepTargetsContractFunction": + def __call__(self, _sweepTargets_: list[str]) -> "ERC4626HyperdriveFactoryUpdateSweepTargetsContractFunction": super().__call__(_sweepTargets_) return self @@ -425,13 +383,7 @@ def __init__(self, address: ChecksumAddress | None = None, abi=Any) -> None: self.abi = abi # TODO: make this better, shouldn't initialize to the zero address, but the Contract's init # function requires an address. - self.address = ( - address - if address - else cast( - ChecksumAddress, "0x0000000000000000000000000000000000000000" - ) - ) + self.address = address if address else cast(ChecksumAddress, "0x0000000000000000000000000000000000000000") try: # Initialize parent Contract class diff --git a/lib/hypertypes/hypertypes/ERC4626HyperdriveFactoryTypes.py b/lib/hypertypes/hypertypes/ERC4626HyperdriveFactoryTypes.py index 6177d46b1a..4e6491d4e2 100644 --- a/lib/hypertypes/hypertypes/ERC4626HyperdriveFactoryTypes.py +++ b/lib/hypertypes/hypertypes/ERC4626HyperdriveFactoryTypes.py @@ -95,9 +95,7 @@ class PoolConfig: HyperdriveGovernanceUpdated = ABIEvent( anonymous=False, inputs=[ - ABIEventParams( - indexed=True, name="hyperdriveGovernance", type="address" - ), + ABIEventParams(indexed=True, name="hyperdriveGovernance", type="address"), ], name="HyperdriveGovernanceUpdated", type="event", diff --git a/lib/hypertypes/hypertypes/ForwarderFactoryContract.py b/lib/hypertypes/hypertypes/ForwarderFactoryContract.py index efe24c3464..88d90f9139 100644 --- a/lib/hypertypes/hypertypes/ForwarderFactoryContract.py +++ b/lib/hypertypes/hypertypes/ForwarderFactoryContract.py @@ -36,9 +36,7 @@ class ForwarderFactoryCreateContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, token: str, tokenId: int - ) -> "ForwarderFactoryCreateContractFunction": + def __call__(self, token: str, tokenId: int) -> "ForwarderFactoryCreateContractFunction": super().__call__(token, tokenId) return self @@ -66,9 +64,7 @@ class ForwarderFactoryGetForwarderContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, token: str, tokenId: int - ) -> "ForwarderFactoryGetForwarderContractFunction": + def __call__(self, token: str, tokenId: int) -> "ForwarderFactoryGetForwarderContractFunction": super().__call__(token, tokenId) return self @@ -95,13 +91,7 @@ def __init__(self, address: ChecksumAddress | None = None, abi=Any) -> None: self.abi = abi # TODO: make this better, shouldn't initialize to the zero address, but the Contract's init # function requires an address. - self.address = ( - address - if address - else cast( - ChecksumAddress, "0x0000000000000000000000000000000000000000" - ) - ) + self.address = address if address else cast(ChecksumAddress, "0x0000000000000000000000000000000000000000") try: # Initialize parent Contract class diff --git a/lib/hypertypes/hypertypes/IERC4626HyperdriveContract.py b/lib/hypertypes/hypertypes/IERC4626HyperdriveContract.py index e1fe861109..29ef0a40b8 100644 --- a/lib/hypertypes/hypertypes/IERC4626HyperdriveContract.py +++ b/lib/hypertypes/hypertypes/IERC4626HyperdriveContract.py @@ -44,9 +44,7 @@ def __call__( _destination: str, _asUnderlying: bool, ) -> "IERC4626HyperdriveAddLiquidityContractFunction": - super().__call__( - _contribution, _minApr, _maxApr, _destination, _asUnderlying - ) + super().__call__(_contribution, _minApr, _maxApr, _destination, _asUnderlying) return self # TODO: add call def so we can get return types for the calls @@ -59,9 +57,7 @@ class IERC4626HyperdriveBalanceOfContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, tokenId: int, owner: str - ) -> "IERC4626HyperdriveBalanceOfContractFunction": + def __call__(self, tokenId: int, owner: str) -> "IERC4626HyperdriveBalanceOfContractFunction": super().__call__(tokenId, owner) return self @@ -105,9 +101,7 @@ class IERC4626HyperdriveCheckpointContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, _checkpointTime: int - ) -> "IERC4626HyperdriveCheckpointContractFunction": + def __call__(self, _checkpointTime: int) -> "IERC4626HyperdriveCheckpointContractFunction": super().__call__(_checkpointTime) return self @@ -129,9 +123,7 @@ def __call__( _destination: str, _asUnderlying: bool, ) -> "IERC4626HyperdriveCloseLongContractFunction": - super().__call__( - _maturityTime, _bondAmount, _minOutput, _destination, _asUnderlying - ) + super().__call__(_maturityTime, _bondAmount, _minOutput, _destination, _asUnderlying) return self # TODO: add call def so we can get return types for the calls @@ -152,9 +144,7 @@ def __call__( _destination: str, _asUnderlying: bool, ) -> "IERC4626HyperdriveCloseShortContractFunction": - super().__call__( - _maturityTime, _bondAmount, _minOutput, _destination, _asUnderlying - ) + super().__call__(_maturityTime, _bondAmount, _minOutput, _destination, _asUnderlying) return self # TODO: add call def so we can get return types for the calls @@ -167,9 +157,7 @@ class IERC4626HyperdriveCollectGovernanceFeeContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, asUnderlying: bool - ) -> "IERC4626HyperdriveCollectGovernanceFeeContractFunction": + def __call__(self, asUnderlying: bool) -> "IERC4626HyperdriveCollectGovernanceFeeContractFunction": super().__call__(asUnderlying) return self @@ -197,9 +185,7 @@ class IERC4626HyperdriveGetCheckpointContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, _checkpointId: int - ) -> "IERC4626HyperdriveGetCheckpointContractFunction": + def __call__(self, _checkpointId: int) -> "IERC4626HyperdriveGetCheckpointContractFunction": super().__call__(_checkpointId) return self @@ -249,9 +235,7 @@ def __call__(self) -> "IERC4626HyperdriveGetPoolInfoContractFunction": # def call() -class IERC4626HyperdriveGetUncollectedGovernanceFeesContractFunction( - ContractFunction -): +class IERC4626HyperdriveGetUncollectedGovernanceFeesContractFunction(ContractFunction): """ContractFunction for the getUncollectedGovernanceFees method.""" # super() call methods are generic, while our version adds values & types @@ -307,9 +291,7 @@ class IERC4626HyperdriveIsApprovedForAllContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, owner: str, spender: str - ) -> "IERC4626HyperdriveIsApprovedForAllContractFunction": + def __call__(self, owner: str, spender: str) -> "IERC4626HyperdriveIsApprovedForAllContractFunction": super().__call__(owner, spender) return self @@ -323,9 +305,7 @@ class IERC4626HyperdriveIsSweepableContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, _target: str - ) -> "IERC4626HyperdriveIsSweepableContractFunction": + def __call__(self, _target: str) -> "IERC4626HyperdriveIsSweepableContractFunction": super().__call__(_target) return self @@ -353,9 +333,7 @@ class IERC4626HyperdriveLoadContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, _slots: list[int] - ) -> "IERC4626HyperdriveLoadContractFunction": + def __call__(self, _slots: list[int]) -> "IERC4626HyperdriveLoadContractFunction": super().__call__(_slots) return self @@ -383,9 +361,7 @@ class IERC4626HyperdriveNoncesContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, owner: str - ) -> "IERC4626HyperdriveNoncesContractFunction": + def __call__(self, owner: str) -> "IERC4626HyperdriveNoncesContractFunction": super().__call__(owner) return self @@ -407,9 +383,7 @@ def __call__( _destination: str, _asUnderlying: bool, ) -> "IERC4626HyperdriveOpenLongContractFunction": - super().__call__( - _baseAmount, _minOutput, _minSharePrice, _destination, _asUnderlying - ) + super().__call__(_baseAmount, _minOutput, _minSharePrice, _destination, _asUnderlying) return self # TODO: add call def so we can get return types for the calls @@ -449,9 +423,7 @@ class IERC4626HyperdrivePauseContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, status: bool - ) -> "IERC4626HyperdrivePauseContractFunction": + def __call__(self, status: bool) -> "IERC4626HyperdrivePauseContractFunction": super().__call__(status) return self @@ -465,9 +437,7 @@ class IERC4626HyperdrivePerTokenApprovalsContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, tokenId: int, owner: str, spender: str - ) -> "IERC4626HyperdrivePerTokenApprovalsContractFunction": + def __call__(self, tokenId: int, owner: str, spender: str) -> "IERC4626HyperdrivePerTokenApprovalsContractFunction": super().__call__(tokenId, owner, spender) return self @@ -512,9 +482,7 @@ def __call__(self) -> "IERC4626HyperdrivePoolContractFunction": # def call() -class IERC4626HyperdriveRedeemWithdrawalSharesContractFunction( - ContractFunction -): +class IERC4626HyperdriveRedeemWithdrawalSharesContractFunction(ContractFunction): """ContractFunction for the redeemWithdrawalShares method.""" # super() call methods are generic, while our version adds values & types @@ -560,9 +528,7 @@ class IERC4626HyperdriveSetApprovalContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, tokenID: int, operator: str, amount: int - ) -> "IERC4626HyperdriveSetApprovalContractFunction": + def __call__(self, tokenID: int, operator: str, amount: int) -> "IERC4626HyperdriveSetApprovalContractFunction": super().__call__(tokenID, operator, amount) return self @@ -592,9 +558,7 @@ class IERC4626HyperdriveSetApprovalForAllContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, operator: str, approved: bool - ) -> "IERC4626HyperdriveSetApprovalForAllContractFunction": + def __call__(self, operator: str, approved: bool) -> "IERC4626HyperdriveSetApprovalForAllContractFunction": super().__call__(operator, approved) return self @@ -608,9 +572,7 @@ class IERC4626HyperdriveSetGovernanceContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, who: str - ) -> "IERC4626HyperdriveSetGovernanceContractFunction": + def __call__(self, who: str) -> "IERC4626HyperdriveSetGovernanceContractFunction": super().__call__(who) return self @@ -624,9 +586,7 @@ class IERC4626HyperdriveSetPauserContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, who: str, status: bool - ) -> "IERC4626HyperdriveSetPauserContractFunction": + def __call__(self, who: str, status: bool) -> "IERC4626HyperdriveSetPauserContractFunction": super().__call__(who, status) return self @@ -640,9 +600,7 @@ class IERC4626HyperdriveSweepContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, _target: str - ) -> "IERC4626HyperdriveSweepContractFunction": + def __call__(self, _target: str) -> "IERC4626HyperdriveSweepContractFunction": super().__call__(_target) return self @@ -670,9 +628,7 @@ class IERC4626HyperdriveTotalSupplyContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, _id: int - ) -> "IERC4626HyperdriveTotalSupplyContractFunction": + def __call__(self, _id: int) -> "IERC4626HyperdriveTotalSupplyContractFunction": super().__call__(_id) return self @@ -805,13 +761,7 @@ def __init__(self, address: ChecksumAddress | None = None, abi=Any) -> None: self.abi = abi # TODO: make this better, shouldn't initialize to the zero address, but the Contract's init # function requires an address. - self.address = ( - address - if address - else cast( - ChecksumAddress, "0x0000000000000000000000000000000000000000" - ) - ) + self.address = address if address else cast(ChecksumAddress, "0x0000000000000000000000000000000000000000") try: # Initialize parent Contract class diff --git a/lib/hypertypes/hypertypes/IERC4626HyperdriveTypes.py b/lib/hypertypes/hypertypes/IERC4626HyperdriveTypes.py index 2c418ff93b..abda53219d 100644 --- a/lib/hypertypes/hypertypes/IERC4626HyperdriveTypes.py +++ b/lib/hypertypes/hypertypes/IERC4626HyperdriveTypes.py @@ -200,9 +200,7 @@ class WithdrawPool: anonymous=False, inputs=[ ABIEventParams(indexed=True, name="provider", type="address"), - ABIEventParams( - indexed=False, name="withdrawalShareAmount", type="uint256" - ), + ABIEventParams(indexed=False, name="withdrawalShareAmount", type="uint256"), ABIEventParams(indexed=False, name="baseAmount", type="uint256"), ], name="RedeemWithdrawalShares", @@ -215,9 +213,7 @@ class WithdrawPool: ABIEventParams(indexed=True, name="provider", type="address"), ABIEventParams(indexed=False, name="lpAmount", type="uint256"), ABIEventParams(indexed=False, name="baseAmount", type="uint256"), - ABIEventParams( - indexed=False, name="withdrawalShareAmount", type="uint256" - ), + ABIEventParams(indexed=False, name="withdrawalShareAmount", type="uint256"), ], name="RemoveLiquidity", type="event", diff --git a/lib/hypertypes/hypertypes/IHyperdriveContract.py b/lib/hypertypes/hypertypes/IHyperdriveContract.py index 0c6c71cdc3..76022b34d2 100644 --- a/lib/hypertypes/hypertypes/IHyperdriveContract.py +++ b/lib/hypertypes/hypertypes/IHyperdriveContract.py @@ -44,9 +44,7 @@ def __call__( _destination: str, _asUnderlying: bool, ) -> "IHyperdriveAddLiquidityContractFunction": - super().__call__( - _contribution, _minApr, _maxApr, _destination, _asUnderlying - ) + super().__call__(_contribution, _minApr, _maxApr, _destination, _asUnderlying) return self # TODO: add call def so we can get return types for the calls @@ -59,9 +57,7 @@ class IHyperdriveBalanceOfContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, tokenId: int, owner: str - ) -> "IHyperdriveBalanceOfContractFunction": + def __call__(self, tokenId: int, owner: str) -> "IHyperdriveBalanceOfContractFunction": super().__call__(tokenId, owner) return self @@ -105,9 +101,7 @@ class IHyperdriveCheckpointContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, _checkpointTime: int - ) -> "IHyperdriveCheckpointContractFunction": + def __call__(self, _checkpointTime: int) -> "IHyperdriveCheckpointContractFunction": super().__call__(_checkpointTime) return self @@ -129,9 +123,7 @@ def __call__( _destination: str, _asUnderlying: bool, ) -> "IHyperdriveCloseLongContractFunction": - super().__call__( - _maturityTime, _bondAmount, _minOutput, _destination, _asUnderlying - ) + super().__call__(_maturityTime, _bondAmount, _minOutput, _destination, _asUnderlying) return self # TODO: add call def so we can get return types for the calls @@ -152,9 +144,7 @@ def __call__( _destination: str, _asUnderlying: bool, ) -> "IHyperdriveCloseShortContractFunction": - super().__call__( - _maturityTime, _bondAmount, _minOutput, _destination, _asUnderlying - ) + super().__call__(_maturityTime, _bondAmount, _minOutput, _destination, _asUnderlying) return self # TODO: add call def so we can get return types for the calls @@ -167,9 +157,7 @@ class IHyperdriveCollectGovernanceFeeContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, asUnderlying: bool - ) -> "IHyperdriveCollectGovernanceFeeContractFunction": + def __call__(self, asUnderlying: bool) -> "IHyperdriveCollectGovernanceFeeContractFunction": super().__call__(asUnderlying) return self @@ -197,9 +185,7 @@ class IHyperdriveGetCheckpointContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, _checkpointId: int - ) -> "IHyperdriveGetCheckpointContractFunction": + def __call__(self, _checkpointId: int) -> "IHyperdriveGetCheckpointContractFunction": super().__call__(_checkpointId) return self @@ -305,9 +291,7 @@ class IHyperdriveIsApprovedForAllContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, owner: str, spender: str - ) -> "IHyperdriveIsApprovedForAllContractFunction": + def __call__(self, owner: str, spender: str) -> "IHyperdriveIsApprovedForAllContractFunction": super().__call__(owner, spender) return self @@ -385,9 +369,7 @@ def __call__( _destination: str, _asUnderlying: bool, ) -> "IHyperdriveOpenLongContractFunction": - super().__call__( - _baseAmount, _minOutput, _minSharePrice, _destination, _asUnderlying - ) + super().__call__(_baseAmount, _minOutput, _minSharePrice, _destination, _asUnderlying) return self # TODO: add call def so we can get return types for the calls @@ -441,9 +423,7 @@ class IHyperdrivePerTokenApprovalsContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, tokenId: int, owner: str, spender: str - ) -> "IHyperdrivePerTokenApprovalsContractFunction": + def __call__(self, tokenId: int, owner: str, spender: str) -> "IHyperdrivePerTokenApprovalsContractFunction": super().__call__(tokenId, owner, spender) return self @@ -520,9 +500,7 @@ class IHyperdriveSetApprovalContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, tokenID: int, operator: str, amount: int - ) -> "IHyperdriveSetApprovalContractFunction": + def __call__(self, tokenID: int, operator: str, amount: int) -> "IHyperdriveSetApprovalContractFunction": super().__call__(tokenID, operator, amount) return self @@ -552,9 +530,7 @@ class IHyperdriveSetApprovalForAllContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, operator: str, approved: bool - ) -> "IHyperdriveSetApprovalForAllContractFunction": + def __call__(self, operator: str, approved: bool) -> "IHyperdriveSetApprovalForAllContractFunction": super().__call__(operator, approved) return self @@ -582,9 +558,7 @@ class IHyperdriveSetPauserContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, who: str, status: bool - ) -> "IHyperdriveSetPauserContractFunction": + def __call__(self, who: str, status: bool) -> "IHyperdriveSetPauserContractFunction": super().__call__(who, status) return self @@ -626,9 +600,7 @@ class IHyperdriveTransferFromContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, tokenID: int, _from: str, to: str, amount: int - ) -> "IHyperdriveTransferFromContractFunction": + def __call__(self, tokenID: int, _from: str, to: str, amount: int) -> "IHyperdriveTransferFromContractFunction": super().__call__(tokenID, _from, to, amount) return self @@ -739,13 +711,7 @@ def __init__(self, address: ChecksumAddress | None = None, abi=Any) -> None: self.abi = abi # TODO: make this better, shouldn't initialize to the zero address, but the Contract's init # function requires an address. - self.address = ( - address - if address - else cast( - ChecksumAddress, "0x0000000000000000000000000000000000000000" - ) - ) + self.address = address if address else cast(ChecksumAddress, "0x0000000000000000000000000000000000000000") try: # Initialize parent Contract class diff --git a/lib/hypertypes/hypertypes/IHyperdriveTypes.py b/lib/hypertypes/hypertypes/IHyperdriveTypes.py index 36641307fc..4a6be15ac3 100644 --- a/lib/hypertypes/hypertypes/IHyperdriveTypes.py +++ b/lib/hypertypes/hypertypes/IHyperdriveTypes.py @@ -200,9 +200,7 @@ class WithdrawPool: anonymous=False, inputs=[ ABIEventParams(indexed=True, name="provider", type="address"), - ABIEventParams( - indexed=False, name="withdrawalShareAmount", type="uint256" - ), + ABIEventParams(indexed=False, name="withdrawalShareAmount", type="uint256"), ABIEventParams(indexed=False, name="baseAmount", type="uint256"), ], name="RedeemWithdrawalShares", @@ -215,9 +213,7 @@ class WithdrawPool: ABIEventParams(indexed=True, name="provider", type="address"), ABIEventParams(indexed=False, name="lpAmount", type="uint256"), ABIEventParams(indexed=False, name="baseAmount", type="uint256"), - ABIEventParams( - indexed=False, name="withdrawalShareAmount", type="uint256" - ), + ABIEventParams(indexed=False, name="withdrawalShareAmount", type="uint256"), ], name="RemoveLiquidity", type="event", diff --git a/lib/hypertypes/hypertypes/MockERC4626Contract.py b/lib/hypertypes/hypertypes/MockERC4626Contract.py index 011d922a63..35a6aec9e4 100644 --- a/lib/hypertypes/hypertypes/MockERC4626Contract.py +++ b/lib/hypertypes/hypertypes/MockERC4626Contract.py @@ -36,9 +36,7 @@ class MockERC4626AllowanceContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, arg1: str, arg2: str - ) -> "MockERC4626AllowanceContractFunction": + def __call__(self, arg1: str, arg2: str) -> "MockERC4626AllowanceContractFunction": super().__call__() return self @@ -52,9 +50,7 @@ class MockERC4626ApproveContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, spender: str, amount: int - ) -> "MockERC4626ApproveContractFunction": + def __call__(self, spender: str, amount: int) -> "MockERC4626ApproveContractFunction": super().__call__(spender, amount) return self @@ -110,9 +106,7 @@ class MockERC4626CanCallContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, user: str, target: str, functionSig: bytes - ) -> "MockERC4626CanCallContractFunction": + def __call__(self, user: str, target: str, functionSig: bytes) -> "MockERC4626CanCallContractFunction": super().__call__(user, target, functionSig) return self @@ -126,9 +120,7 @@ class MockERC4626ConvertToAssetsContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, shares: int - ) -> "MockERC4626ConvertToAssetsContractFunction": + def __call__(self, shares: int) -> "MockERC4626ConvertToAssetsContractFunction": super().__call__(shares) return self @@ -142,9 +134,7 @@ class MockERC4626ConvertToSharesContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, assets: int - ) -> "MockERC4626ConvertToSharesContractFunction": + def __call__(self, assets: int) -> "MockERC4626ConvertToSharesContractFunction": super().__call__(assets) return self @@ -172,9 +162,7 @@ class MockERC4626DepositContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, _assets: int, _receiver: str - ) -> "MockERC4626DepositContractFunction": + def __call__(self, _assets: int, _receiver: str) -> "MockERC4626DepositContractFunction": super().__call__(_assets, _receiver) return self @@ -188,9 +176,7 @@ class MockERC4626DoesRoleHaveCapabilityContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, role: int, functionSig: bytes - ) -> "MockERC4626DoesRoleHaveCapabilityContractFunction": + def __call__(self, role: int, functionSig: bytes) -> "MockERC4626DoesRoleHaveCapabilityContractFunction": super().__call__(role, functionSig) return self @@ -204,9 +190,7 @@ class MockERC4626DoesUserHaveRoleContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, user: str, role: int - ) -> "MockERC4626DoesUserHaveRoleContractFunction": + def __call__(self, user: str, role: int) -> "MockERC4626DoesUserHaveRoleContractFunction": super().__call__(user, role) return self @@ -234,9 +218,7 @@ class MockERC4626GetRolesWithCapabilityContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, arg1: bytes - ) -> "MockERC4626GetRolesWithCapabilityContractFunction": + def __call__(self, arg1: bytes) -> "MockERC4626GetRolesWithCapabilityContractFunction": super().__call__() return self @@ -250,9 +232,7 @@ class MockERC4626GetTargetCustomAuthorityContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, arg1: str - ) -> "MockERC4626GetTargetCustomAuthorityContractFunction": + def __call__(self, arg1: str) -> "MockERC4626GetTargetCustomAuthorityContractFunction": super().__call__() return self @@ -280,9 +260,7 @@ class MockERC4626IsCapabilityPublicContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, arg1: bytes - ) -> "MockERC4626IsCapabilityPublicContractFunction": + def __call__(self, arg1: bytes) -> "MockERC4626IsCapabilityPublicContractFunction": super().__call__() return self @@ -352,9 +330,7 @@ class MockERC4626MintContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, _shares: int, _receiver: str - ) -> "MockERC4626MintContractFunction": + def __call__(self, _shares: int, _receiver: str) -> "MockERC4626MintContractFunction": super().__call__(_shares, _receiver) return self @@ -433,9 +409,7 @@ class MockERC4626PreviewDepositContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, assets: int - ) -> "MockERC4626PreviewDepositContractFunction": + def __call__(self, assets: int) -> "MockERC4626PreviewDepositContractFunction": super().__call__(assets) return self @@ -463,9 +437,7 @@ class MockERC4626PreviewRedeemContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, shares: int - ) -> "MockERC4626PreviewRedeemContractFunction": + def __call__(self, shares: int) -> "MockERC4626PreviewRedeemContractFunction": super().__call__(shares) return self @@ -479,9 +451,7 @@ class MockERC4626PreviewWithdrawContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, assets: int - ) -> "MockERC4626PreviewWithdrawContractFunction": + def __call__(self, assets: int) -> "MockERC4626PreviewWithdrawContractFunction": super().__call__(assets) return self @@ -495,9 +465,7 @@ class MockERC4626RedeemContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, _shares: int, _receiver: str, _owner: str - ) -> "MockERC4626RedeemContractFunction": + def __call__(self, _shares: int, _receiver: str, _owner: str) -> "MockERC4626RedeemContractFunction": super().__call__(_shares, _receiver, _owner) return self @@ -511,9 +479,7 @@ class MockERC4626SetAuthorityContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, newAuthority: str - ) -> "MockERC4626SetAuthorityContractFunction": + def __call__(self, newAuthority: str) -> "MockERC4626SetAuthorityContractFunction": super().__call__(newAuthority) return self @@ -527,9 +493,7 @@ class MockERC4626SetPublicCapabilityContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, functionSig: bytes, enabled: bool - ) -> "MockERC4626SetPublicCapabilityContractFunction": + def __call__(self, functionSig: bytes, enabled: bool) -> "MockERC4626SetPublicCapabilityContractFunction": super().__call__(functionSig, enabled) return self @@ -557,9 +521,7 @@ class MockERC4626SetRoleCapabilityContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, role: int, functionSig: bytes, enabled: bool - ) -> "MockERC4626SetRoleCapabilityContractFunction": + def __call__(self, role: int, functionSig: bytes, enabled: bool) -> "MockERC4626SetRoleCapabilityContractFunction": super().__call__(role, functionSig, enabled) return self @@ -573,9 +535,7 @@ class MockERC4626SetTargetCustomAuthorityContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, target: str, customAuthority: str - ) -> "MockERC4626SetTargetCustomAuthorityContractFunction": + def __call__(self, target: str, customAuthority: str) -> "MockERC4626SetTargetCustomAuthorityContractFunction": super().__call__(target, customAuthority) return self @@ -589,9 +549,7 @@ class MockERC4626SetUserRoleContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, user: str, role: int, enabled: bool - ) -> "MockERC4626SetUserRoleContractFunction": + def __call__(self, user: str, role: int, enabled: bool) -> "MockERC4626SetUserRoleContractFunction": super().__call__(user, role, enabled) return self @@ -647,9 +605,7 @@ class MockERC4626TransferContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, to: str, amount: int - ) -> "MockERC4626TransferContractFunction": + def __call__(self, to: str, amount: int) -> "MockERC4626TransferContractFunction": super().__call__(to, amount) return self @@ -663,9 +619,7 @@ class MockERC4626TransferFromContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, _from: str, to: str, amount: int - ) -> "MockERC4626TransferFromContractFunction": + def __call__(self, _from: str, to: str, amount: int) -> "MockERC4626TransferFromContractFunction": super().__call__(_from, to, amount) return self @@ -679,9 +633,7 @@ class MockERC4626TransferOwnershipContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, newOwner: str - ) -> "MockERC4626TransferOwnershipContractFunction": + def __call__(self, newOwner: str) -> "MockERC4626TransferOwnershipContractFunction": super().__call__(newOwner) return self @@ -695,9 +647,7 @@ class MockERC4626WithdrawContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ - def __call__( - self, _assets: int, _receiver: str, _owner: str - ) -> "MockERC4626WithdrawContractFunction": + def __call__(self, _assets: int, _receiver: str, _owner: str) -> "MockERC4626WithdrawContractFunction": super().__call__(_assets, _receiver, _owner) return self @@ -806,13 +756,7 @@ def __init__(self, address: ChecksumAddress | None = None, abi=Any) -> None: self.abi = abi # TODO: make this better, shouldn't initialize to the zero address, but the Contract's init # function requires an address. - self.address = ( - address - if address - else cast( - ChecksumAddress, "0x0000000000000000000000000000000000000000" - ) - ) + self.address = address if address else cast(ChecksumAddress, "0x0000000000000000000000000000000000000000") try: # Initialize parent Contract class