@gooddollar/goodprotocol 2.0.25-beta.3 → 2.0.25-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  2. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  3. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  4. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  5. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  6. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  7. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  8. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  9. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  10. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  11. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  12. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  13. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  14. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  15. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  16. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  17. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  18. package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +1 -1
  19. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  20. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +1 -1
  21. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  22. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  23. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  24. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  25. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  26. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  27. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  28. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  29. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  30. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +1 -1
  31. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  32. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +1 -1
  33. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  34. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  35. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  36. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
  37. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +1 -1
  38. package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.dbg.json +1 -1
  39. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +1 -1
  40. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  41. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  42. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  43. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  44. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +1 -1
  45. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.dbg.json +1 -1
  46. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  47. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +1 -1
  48. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.json +2 -2
  49. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  50. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
  51. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
  52. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
  53. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  54. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.dbg.json +1 -1
  55. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  56. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +1 -1
  57. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
  58. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
  59. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
  60. package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.dbg.json +1 -1
  61. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
  62. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  63. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
  64. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  65. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.dbg.json +1 -1
  66. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  67. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  68. package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +1 -1
  69. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +1 -1
  70. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
  71. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  72. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  73. package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.dbg.json +1 -1
  74. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  75. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
  76. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  77. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  78. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  79. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  80. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  81. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  82. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  83. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  84. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  85. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  86. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  87. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  88. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  89. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  90. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
  91. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  92. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  93. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  94. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  95. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  96. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  97. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  98. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
  99. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
  100. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
  101. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  102. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  103. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  104. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  105. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  106. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  107. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  108. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  109. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  110. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  111. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
  112. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
  113. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +1 -1
  114. package/artifacts/contracts/token/ERC677.sol/ERC677.dbg.json +1 -1
  115. package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.dbg.json +1 -1
  116. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.dbg.json +1 -1
  117. package/artifacts/contracts/token/IFeesFormula.sol/IFeesFormula.dbg.json +1 -1
  118. package/artifacts/contracts/token/MultichainFeeFormula.sol/MultichainFeeFormula.dbg.json +1 -1
  119. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.dbg.json +1 -1
  120. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.dbg.json +1 -1
  121. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.dbg.json +1 -1
  122. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.dbg.json +1 -1
  123. package/artifacts/contracts/token/superfluid/ISuperToken.sol/ISuperToken.dbg.json +1 -1
  124. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.dbg.json +1 -1
  125. package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.dbg.json +1 -1
  126. package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.dbg.json +1 -1
  127. package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.dbg.json +1 -1
  128. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.dbg.json +1 -1
  129. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.dbg.json +1 -1
  130. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.dbg.json +1 -1
  131. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  132. package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.dbg.json +1 -1
  133. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
  134. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.dbg.json +1 -1
  135. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  136. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  137. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.dbg.json +1 -1
  138. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.dbg.json +1 -1
  139. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.dbg.json +1 -1
  140. package/artifacts/contracts/utils/BuyGDClone.sol/DonateGDClone.dbg.json +1 -1
  141. package/artifacts/contracts/utils/BuyGDClone.sol/IQuoterV2.dbg.json +1 -1
  142. package/artifacts/contracts/utils/BuyGDClone.sol/ISwapRouter.dbg.json +1 -1
  143. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  144. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  145. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  146. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  147. package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.dbg.json +1 -1
  148. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
  149. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
  150. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
  151. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
  152. package/artifacts/contracts/utils/IdentityFix.sol/IdentityFix.dbg.json +1 -1
  153. package/artifacts/contracts/utils/MultiCall.sol/Multicall.dbg.json +1 -1
  154. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
  155. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  156. package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.dbg.json +1 -1
  157. package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.dbg.json +1 -1
  158. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  159. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  160. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  161. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  162. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  163. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  164. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  165. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  166. package/contracts/invite/InvitesV2.sol +41 -63
  167. package/package.json +1 -1
  168. package/test/invite/InvitesV2.test.ts +26 -0
  169. package/types/factories/contracts/invite/InvitesV2__factory.ts +1 -1
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
3
+ "buildInfo": "../../../build-info/6bd724182020d2122aff99fe6c1566a7.json"
4
4
  }
@@ -150,10 +150,10 @@ contract InvitesV2 is DAOUpgradeableContract {
150
150
 
151
151
  /** support special campaign code without inviter */
152
152
  if (_inviterCode == campaignCode && campaignCode != 0x0) {
153
- stats.totalInvited += 1;
154
153
  user.bountyAtJoin = levels[0].bounty;
155
- _bountyForCampaign(msg.sender);
156
- } else if (canCollectBountyFor(msg.sender)) {
154
+ }
155
+
156
+ if (canCollectBountyFor(msg.sender)) {
157
157
  _bountyFor(msg.sender, true);
158
158
  }
159
159
  emit InviteeJoined(inviter, msg.sender);
@@ -174,19 +174,13 @@ contract InvitesV2 is DAOUpgradeableContract {
174
174
 
175
175
  function canCollectBountyFor(address _invitee) public view returns (bool) {
176
176
  address invitedBy = users[_invitee].invitedBy;
177
- uint256 daysToComplete = levels[users[invitedBy].level].daysToComplete;
178
- bool isLevelExpired = levelExpirationEnabled == true &&
179
- daysToComplete > 0 &&
180
- daysToComplete <
181
- (users[_invitee].joinedAt - users[invitedBy].levelStarted) / 1 days;
182
177
 
183
178
  return
184
- invitedBy != address(0) &&
179
+ users[_invitee].bountyAtJoin > 0 &&
185
180
  !users[_invitee].bountyPaid &&
186
181
  getIdentity().isWhitelisted(_invitee) &&
187
- getIdentity().isWhitelisted(invitedBy) &&
188
- _whitelistedOnChainOrDefault(_invitee) == _chainId() &&
189
- isLevelExpired == false;
182
+ (invitedBy == address(0) || getIdentity().isWhitelisted(invitedBy)) &&
183
+ _whitelistedOnChainOrDefault(_invitee) == _chainId();
190
184
  }
191
185
 
192
186
  function getInvitees(
@@ -246,44 +240,51 @@ contract InvitesV2 is DAOUpgradeableContract {
246
240
  bool isSingleBounty
247
241
  ) internal returns (uint256 bounty) {
248
242
  address invitedBy = users[_invitee].invitedBy;
249
- uint256 joinedAt = users[_invitee].joinedAt;
250
- Level memory level = levels[users[invitedBy].level];
251
243
  uint256 bountyToPay = users[_invitee].bountyAtJoin;
244
+ bool earnedLevel = false;
252
245
 
253
- //hardcoded for users invited before the bountyAtJoin change
254
- if (bountyToPay == 0) {
255
- uint precision = 10 ** goodDollar.decimals();
256
- bountyToPay = joinedAt > 1687878272 ? 1000 * precision : 500 * precision;
257
- }
246
+ if (invitedBy != address(0)) {
247
+ uint256 joinedAt = users[_invitee].joinedAt;
248
+ Level memory level = levels[users[invitedBy].level];
249
+
250
+ //hardcoded for users invited before the bountyAtJoin change
251
+ if (bountyToPay == 0) {
252
+ uint precision = 10 ** goodDollar.decimals();
253
+ bountyToPay = joinedAt > 1687878272
254
+ ? 1000 * precision
255
+ : 500 * precision;
256
+ }
257
+
258
+ // if inviter level is now higher than when invitee joined or the base level has changed
259
+ // we give level bounty if it is higher otherwise the original bounty at the time the user registered
258
260
 
259
- // if inviter level is now higher than when invitee joined or the base level has changed
260
- // we give level bounty if it is higher otherwise the original bounty at the time the user registered
261
+ bountyToPay = level.bounty > bountyToPay ? level.bounty : bountyToPay;
261
262
 
262
- bountyToPay = level.bounty > bountyToPay ? level.bounty : bountyToPay;
263
+ bool isLevelExpired = level.daysToComplete > 0 &&
264
+ joinedAt > users[invitedBy].levelStarted && //prevent overflow in subtraction
265
+ level.daysToComplete <
266
+ (joinedAt - users[invitedBy].levelStarted) / 1 days; //how long after level started did invitee join
263
267
 
264
- bool isLevelExpired = level.daysToComplete > 0 &&
265
- joinedAt > users[invitedBy].levelStarted && //prevent overflow in subtraction
266
- level.daysToComplete <
267
- (joinedAt - users[invitedBy].levelStarted) / 1 days; //how long after level started did invitee join
268
+ users[invitedBy].totalApprovedInvites += 1;
269
+ users[invitedBy].totalEarned += bountyToPay;
270
+
271
+ if (
272
+ level.toNext > 0 &&
273
+ users[invitedBy].totalApprovedInvites >= level.toNext &&
274
+ isLevelExpired == false
275
+ ) {
276
+ users[invitedBy].level += 1;
277
+ users[invitedBy].levelStarted = block.timestamp;
278
+ earnedLevel = true;
279
+ }
280
+
281
+ if (isSingleBounty) goodDollar.transfer(invitedBy, bountyToPay);
282
+ }
268
283
 
269
284
  users[_invitee].bountyPaid = true;
270
- users[invitedBy].totalApprovedInvites += 1;
271
- users[invitedBy].totalEarned += bountyToPay;
272
285
  stats.totalApprovedInvites += 1;
273
286
  stats.totalBountiesPaid += bountyToPay;
274
287
 
275
- bool earnedLevel = false;
276
- if (
277
- level.toNext > 0 &&
278
- users[invitedBy].totalApprovedInvites >= level.toNext &&
279
- isLevelExpired == false
280
- ) {
281
- users[invitedBy].level += 1;
282
- users[invitedBy].levelStarted = block.timestamp;
283
- earnedLevel = true;
284
- }
285
-
286
- if (isSingleBounty) goodDollar.transfer(invitedBy, bountyToPay);
287
288
  goodDollar.transfer(_invitee, bountyToPay / 2); //pay invitee half the bounty
288
289
  emit InviterBounty(
289
290
  invitedBy,
@@ -296,29 +297,6 @@ contract InvitesV2 is DAOUpgradeableContract {
296
297
  return bountyToPay;
297
298
  }
298
299
 
299
- function _bountyForCampaign(
300
- address _invitee
301
- ) internal returns (uint256 bounty) {
302
- require(
303
- !users[_invitee].bountyPaid &&
304
- getIdentity().isWhitelisted(_invitee) &&
305
- _whitelistedOnChainOrDefault(_invitee) == _chainId(),
306
- "not eligble"
307
- );
308
-
309
- uint256 joinedAt = users[_invitee].joinedAt;
310
- uint256 bountyToPay = users[_invitee].bountyAtJoin;
311
-
312
- users[_invitee].bountyPaid = true;
313
- stats.totalApprovedInvites += 1;
314
- stats.totalBountiesPaid += bountyToPay;
315
-
316
- goodDollar.transfer(_invitee, bountyToPay); //pay invitee half the bounty
317
- emit InviterBounty(address(0), _invitee, bountyToPay, 0, false);
318
-
319
- return bountyToPay;
320
- }
321
-
322
300
  /**
323
301
  @dev collect bounties for invitees by msg.sender that are now whitelisted
324
302
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddollar/goodprotocol",
3
- "version": "2.0.25-beta.3",
3
+ "version": "2.0.25-beta.5",
4
4
  "description": "GoodDollar Protocol",
5
5
  "engines": {
6
6
  "node": ">=16.x"
@@ -354,7 +354,11 @@ describe("InvitesV2", () => {
354
354
  .connect(invitee1)
355
355
  .join(ethers.utils.hexZeroPad(invitee1.address, 32), ethers.utils.formatBytes32String("test"));
356
356
  const { events } = await tx.wait();
357
+
357
358
  const bountyEvent = events.find(_ => _.event === "InviterBounty");
359
+ const bounty = (await invites.levels(0)).bounty;
360
+
361
+ expect(await gd.balanceOf(invitee1.address)).eq(bounty.div(2));
358
362
  expect(bountyEvent).not.empty;
359
363
  });
360
364
 
@@ -377,6 +381,28 @@ describe("InvitesV2", () => {
377
381
  const bountyEvent2 = events2.find(_ => _.event === "InviterBounty");
378
382
  expect(bountyEvent2).not.undefined;
379
383
  });
384
+
385
+ it("should collect bounty with campaignCode after first join without being whitelisted", async () => {
386
+ await loadFixture(initialState);
387
+ await invites.setCampaignCode(ethers.utils.formatBytes32String("test"));
388
+
389
+ const tx = await invites
390
+ .connect(invitee1)
391
+ .join(ethers.utils.hexZeroPad(invitee1.address, 32), ethers.utils.formatBytes32String("test"));
392
+ const { events } = await tx.wait();
393
+ const bountyEvent = events.find(_ => _.event === "InviterBounty");
394
+ expect(bountyEvent).undefined;
395
+
396
+ await id.addWhitelistedWithDID(invitee1.address, Math.random() + "").catch(e => e);
397
+
398
+ expect(await invites.canCollectBountyFor(invitee1.address)).to.be.true;
399
+
400
+ const tx2 = await invites.connect(invitee1).bountyFor(invitee1.address);
401
+
402
+ const { events: events2 } = await tx2.wait();
403
+ const bountyEvent2 = events2.find(_ => _.event === "InviterBounty");
404
+ expect(bountyEvent2).not.undefined;
405
+ });
380
406
  });
381
407
 
382
408
  it("should end contract by owner", async () => {
@@ -654,7 +654,7 @@ const _abi = [
654
654
  ] as const;
655
655
 
656
656
  const _bytecode =
657
- "0x60a06040523060805234801561001457600080fd5b50608051612d5361004c600039600081816107ca0152818161080a015281816109eb01528181610a2b0152610aa70152612d536000f3fe6080604052600436106101685760003560e01c806302fb0c5e1461016d578063119e5bf3146101a35780631b3c90a8146101d057806321132aad146101e75780633659cfe61461020757806336afc6fa146102275780633e6326fc1461023c57806341155d5e1461025c5780634162169f1461028a5780634f1ef286146102aa57806352d1902d146102bd57806354fd4d50146102d25780635aef7de6146103045780635b419a65146103245780636d619ef8146103445780638da5cb5b14610364578063a1df6fd314610384578063a87430ba1461039e578063acec338a14610466578063af6346b014610486578063b2596a671461049b578063b6567cd5146104f2578063b9fb2d1814610512578063ba6f568014610532578063c350a1b514610568578063d80528ae14610588578063e1758bd8146105a7578063e951a3aa146105bc578063e9881a5e146105e9578063efbe1c1c14610609578063f14b86491461061e575b600080fd5b34801561017957600080fd5b50609e5461018e90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b3480156101af57600080fd5b50609e546101c3906001600160a01b031681565b60405161019a9190612625565b3480156101dc57600080fd5b506101e561063e565b005b3480156101f357600080fd5b506101e5610202366004612647565b610765565b34801561021357600080fd5b506101e5610222366004612679565b6107c0565b34801561023357600080fd5b506101c3610888565b34801561024857600080fd5b506067546101c3906001600160a01b031681565b34801561026857600080fd5b5061027c610277366004612679565b610914565b60405190815260200161019a565b34801561029657600080fd5b506065546101c3906001600160a01b031681565b6101e56102b83660046126ac565b6109e1565b3480156102c957600080fd5b5061027c610a9a565b3480156102de57600080fd5b506040805180820182526003815262322e3360e81b6020820152905161019a9190612793565b34801561031057600080fd5b506066546101c3906001600160a01b031681565b34801561033057600080fd5b506101e561033f3660046127c6565b610b48565b34801561035057600080fd5b5061018e61035f366004612679565b610ec4565b34801561037057600080fd5b50609d546101c3906001600160a01b031681565b34801561039057600080fd5b5060a75461018e9060ff1681565b3480156103aa57600080fd5b506104126103b9366004612679565b609b60205260009081526040902080546001820154600283015460058401546006850154600786015460088701546009880154600a909801546001600160a01b0390971697959660ff9095169593949293919290919089565b604080516001600160a01b03909a168a5260208a0198909852951515968801969096526060870193909352608086019190915260a085015260c084015260e08301919091526101008201526101200161019a565b34801561047257600080fd5b506101e5610481366004612647565b6110b5565b34801561049257600080fd5b506101e5611112565b3480156104a757600080fd5b506104d76104b63660046127e8565b609c6020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161019a565b3480156104fe57600080fd5b5061027c61050d366004612679565b611315565b34801561051e57600080fd5b506101e561052d366004612801565b6113a7565b34801561053e57600080fd5b506101c361054d3660046127e8565b609a602052600090815260409020546001600160a01b031681565b34801561057457600080fd5b506101e5610583366004612833565b611406565b34801561059457600080fd5b50609f5460a05460a1546104d792919083565b3480156105b357600080fd5b506101c3611524565b3480156105c857600080fd5b506105dc6105d7366004612679565b611553565b60405161019a9190612875565b3480156105f557600080fd5b506105dc610604366004612679565b61173e565b34801561061557600080fd5b506101e56117b7565b34801561062a57600080fd5b506101e56106393660046127e8565b611945565b60675460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa1580156106a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c591906128c2565b606580546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa15801561071f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074391906128c2565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b609d546001600160a01b031633148061078857506066546001600160a01b031633145b6107ad5760405162461bcd60e51b81526004016107a4906128df565b60405180910390fd5b60a7805460ff1916911515919091179055565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036108085760405162461bcd60e51b81526004016107a49061292b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661083a611989565b6001600160a01b0316146108605760405162461bcd60e51b81526004016107a490612965565b610869816119a5565b60408051600080825260208201909252610885918391906119e4565b50565b60675460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac1906064015b602060405180830381865afa1580156108eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090f91906128c2565b905090565b6001600160a01b0381166000908152609b602090815260408083206004018054825181850281018501909352808352849383018282801561097e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610960575b505050505090506000805b82518110156109d9576109b48382815181106109a7576109a761299f565b6020026020010151610ec4565b156109c757816109c3816129cb565b9250505b806109d1816129cb565b915050610989565b509392505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a295760405162461bcd60e51b81526004016107a49061292b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a5b611989565b6001600160a01b031614610a815760405162461bcd60e51b81526004016107a490612965565b610a8a826119a5565b610a96828260016119e4565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b355760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b60648201526084016107a4565b50600080516020612cd783398151915290565b609e54600160a01b900460ff16610b715760405162461bcd60e51b81526004016107a4906129e4565b6000828152609a60205260409020546001600160a01b03161580610bab57506000828152609a60205260409020546001600160a01b031633145b80610bbe57506001600160a01b03821633145b610c075760405162461bcd60e51b815260206004820152601a602482015279696e7669746520636f646520616c726561647920696e2075736560301b60448201526064016107a4565b808203610c265760405162461bcd60e51b81526004016107a490612a08565b336000908152609b60209081526040808320848452609a9092529091205460028201546001600160a01b039091169060ff16158015610ca4575060018201541580610c8c575081546001600160a01b0316158015610c8c57506001600160a01b03811615155b80610ca4575060a85415801590610ca457508260a854145b610ce65760405162461bcd60e51b81526020600482015260136024820152721d5cd95c88185b1c9958591e481a9bda5b9959606a1b60448201526064016107a4565b6001820154600003610d255760018201849055426006830181905560098301556000848152609a6020526040902080546001600160a01b031916331790555b6001600160a01b03811615610e0e57336001600160a01b03821603610d5c5760405162461bcd60e51b81526004016107a490612a08565b81546001600160a01b0382166001600160a01b0319918216811784556000908152609b6020908152604082206003810180546001818101835591855283852001805486163390811790915560049092018054808301825590855292842090920180549094161790925560a18054909190610dd7908490612a2d565b90915550506001600160a01b0381166000908152609b60209081526040808320600501548352609c909152902060010154600a8301555b60a85483148015610e20575060a85415155b15610e6d576001609f6002016000828254610e3b9190612a2d565b909155505060008052609c602052600080516020612c9783398151915254600a830155610e6733611b4f565b50610e88565b610e7633610ec4565b15610e8857610e86336001611d5d565b505b60405133906001600160a01b038316907fd8c638d8979e2ba5dba1f0d66246ee4b1c54b838f0e0a2b601365345eb23b05190600090a350505050565b6001600160a01b038082166000908152609b6020908152604080832054909316808352838320600501548352609c9091529181206002015460a754919291839060ff1615156001148015610f185750600082115b8015610f6357506001600160a01b038084166000908152609b60205260408082206006015492881682529020600901546201518091610f5691612a40565b610f609190612a53565b82105b90506001600160a01b03831615801590610f9957506001600160a01b0385166000908152609b602052604090206002015460ff16155b80156110145750610fa8610888565b6001600160a01b0316633af32abf866040518263ffffffff1660e01b8152600401610fd39190612625565b602060405180830381865afa158015610ff0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110149190612a75565b801561108f5750611023610888565b6001600160a01b0316633af32abf846040518263ffffffff1660e01b815260040161104e9190612625565b602060405180830381865afa15801561106b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108f9190612a75565b80156110a25750466110a0866121e9565b145b80156110ac575080155b95945050505050565b609d546001600160a01b03163314806110d857506066546001600160a01b031633145b6110f45760405162461bcd60e51b81526004016107a4906128df565b609e8054911515600160a01b0260ff60a01b19909216919091179055565b609e54600160a01b900460ff1661113b5760405162461bcd60e51b81526004016107a4906129e4565b336000908152609b6020526040812060040180549091905b8015611294576202d2a85a1061129457600083611171600184612a40565b815481106111815761118161299f565b6000918252602090912001546001600160a01b031690506111a181610ec4565b1561128157620493e05a10156111b75750611294565b6111c2816000611d5d565b6111cc9084612a2d565b845490935084906111df90600190612a40565b815481106111ef576111ef61299f565b6000918252602090912001546001600160a01b031684611210600185612a40565b815481106112205761122061299f565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508380548061125e5761125e612a92565b600082815260209020810160001990810180546001600160a01b03191690550190555b508061128c81612aa8565b915050611153565b508015610a9657609e5460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906112cd9033908590600401612abf565b6020604051808303816000875af11580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113109190612a75565b505050565b609e54600090600160a01b900460ff166113415760405162461bcd60e51b81526004016107a4906129e4565b61134a82610ec4565b6113965760405162461bcd60e51b815260206004820181905260248201527f75736572206e6f7420656c6c6967626c6520666f7220626f756e74792079657460448201526064016107a4565b6113a1826001611d5d565b92915050565b609d546001600160a01b03163314806113ca57506066546001600160a01b031633145b6113e65760405162461bcd60e51b81526004016107a4906128df565b6000938452609c6020526040909320918255600282019290925560010155565b600054610100900460ff16158080156114265750600054600160ff909116105b806114475750611435306122b3565b158015611447575060005460ff166001145b6114aa5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107a4565b6000805460ff1916600117905580156114cd576000805461ff0019166101001790555b6114d88484846122c2565b801561151e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60675460405163bf40fac160e01b81526000916001600160a01b03169063bf40fac1906108ce90600401612ad8565b6001600160a01b0381166000908152609b602090815260408083206004018054825181850281018501909352808352606094938301828280156115bf57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116115a1575b5050505050905060008060005b835181101561163957609b60008583815181106115eb576115eb61299f565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff166116275781611623816129cb565b9250505b80611631816129cb565b9150506115cc565b506000816001600160401b0381111561165457611654612696565b60405190808252806020026020018201604052801561167d578160200160208202803683370190505b50905060005b845181101561173457609b60008683815181106116a2576116a261299f565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff16611722578481815181106116e2576116e261299f565b60200260200101518285815181106116fc576116fc61299f565b6001600160a01b03909216602092830291909101909101528361171e816129cb565b9450505b8061172c816129cb565b915050611683565b5095945050505050565b6001600160a01b0381166000908152609b60209081526040918290206003018054835181840281018401909452808452606093928301828280156117ab57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161178d575b50505050509050919050565b609d546001600160a01b03163314806117da57506066546001600160a01b031633145b6117f65760405162461bcd60e51b81526004016107a4906128df565b609e54600160a01b900460ff1661181f5760405162461bcd60e51b81526004016107a4906129e4565b609e546040516370a0823160e01b81526000916001600160a01b0316906370a0823190611850903090600401612625565b602060405180830381865afa15801561186d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118919190612afc565b609e5460405163a9059cbb60e01b81529192506001600160a01b03169063a9059cbb906118c49033908590600401612abf565b6020604051808303816000875af11580156118e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119079190612a75565b5060405133904780156108fc02916000818181858888f19350505050158015611934573d6000803e3d6000fd5b5050609e805460ff60a01b19169055565b609d546001600160a01b031633148061196857506066546001600160a01b031633145b6119845760405162461bcd60e51b81526004016107a4906128df565b60a855565b600080516020612cd7833981519152546001600160a01b031690565b609d546001600160a01b03163314806119c857506066546001600160a01b031633145b6108855760405162461bcd60e51b81526004016107a4906128df565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611a1757611310836123d5565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611a71575060408051601f3d908101601f19168201909252611a6e91810190612afc565b60015b611ad45760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016107a4565b600080516020612cd78339815191528114611b435760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016107a4565b5061131083838361246f565b6001600160a01b0381166000908152609b602052604081206002015460ff16158015611bea5750611b7e610888565b6001600160a01b0316633af32abf836040518263ffffffff1660e01b8152600401611ba99190612625565b602060405180830381865afa158015611bc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bea9190612a75565b8015611bfd575046611bfb836121e9565b145b611c375760405162461bcd60e51b815260206004820152600b60248201526a6e6f7420656c6967626c6560a81b60448201526064016107a4565b6001600160a01b0382166000908152609b602052604081206009810154600a8201546002909201805460ff19166001908117909155609f805492949192909190611c82908490612a2d565b909155505060a08054829190600090611c9c908490612a2d565b9091555050609e5460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90611cd39087908590600401612abf565b6020604051808303816000875af1158015611cf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d169190612a75565b50836001600160a01b031660006001600160a01b0316600080516020612c7783398151915283600080604051611d4e93929190612b15565b60405180910390a39392505050565b6001600160a01b038281166000908152609b60209081526040808320805460099091015494168084528184206005908101548552609c8452828520835160808101855281548152600182015495810195909552600281015485850152835160a081019485905295969295929487949093919260608501929160038501919082845b815481526020019060010190808311611dde57505050919092525050506001600160a01b0387166000908152609b60205260408120600a0154919250819003611ec857609e546040805163313ce56760e01b815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015611e6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8f9190612b2d565b611e9a90600a612c34565b905063649afa808411611eb857611eb3816101f4612c43565b611ec4565b611ec4816103e8612c43565b9150505b80826020015111611ed95780611edf565b81602001515b90506000808360400151118015611f1057506001600160a01b0385166000908152609b602052604090206006015484115b8015611f5357506001600160a01b0385166000908152609b60205260409020600601546201518090611f429086612a40565b611f4c9190612a53565b8360400151105b6001600160a01b03808a166000908152609b6020526040808220600201805460ff191660019081179091559289168252812060070180549394509192611f9a908490612a2d565b90915550506001600160a01b0385166000908152609b602052604081206008018054849290611fca908490612a2d565b9091555050609f805460019190600090611fe5908490612a2d565b909155505060a08054839190600090611fff908490612a2d565b9091555050825160009015801590612033575083516001600160a01b0387166000908152609b602052604090206007015410155b801561203d575081155b15612096576001600160a01b0386166000908152609b6020526040812060050180546001929061206e908490612a2d565b9091555050506001600160a01b0385166000908152609b602052604090204260069091015560015b871561211357609e5460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906120ce9089908790600401612abf565b6020604051808303816000875af11580156120ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121119190612a75565b505b609e546001600160a01b031663a9059cbb8a612130600287612a53565b6040518363ffffffff1660e01b815260040161214d929190612abf565b6020604051808303816000875af115801561216c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121909190612a75565b506001600160a01b038681166000818152609b602052604090819020600501549051928c1692600080516020612c77833981519152916121d4918891908790612b15565b60405180910390a35090979650505050505050565b60008060006121f6610888565b6001600160a01b0316846040516024016122109190612625565b60408051601f198184030181529181526020820180516001600160e01b031663a061922d60e01b179052516122459190612c5a565b600060405180830381855afa9150503d8060008114612280576040519150601f19603f3d011682016040523d82523d6000602084013e612285565b606091505b50909250905081151560000361229f57465b949350505050565b808060200190518101906122979190612afc565b6001600160a01b03163b151590565b6122cb83612494565b609d80546001600160a01b038084166001600160a01b031990921691909117909155609e805460ff60a01b1916600160a01b17905560008052609c602052600080516020612c9783398151915283905560675460405163bf40fac160e01b81527f21d5695aeb71770b4b420e85352fe1a012fa06ae92de02f7ee513765e0afa02392919091169063bf40fac19061236490600401612ad8565b602060405180830381865afa158015612381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a591906128c2565b609e80546001600160a01b0319166001600160a01b0392909216919091179055505060a7805460ff191690555050565b6123de816122b3565b6124405760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016107a4565b600080516020612cd783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612478836124b7565b6000825111806124855750805b156113105761151e83836124f7565b606780546001600160a01b0319166001600160a01b03831617905561088561063e565b6124c0816123d5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060612502836122b3565b61255d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016107a4565b600080846001600160a01b0316846040516125789190612c5a565b600060405180830381855af49150503d80600081146125b3576040519150601f19603f3d011682016040523d82523d6000602084013e6125b8565b606091505b50915091506110ac8282604051806060016040528060278152602001612cf760279139606083156125ea5750816125f4565b6125f483836125fb565b9392505050565b81511561260b5781518083602001fd5b8060405162461bcd60e51b81526004016107a49190612793565b6001600160a01b0391909116815260200190565b801515811461088557600080fd5b60006020828403121561265957600080fd5b81356125f481612639565b6001600160a01b038116811461088557600080fd5b60006020828403121561268b57600080fd5b81356125f481612664565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156126bf57600080fd5b82356126ca81612664565b915060208301356001600160401b03808211156126e657600080fd5b818501915085601f8301126126fa57600080fd5b81358181111561270c5761270c612696565b604051601f8201601f19908116603f0116810190838211818310171561273457612734612696565b8160405282815288602084870101111561274d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b8381101561278a578181015183820152602001612772565b50506000910152565b60208152600082518060208401526127b281604085016020870161276f565b601f01601f19169190910160400192915050565b600080604083850312156127d957600080fd5b50508035926020909101359150565b6000602082840312156127fa57600080fd5b5035919050565b6000806000806080858703121561281757600080fd5b5050823594602084013594506040840135936060013592509050565b60008060006060848603121561284857600080fd5b833561285381612664565b925060208401359150604084013561286a81612664565b809150509250925092565b6020808252825182820181905260009190848201906040850190845b818110156128b65783516001600160a01b031683529284019291840191600101612891565b50909695505050505050565b6000602082840312156128d457600080fd5b81516125f481612664565b6020808252602c908201527f4f6e6c79206f776e6572206f72206176617461722063616e20706572666f726d60408201526b103a3434b99030b1ba34b7b760a11b606082015260800190565b6020808252602c90820152600080516020612cb783398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020612cb783398151915260408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016129dd576129dd6129b5565b5060010190565b6020808252600a90820152696e6f742061637469766560b01b604082015260600190565b6020808252600b908201526a73656c6620696e7669746560a81b604082015260600190565b808201808211156113a1576113a16129b5565b818103818111156113a1576113a16129b5565b600082612a7057634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612a8757600080fd5b81516125f481612639565b634e487b7160e01b600052603160045260246000fd5b600081612ab757612ab76129b5565b506000190190565b6001600160a01b03929092168252602082015260400190565b6020808252600a908201526923a7a7a22227a62620a960b11b604082015260600190565b600060208284031215612b0e57600080fd5b5051919050565b92835260208301919091521515604082015260600190565b600060208284031215612b3f57600080fd5b815160ff811681146125f457600080fd5b600181815b80851115612b8b578160001904821115612b7157612b716129b5565b80851615612b7e57918102915b93841c9390800290612b55565b509250929050565b600082612ba2575060016113a1565b81612baf575060006113a1565b8160018114612bc55760028114612bcf57612beb565b60019150506113a1565b60ff841115612be057612be06129b5565b50506001821b6113a1565b5060208310610133831016604e8410600b8410161715612c0e575081810a6113a1565b612c188383612b50565b8060001904821115612c2c57612c2c6129b5565b029392505050565b60006125f460ff841683612b93565b80820281158282048414176113a1576113a16129b5565b60008251612c6c81846020870161276f565b919091019291505056fe6081787cd1bd02ab1576c52f03e8710d792d460e7881c3155d77d23893f3768b21d5695aeb71770b4b420e85352fe1a012fa06ae92de02f7ee513765e0afa02446756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122079ced96ca78134857105891fd633e2712a9548cdd7aacb7b7dcabced003ce12464736f6c63430008130033";
657
+ "0x60a06040523060805234801561001457600080fd5b50608051612a8861004c600039600081816107ca0152818161080a015281816109eb01528181610a2b0152610aa70152612a886000f3fe6080604052600436106101685760003560e01c806302fb0c5e1461016d578063119e5bf3146101a35780631b3c90a8146101d057806321132aad146101e75780633659cfe61461020757806336afc6fa146102275780633e6326fc1461023c57806341155d5e1461025c5780634162169f1461028a5780634f1ef286146102aa57806352d1902d146102bd57806354fd4d50146102d25780635aef7de6146103045780635b419a65146103245780636d619ef8146103445780638da5cb5b14610364578063a1df6fd314610384578063a87430ba1461039e578063acec338a14610466578063af6346b014610486578063b2596a671461049b578063b6567cd5146104f2578063b9fb2d1814610512578063ba6f568014610532578063c350a1b514610568578063d80528ae14610588578063e1758bd8146105a7578063e951a3aa146105bc578063e9881a5e146105e9578063efbe1c1c14610609578063f14b86491461061e575b600080fd5b34801561017957600080fd5b50609e5461018e90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b3480156101af57600080fd5b50609e546101c3906001600160a01b031681565b60405161019a9190612392565b3480156101dc57600080fd5b506101e561063e565b005b3480156101f357600080fd5b506101e56102023660046123b4565b610765565b34801561021357600080fd5b506101e56102223660046123e6565b6107c0565b34801561023357600080fd5b506101c3610888565b34801561024857600080fd5b506067546101c3906001600160a01b031681565b34801561026857600080fd5b5061027c6102773660046123e6565b610914565b60405190815260200161019a565b34801561029657600080fd5b506065546101c3906001600160a01b031681565b6101e56102b8366004612419565b6109e1565b3480156102c957600080fd5b5061027c610a9a565b3480156102de57600080fd5b506040805180820182526003815262322e3360e81b6020820152905161019a9190612500565b34801561031057600080fd5b506066546101c3906001600160a01b031681565b34801561033057600080fd5b506101e561033f366004612533565b610b48565b34801561035057600080fd5b5061018e61035f3660046123e6565b610e9b565b34801561037057600080fd5b50609d546101c3906001600160a01b031681565b34801561039057600080fd5b5060a75461018e9060ff1681565b3480156103aa57600080fd5b506104126103b93660046123e6565b609b60205260009081526040902080546001820154600283015460058401546006850154600786015460088701546009880154600a909801546001600160a01b0390971697959660ff9095169593949293919290919089565b604080516001600160a01b03909a168a5260208a0198909852951515968801969096526060870193909352608086019190915260a085015260c084015260e08301919091526101008201526101200161019a565b34801561047257600080fd5b506101e56104813660046123b4565b61100b565b34801561049257600080fd5b506101e5611068565b3480156104a757600080fd5b506104d76104b6366004612555565b609c6020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161019a565b3480156104fe57600080fd5b5061027c61050d3660046123e6565b61126b565b34801561051e57600080fd5b506101e561052d36600461256e565b6112fd565b34801561053e57600080fd5b506101c361054d366004612555565b609a602052600090815260409020546001600160a01b031681565b34801561057457600080fd5b506101e56105833660046125a0565b61135c565b34801561059457600080fd5b50609f5460a05460a1546104d792919083565b3480156105b357600080fd5b506101c361147a565b3480156105c857600080fd5b506105dc6105d73660046123e6565b6114a9565b60405161019a91906125e2565b3480156105f557600080fd5b506105dc6106043660046123e6565b611694565b34801561061557600080fd5b506101e561170d565b34801561062a57600080fd5b506101e5610639366004612555565b61189b565b60675460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa1580156106a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c5919061262f565b606580546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa15801561071f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610743919061262f565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b609d546001600160a01b031633148061078857506066546001600160a01b031633145b6107ad5760405162461bcd60e51b81526004016107a49061264c565b60405180910390fd5b60a7805460ff1916911515919091179055565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036108085760405162461bcd60e51b81526004016107a490612698565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661083a6118df565b6001600160a01b0316146108605760405162461bcd60e51b81526004016107a4906126d2565b610869816118fb565b604080516000808252602082019092526108859183919061193a565b50565b60675460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac1906064015b602060405180830381865afa1580156108eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090f919061262f565b905090565b6001600160a01b0381166000908152609b602090815260408083206004018054825181850281018501909352808352849383018282801561097e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610960575b505050505090506000805b82518110156109d9576109b48382815181106109a7576109a761270c565b6020026020010151610e9b565b156109c757816109c381612738565b9250505b806109d181612738565b915050610989565b509392505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a295760405162461bcd60e51b81526004016107a490612698565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a5b6118df565b6001600160a01b031614610a815760405162461bcd60e51b81526004016107a4906126d2565b610a8a826118fb565b610a968282600161193a565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b355760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b60648201526084016107a4565b50600080516020612a0c83398151915290565b609e54600160a01b900460ff16610b715760405162461bcd60e51b81526004016107a490612751565b6000828152609a60205260409020546001600160a01b03161580610bab57506000828152609a60205260409020546001600160a01b031633145b80610bbe57506001600160a01b03821633145b610c075760405162461bcd60e51b815260206004820152601a602482015279696e7669746520636f646520616c726561647920696e2075736560301b60448201526064016107a4565b808203610c265760405162461bcd60e51b81526004016107a490612775565b336000908152609b60209081526040808320848452609a9092529091205460028201546001600160a01b039091169060ff16158015610ca4575060018201541580610c8c575081546001600160a01b0316158015610c8c57506001600160a01b03811615155b80610ca4575060a85415801590610ca457508260a854145b610ce65760405162461bcd60e51b81526020600482015260136024820152721d5cd95c88185b1c9958591e481a9bda5b9959606a1b60448201526064016107a4565b6001820154600003610d255760018201849055426006830181905560098301556000848152609a6020526040902080546001600160a01b031916331790555b6001600160a01b03811615610e0e57336001600160a01b03821603610d5c5760405162461bcd60e51b81526004016107a490612775565b81546001600160a01b0382166001600160a01b0319918216811784556000908152609b6020908152604082206003810180546001818101835591855283852001805486163390811790915560049092018054808301825590855292842090920180549094161790925560a18054909190610dd790849061279a565b90915550506001600160a01b0381166000908152609b60209081526040808320600501548352609c909152902060010154600a8301555b60a85483148015610e20575060a85415155b15610e445760008052609c6020526000805160206129cc83398151915254600a8301555b610e4d33610e9b565b15610e5f57610e5d336001611aa5565b505b60405133906001600160a01b038316907fd8c638d8979e2ba5dba1f0d66246ee4b1c54b838f0e0a2b601365345eb23b05190600090a350505050565b6001600160a01b038082166000908152609b602052604081208054600a909101549192169015801590610eea57506001600160a01b0383166000908152609b602052604090206002015460ff16155b8015610f655750610ef9610888565b6001600160a01b0316633af32abf846040518263ffffffff1660e01b8152600401610f249190612392565b602060405180830381865afa158015610f41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6591906127ad565b8015610ff157506001600160a01b0381161580610ff15750610f85610888565b6001600160a01b0316633af32abf826040518263ffffffff1660e01b8152600401610fb09190612392565b602060405180830381865afa158015610fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff191906127ad565b801561100457504661100284611f54565b145b9392505050565b609d546001600160a01b031633148061102e57506066546001600160a01b031633145b61104a5760405162461bcd60e51b81526004016107a49061264c565b609e8054911515600160a01b0260ff60a01b19909216919091179055565b609e54600160a01b900460ff166110915760405162461bcd60e51b81526004016107a490612751565b336000908152609b6020526040812060040180549091905b80156111ea576202d2a85a106111ea576000836110c76001846127ca565b815481106110d7576110d761270c565b6000918252602090912001546001600160a01b031690506110f781610e9b565b156111d757620493e05a101561110d57506111ea565b611118816000611aa5565b611122908461279a565b84549093508490611135906001906127ca565b815481106111455761114561270c565b6000918252602090912001546001600160a01b0316846111666001856127ca565b815481106111765761117661270c565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550838054806111b4576111b46127dd565b600082815260209020810160001990810180546001600160a01b03191690550190555b50806111e2816127f3565b9150506110a9565b508015610a9657609e5460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90611223903390859060040161280a565b6020604051808303816000875af1158015611242573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126691906127ad565b505050565b609e54600090600160a01b900460ff166112975760405162461bcd60e51b81526004016107a490612751565b6112a082610e9b565b6112ec5760405162461bcd60e51b815260206004820181905260248201527f75736572206e6f7420656c6c6967626c6520666f7220626f756e74792079657460448201526064016107a4565b6112f7826001611aa5565b92915050565b609d546001600160a01b031633148061132057506066546001600160a01b031633145b61133c5760405162461bcd60e51b81526004016107a49061264c565b6000938452609c6020526040909320918255600282019290925560010155565b600054610100900460ff161580801561137c5750600054600160ff909116105b8061139d575061138b3061201e565b15801561139d575060005460ff166001145b6114005760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107a4565b6000805460ff191660011790558015611423576000805461ff0019166101001790555b61142e84848461202d565b8015611474576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60675460405163bf40fac160e01b81526000916001600160a01b03169063bf40fac1906108ce90600401612823565b6001600160a01b0381166000908152609b6020908152604080832060040180548251818502810185019093528083526060949383018282801561151557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114f7575b5050505050905060008060005b835181101561158f57609b60008583815181106115415761154161270c565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff1661157d578161157981612738565b9250505b8061158781612738565b915050611522565b506000816001600160401b038111156115aa576115aa612403565b6040519080825280602002602001820160405280156115d3578160200160208202803683370190505b50905060005b845181101561168a57609b60008683815181106115f8576115f861270c565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff16611678578481815181106116385761163861270c565b60200260200101518285815181106116525761165261270c565b6001600160a01b03909216602092830291909101909101528361167481612738565b9450505b8061168281612738565b9150506115d9565b5095945050505050565b6001600160a01b0381166000908152609b602090815260409182902060030180548351818402810184019094528084526060939283018282801561170157602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116e3575b50505050509050919050565b609d546001600160a01b031633148061173057506066546001600160a01b031633145b61174c5760405162461bcd60e51b81526004016107a49061264c565b609e54600160a01b900460ff166117755760405162461bcd60e51b81526004016107a490612751565b609e546040516370a0823160e01b81526000916001600160a01b0316906370a08231906117a6903090600401612392565b602060405180830381865afa1580156117c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e79190612847565b609e5460405163a9059cbb60e01b81529192506001600160a01b03169063a9059cbb9061181a903390859060040161280a565b6020604051808303816000875af1158015611839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185d91906127ad565b5060405133904780156108fc02916000818181858888f1935050505015801561188a573d6000803e3d6000fd5b5050609e805460ff60a01b19169055565b609d546001600160a01b03163314806118be57506066546001600160a01b031633145b6118da5760405162461bcd60e51b81526004016107a49061264c565b60a855565b600080516020612a0c833981519152546001600160a01b031690565b609d546001600160a01b031633148061191e57506066546001600160a01b031633145b6108855760405162461bcd60e51b81526004016107a49061264c565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561196d5761126683612140565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156119c7575060408051601f3d908101601f191682019092526119c491810190612847565b60015b611a2a5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016107a4565b600080516020612a0c8339815191528114611a995760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016107a4565b506112668383836121da565b6001600160a01b038083166000908152609b602052604081208054600a9091015491921690828215611e11576001600160a01b038681166000908152609b602090815260408083206009015493871683528083206005908101548452609c8352818420825160808101845281548152600182015494810194909452600281015484840152825160a081019384905290926060850192600385019182845b815481526020019060010190808311611b4257505050505081525050905083600003611c0f57609e546040805163313ce56760e01b815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015611bb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd69190612860565b611be190600a612967565b905063649afa808311611bff57611bfa816101f4612976565b611c0b565b611c0b816103e8612976565b9450505b83816020015111611c205783611c26565b80602001515b93506000808260400151118015611c5757506001600160a01b0386166000908152609b602052604090206006015483115b8015611c9a57506001600160a01b0386166000908152609b60205260409020600601546201518090611c8990856127ca565b611c93919061298d565b8260400151105b6001600160a01b0387166000908152609b602052604081206007018054929350600192909190611ccb90849061279a565b90915550506001600160a01b0386166000908152609b602052604081206008018054879290611cfb90849061279a565b9091555050815115801590611d2c575081516001600160a01b0387166000908152609b602052604090206007015410155b8015611d36575080155b15611d90576001600160a01b0386166000908152609b60205260408120600501805460019290611d6790849061279a565b90915550506001600160a01b0386166000908152609b6020526040902042600690910155600193505b8715611e0d57609e5460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90611dc8908990899060040161280a565b6020604051808303816000875af1158015611de7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0b91906127ad565b505b5050505b6001600160a01b0386166000908152609b60205260408120600201805460ff19166001908117909155609f805491929091611e4d90849061279a565b909155505060a08054839190600090611e6790849061279a565b9091555050609e546001600160a01b031663a9059cbb87611e8960028661298d565b6040518363ffffffff1660e01b8152600401611ea692919061280a565b6020604051808303816000875af1158015611ec5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee991906127ad565b506001600160a01b038381166000818152609b602090815260409182902060050154825187815291820152841515818301529051928916927f6081787cd1bd02ab1576c52f03e8710d792d460e7881c3155d77d23893f3768b9181900360600190a350949350505050565b6000806000611f61610888565b6001600160a01b031684604051602401611f7b9190612392565b60408051601f198184030181529181526020820180516001600160e01b031663a061922d60e01b17905251611fb091906129af565b600060405180830381855afa9150503d8060008114611feb576040519150601f19603f3d011682016040523d82523d6000602084013e611ff0565b606091505b50909250905081151560000361200a57465b949350505050565b808060200190518101906120029190612847565b6001600160a01b03163b151590565b612036836121ff565b609d80546001600160a01b038084166001600160a01b031990921691909117909155609e805460ff60a01b1916600160a01b17905560008052609c6020526000805160206129cc83398151915283905560675460405163bf40fac160e01b81527f21d5695aeb71770b4b420e85352fe1a012fa06ae92de02f7ee513765e0afa02392919091169063bf40fac1906120cf90600401612823565b602060405180830381865afa1580156120ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612110919061262f565b609e80546001600160a01b0319166001600160a01b0392909216919091179055505060a7805460ff191690555050565b6121498161201e565b6121ab5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016107a4565b600080516020612a0c83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6121e383612222565b6000825111806121f05750805b15611266576114748383612262565b606780546001600160a01b0319166001600160a01b03831617905561088561063e565b61222b81612140565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061226d8361201e565b6122c85760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016107a4565b600080846001600160a01b0316846040516122e391906129af565b600060405180830381855af49150503d806000811461231e576040519150601f19603f3d011682016040523d82523d6000602084013e612323565b606091505b509150915061234b8282604051806060016040528060278152602001612a2c60279139612354565b95945050505050565b60608315612363575081611004565b61100483838151156123785781518083602001fd5b8060405162461bcd60e51b81526004016107a49190612500565b6001600160a01b0391909116815260200190565b801515811461088557600080fd5b6000602082840312156123c657600080fd5b8135611004816123a6565b6001600160a01b038116811461088557600080fd5b6000602082840312156123f857600080fd5b8135611004816123d1565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561242c57600080fd5b8235612437816123d1565b915060208301356001600160401b038082111561245357600080fd5b818501915085601f83011261246757600080fd5b81358181111561247957612479612403565b604051601f8201601f19908116603f011681019083821181831017156124a1576124a1612403565b816040528281528860208487010111156124ba57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156124f75781810151838201526020016124df565b50506000910152565b602081526000825180602084015261251f8160408501602087016124dc565b601f01601f19169190910160400192915050565b6000806040838503121561254657600080fd5b50508035926020909101359150565b60006020828403121561256757600080fd5b5035919050565b6000806000806080858703121561258457600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000606084860312156125b557600080fd5b83356125c0816123d1565b92506020840135915060408401356125d7816123d1565b809150509250925092565b6020808252825182820181905260009190848201906040850190845b818110156126235783516001600160a01b0316835292840192918401916001016125fe565b50909695505050505050565b60006020828403121561264157600080fd5b8151611004816123d1565b6020808252602c908201527f4f6e6c79206f776e6572206f72206176617461722063616e20706572666f726d60408201526b103a3434b99030b1ba34b7b760a11b606082015260800190565b6020808252602c908201526000805160206129ec83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201526000805160206129ec83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161274a5761274a612722565b5060010190565b6020808252600a90820152696e6f742061637469766560b01b604082015260600190565b6020808252600b908201526a73656c6620696e7669746560a81b604082015260600190565b808201808211156112f7576112f7612722565b6000602082840312156127bf57600080fd5b8151611004816123a6565b818103818111156112f7576112f7612722565b634e487b7160e01b600052603160045260246000fd5b60008161280257612802612722565b506000190190565b6001600160a01b03929092168252602082015260400190565b6020808252600a908201526923a7a7a22227a62620a960b11b604082015260600190565b60006020828403121561285957600080fd5b5051919050565b60006020828403121561287257600080fd5b815160ff8116811461100457600080fd5b600181815b808511156128be5781600019048211156128a4576128a4612722565b808516156128b157918102915b93841c9390800290612888565b509250929050565b6000826128d5575060016112f7565b816128e2575060006112f7565b81600181146128f857600281146129025761291e565b60019150506112f7565b60ff84111561291357612913612722565b50506001821b6112f7565b5060208310610133831016604e8410600b8410161715612941575081810a6112f7565b61294b8383612883565b806000190482111561295f5761295f612722565b029392505050565b600061100460ff8416836128c6565b80820281158282048414176112f7576112f7612722565b6000826129aa57634e487b7160e01b600052601260045260246000fd5b500490565b600082516129c18184602087016124dc565b919091019291505056fe21d5695aeb71770b4b420e85352fe1a012fa06ae92de02f7ee513765e0afa02446756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212200ed9395c099ea41a99a1a30b20eb5d7f8b33a85579b39856a1a559933bc378a264736f6c63430008130033";
658
658
 
659
659
  type InvitesV2ConstructorParams =
660
660
  | [signer?: Signer]