@gooddollar/goodprotocol 2.0.3-beta.0 → 2.0.3

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 (177) hide show
  1. package/artifacts/abis/Faucet.min.json +1 -1
  2. package/artifacts/abis/FuseFaucetV2.min.json +1 -1
  3. package/artifacts/abis/GoodDollarMintBurnWrapper.min.json +1 -1
  4. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  5. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  6. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  7. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  8. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  9. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  10. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  11. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  12. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  13. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  14. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  15. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  16. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  17. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  18. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  19. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  20. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  21. package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +1 -1
  22. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  23. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +1 -1
  24. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  25. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  26. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  27. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  28. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  29. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  30. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  31. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  32. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  33. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +1 -1
  34. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.json +43 -17
  35. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  36. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +1 -1
  37. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.json +37 -17
  38. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  39. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  40. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  41. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
  42. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +1 -1
  43. package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.dbg.json +1 -1
  44. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +1 -1
  45. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  46. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  47. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  48. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  49. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +1 -1
  50. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.dbg.json +1 -1
  51. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  52. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +1 -1
  53. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  54. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.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/FeesFormularMock.sol/FeesFormulaMock.dbg.json +1 -1
  60. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  61. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
  62. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  63. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.dbg.json +1 -1
  64. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  65. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  66. package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +1 -1
  67. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +1 -1
  68. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
  69. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  70. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  71. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  72. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
  73. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  74. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  75. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  76. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  77. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  78. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  79. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  80. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  81. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  82. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  83. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  84. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  85. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  86. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  87. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
  88. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  89. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  90. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  91. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  92. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  93. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  94. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  95. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
  96. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.json +2 -2
  97. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
  98. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
  99. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  100. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  101. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  102. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  103. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  104. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  105. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  106. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  107. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  108. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  109. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
  110. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
  111. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +1 -1
  112. package/artifacts/contracts/token/ERC677.sol/ERC677.dbg.json +1 -1
  113. package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.dbg.json +1 -1
  114. package/artifacts/contracts/token/FeesFormula.sol/IFeesFormula.dbg.json +1 -1
  115. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.dbg.json +1 -1
  116. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.dbg.json +1 -1
  117. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.dbg.json +1 -1
  118. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.dbg.json +1 -1
  119. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.dbg.json +1 -1
  120. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.dbg.json +1 -1
  121. package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.dbg.json +1 -1
  122. package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.dbg.json +1 -1
  123. package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.dbg.json +1 -1
  124. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  125. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +2 -2
  126. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
  127. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.dbg.json +1 -1
  128. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  129. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  130. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.dbg.json +1 -1
  131. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  132. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  133. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  134. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  135. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
  136. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.json +2 -9
  137. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
  138. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
  139. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
  140. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.json +2 -2
  141. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
  142. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  143. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  144. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  145. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  146. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  147. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  148. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  149. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  150. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  151. package/contracts/fuseFaucet/Faucet.sol +19 -10
  152. package/contracts/fuseFaucet/FuseFaucetV2.sol +28 -16
  153. package/contracts/ubi/UBIScheme.sol +1 -1
  154. package/contracts/utils/GoodDollarMintBurnWrapper.sol +1 -19
  155. package/package.json +1 -1
  156. package/releases/deployment.json +11 -3
  157. package/scripts/multichain-deploy/2_helpers-deploy.ts +46 -21
  158. package/scripts/multichain-deploy/4_ubi-deploy.ts +19 -35
  159. package/scripts/multichain-deploy/helpers.ts +2 -2
  160. package/scripts/multichain-deploy/multichainWrapper-deploy.ts +7 -4
  161. package/scripts/upgradeToV3/v3-fuse-multichain.ts +117 -0
  162. package/scripts/upgrades/celo-defi-ubi-deploy.ts +1 -1
  163. package/scripts/upgrades/identity-upgrade.ts +20 -12
  164. package/test/faucet/Faucet.test.ts +4 -3
  165. package/test/faucet/FuseFaucet.test.ts +1 -1
  166. package/test/ubi/UBISchemeCycle.test.ts +20 -58
  167. package/test/utils/GoodDollarMintBurnWrapper.test.ts +66 -224
  168. package/types/Faucet.ts +61 -32
  169. package/types/FuseFaucetV2.ts +69 -32
  170. package/types/GoodDollarMintBurnWrapper.ts +0 -27
  171. package/types/factories/Faucet__factory.ts +42 -16
  172. package/types/factories/FuseFaucetV2__factory.ts +36 -16
  173. package/types/factories/FuseStakingV3__factory.ts +1 -1
  174. package/types/factories/GoodDollarMintBurnWrapper__factory.ts +1 -8
  175. package/types/factories/UBIScheme__factory.ts +1 -1
  176. package/scripts/multichain-deploy/v3-fix.ts +0 -120
  177. package/scripts/multichain-deploy/v3-upgrade.ts +0 -219
@@ -1243,13 +1243,6 @@ const _abi = [
1243
1243
  stateMutability: "view",
1244
1244
  type: "function",
1245
1245
  },
1246
- {
1247
- inputs: [],
1248
- name: "upgradeSuperGoodDollar",
1249
- outputs: [],
1250
- stateMutability: "nonpayable",
1251
- type: "function",
1252
- },
1253
1246
  {
1254
1247
  inputs: [
1255
1248
  {
@@ -1284,7 +1277,7 @@ const _abi = [
1284
1277
  ];
1285
1278
 
1286
1279
  const _bytecode =
1287
- "0x60a06040523060805234801561001457600080fd5b506080516142f561004c600039600081816110c601528181611106015281816113c701528181611407015261147f01526142f56000f3fe60806040526004361061025a5760003560e01c806301ffc9a71461025f57806306fdde03146102945780630e15561a146102b657806317eebf21146102eb5780631b3c90a814610319578063248a9ca31461033057806324ea54f4146103505780632f2ff15d146103725780632f4dae9f1461039257806330d643b5146103b2578063313ce567146103e657806336568abe1461040d5780633659cfe61461042d5780633e6326fc1461044d57806340c10f191461047b5780634162169f1461049b578063485cc955146104bc5780634f1ef286146104dc5780634f31e2b5146104ef57806352d1902d1461051057806353e691a2146105255780635955b5921461053a5780635ad411611461055c5780635aef7de61461057c5780635c9302c91461059d578063673ea086146105be57806370a08231146105e65780638da5cb5b146106065780639010d07c1461061b57806391d148541461063b578063956092121461065b57806395d89b41146107335780639ac25d08146107485780639dc29fac1461075d5780639e9e46661461077d578063a19ff6801461079d578063a217fddf14610748578063a2309ff8146107bf578063a4c0ed36146107d6578063abccdb52146107f6578063b32ad1a614610816578063b5bfddea14610838578063ca15c8731461086c578063ca4fb87c1461088c578063d5391393146108ae578063d547741f146108d0578063d56b73a4146108f0578063e1758bd814610995578063e47cbcbe146109aa578063ed56531a146109c1578063f1755339146109e1578063fc0c546a14610a01578063fe2e98b914610a22575b600080fd5b34801561026b57600080fd5b5061027f61027a36600461390d565b610a44565b60405190151581526020015b60405180910390f35b3480156102a057600080fd5b506102a9610a6f565b60405161028b919061395b565b3480156102c257600080fd5b50610169546102de90600160801b90046001600160801b031681565b60405161028b919061398e565b3480156102f757600080fd5b5061030b6103063660046139b7565b610ae7565b60405190815260200161028b565b34801561032557600080fd5b5061032e610e03565b005b34801561033c57600080fd5b5061030b61034b3660046139e3565b610f2d565b34801561035c57600080fd5b5061030b6000805160206142a083398151915281565b34801561037e57600080fd5b5061032e61038d3660046139fc565b610f42565b34801561039e57600080fd5b5061032e6103ad3660046139e3565b610f63565b3480156103be57600080fd5b5061030b7f7a05a596cb0ce7fdea8a1e1ec73be300bdb35097c944ce1897202f7a13122eb281565b3480156103f257600080fd5b506103fb610fd3565b60405160ff909116815260200161028b565b34801561041957600080fd5b5061032e6104283660046139fc565b611042565b34801561043957600080fd5b5061032e610448366004613a2c565b6110bc565b34801561045957600080fd5b506101305461046e906001600160a01b031681565b60405161028b9190613a49565b34801561048757600080fd5b5061027f6104963660046139b7565b611184565b3480156104a757600080fd5b5061012e5461046e906001600160a01b031681565b3480156104c857600080fd5b5061032e6104d7366004613a5d565b6111f8565b61032e6104ea366004613b4e565b6113bd565b3480156104fb57600080fd5b50610169546102de906001600160801b031681565b34801561051c57600080fd5b5061030b611472565b34801561053157600080fd5b5061032e611520565b34801561054657600080fd5b5061030b60008051602061428083398151915281565b34801561056857600080fd5b5061032e610577366004613bc4565b6115e1565b34801561058857600080fd5b5061012f5461046e906001600160a01b031681565b3480156105a957600080fd5b50610168546102de906001600160801b031681565b3480156105ca57600080fd5b50610168546102de90600160801b90046001600160801b031681565b3480156105f257600080fd5b5061030b610601366004613a2c565b611671565b34801561061257600080fd5b5061046e6116e4565b34801561062757600080fd5b5061046e610636366004613c45565b6116ec565b34801561064757600080fd5b5061027f6106563660046139fc565b61170b565b34801561066757600080fd5b506106da610676366004613a2c565b610163602052600090815260409020805460018201546002830154600384015460048501546005909501549394929391926001600160801b0380831693600160801b93849004821693838316930482169163ffffffff821691600160201b90041689565b60408051998a5260208a0198909852968801959095526001600160801b0393841660608801529183166080870152821660a0860152811660c085015263ffffffff90911660e0840152166101008201526101200161028b565b34801561073f57600080fd5b506102a9611736565b34801561075457600080fd5b5061030b600081565b34801561076957600080fd5b5061027f6107783660046139b7565b611781565b34801561078957600080fd5b5061027f6107983660046139e3565b61183c565b3480156107a957600080fd5b5061030b60008051602061421983398151915281565b3480156107cb57600080fd5b5061030b6101655481565b3480156107e257600080fd5b5061027f6107f1366004613c67565b611851565b34801561080257600080fd5b5061032e610811366004613cbf565b6119e9565b34801561082257600080fd5b5061030b60008051602061415483398151915281565b34801561084457600080fd5b5061030b7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f81565b34801561087857600080fd5b5061030b6108873660046139e3565b611a5e565b34801561089857600080fd5b5061030b6000805160206141f983398151915281565b3480156108ba57600080fd5b5061030b60008051602061426083398151915281565b3480156108dc57600080fd5b5061032e6108eb3660046139fc565b611a75565b3480156108fc57600080fd5b5061095661090b366004613a2c565b61016a60205260009081526040902080546001820154600283015460038401546004909401549293919290916001600160801b0380821692600160801b909204169063ffffffff1686565b604080519687526020870195909552938501929092526001600160801b03908116606085015216608083015263ffffffff1660a082015260c00161028b565b3480156109a157600080fd5b5061046e611a91565b3480156109b657600080fd5b5061030b6101645481565b3480156109cd57600080fd5b5061032e6109dc3660046139e3565b611b1a565b3480156109ed57600080fd5b5061032e6109fc366004613d2b565b611b7f565b348015610a0d57600080fd5b506101665461046e906001600160a01b031681565b348015610a2e57600080fd5b5061030b60008051602061417483398151915281565b60006001600160e01b03198216635a05180f60e01b1480610a695750610a6982611c32565b92915050565b61016654604080516306fdde0360e01b815290516060926001600160a01b0316916306fdde039160048083019260009291908290030181865afa158015610aba573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ae29190810190613d54565b905090565b60006000805160206141f9833981519152610b0181611c67565b600080516020614174833981519152610b198161183c565b158015610b2d5750610b2b600061183c565b155b610b525760405162461bcd60e51b8152600401610b4990613dc1565b60405180910390fd5b610b5b33611c71565b33600090815261016360205260408120600301546001600160801b031615610bbb573360009081526101636020526040902060030154610bad906001600160801b03600160801b820481169116613e08565b6001600160801b0316610bbd565b845b610166546040516370a0823160e01b8152919250600091610c3d916001600160a01b0316906370a0823190610bf6903090600401613a49565b602060405180830381865afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c379190613e28565b87611ee4565b90506000610c54610c4e8389613e41565b84611ee4565b9050610c608183613e54565b3360009081526101636020526040902060040180549197508791601090610c98908490600160801b90046001600160801b0316613e67565b92506101000a8154816001600160801b0302191690836001600160801b031602179055508561016960108282829054906101000a90046001600160801b0316610ce19190613e67565b92506101000a8154816001600160801b0302191690836001600160801b031602179055508061016960008282829054906101000a90046001600160801b0316610d2a9190613e67565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506000811115610d6157610d618882611efa565b8115610d7f5761016654610d7f906001600160a01b031689846122e0565b80600003610d8f57610d8f612336565b61016954604080513381526001600160a01b038b1660208201528082018a905260608101859052608081018490526001600160801b0390921660a0830152517fdea51570922020f525c1f30d8c1c57bd3cffe5632d70d13aaf8f8451388dbd959181900360c00190a1505050505092915050565b6101305460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa158015610e67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8b9190613e87565b61012e80546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa158015610ee6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0a9190613e87565b61012f80546001600160a01b0319166001600160a01b0392909216919091179055565b60009081526065602052604090206001015490565b610f4b82610f2d565b610f5481611c67565b610f5e8383612489565b505050565b604080518082019091526000805160206142a08339815191528152600060208201819052610f999082905b60200201513361170b565b80610faa5750610faa816001610f8e565b610fc65760405162461bcd60e51b8152600401610b4990613eba565b610fcf826124ab565b5050565b610166546040805163313ce56760e01b815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa15801561101e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae29190613ee0565b6001600160a01b03811633146110b25760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610b49565b610fcf8282612557565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036111045760405162461bcd60e51b8152600401610b4990613f03565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611136612579565b6001600160a01b03161461115c5760405162461bcd60e51b8152600401610b4990613f3d565b61116581612595565b604080516000808252602082019092526111819183919061259d565b50565b600060008051602061426083398151915261119e81611c67565b6111a733611c71565b6111b18484611efa565b7f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f03385856040516111e493929190613f77565b60405180910390a1600191505b5092915050565b600054610100900460ff16158080156112185750600054600160ff909116105b80611239575061122730612708565b158015611239575060005460ff166001145b61129c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b49565b6000805460ff1916600117905580156112bf576000805461ff0019166101001790555b6112c7612717565b6112d082612784565b6001600160a01b03831661131b5760405162461bcd60e51b81526020600482015260126024820152717a65726f2061646d696e206164647265737360701b6044820152606401610b49565b611323611a91565b61016680546001600160a01b0319166001600160a01b0392831617905561016880546001600160801b03166176a760881b17905561012f5461136891600091166127a8565b6113736000846127a8565b8015610f5e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036114055760405162461bcd60e51b8152600401610b4990613f03565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611437612579565b6001600160a01b03161461145d5760405162461bcd60e51b8152600401610b4990613f3d565b61146682612595565b610fcf8282600161259d565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461150d5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610b49565b506000805160206141b483398151915290565b600061152b81611c67565b61012f54730f5db7a64a6a64052693676ca898ec7f7a94ff4e9061155a906000906001600160a01b0316612557565b61156381612784565b61156b611a91565b61016680546001600160a01b0319166001600160a01b0392831617905561012f5461159991600091166127a8565b61016880546001600160801b03166107e960871b179055610fcf73f27ee99622c3c9b264583dacb2cce056e194494f60008080806af8277896582678ac0000006113886127b2565b60006115ec81611c67565b81156116275761160a6000805160206141f98339815191528a610f42565b6116226000805160206142608339815191528a611a75565b611657565b61163f6000805160206142608339815191528a610f42565b6116576000805160206141f98339815191528a611a75565b611666898989898989896127b2565b505050505050505050565b610166546040516370a0823160e01b81526000916001600160a01b0316906370a08231906116a3908590600401613a49565b602060405180830381865afa1580156116c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a699190613e28565b6000610ae281805b60008281526097602052604081206117049083612a54565b9392505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61016654604080516395d89b4160e01b815290516060926001600160a01b0316916395d89b419160048083019260009291908290030181865afa158015610aba573d6000803e3d6000fd5b600060008051602061426083398151915261179b81611c67565b6000805160206142808339815191526117b38161183c565b1580156117c757506117c5600061183c565b155b6117e35760405162461bcd60e51b8152600401610b4990613dc1565b6117ec33611c71565b6117f68585612a60565b7f6ab368f832c266c8eb942b84fbcaa20aedc24a699d2a05fae2568028733b1d0933868660405161182993929190613f77565b60405180910390a1506001949350505050565b600090815260c9602052604090205460ff1690565b610166546000906001600160a01b0316331461186c57600080fd5b600080838060200190518101906118839190613f9b565b91509150806000036118c65760405162461bcd60e51b815260206004820152600c60248201526b1e995c9bc818da185a5b925960a21b6044820152606401610b49565b6001600160a01b0382166118da57856118dc565b815b6101305460405163bf40fac160e01b815260206004820152601160248201527026aaa62a24a1a420a4a72fa927aaaa22a960791b60448201529193506001600160a01b03169063bf40fac190606401602060405180830381865afa158015611948573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196c9190613e87565b60405163241dc2df60e01b81523060048201526001600160a01b0384811660248301526044820188905260648201849052919091169063241dc2df90608401600060405180830381600087803b1580156119c557600080fd5b505af11580156119d9573d6000803e3d6000fd5b5060019998505050505050505050565b604080518082019091526000805160206142a08339815191528152600060208201819052611a18908290610f8e565b80611a295750611a29816001610f8e565b611a455760405162461bcd60e51b8152600401610b4990613eba565b611a54888888888888886127b2565b5050505050505050565b6000818152609760205260408120610a6990612d93565b611a7e82610f2d565b611a8781611c67565b610f5e8383612557565b6101305460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015611af6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae29190613e87565b604080518082019091526000805160206142a08339815191528152600060208201819052611b49908290610f8e565b80611b5a5750611b5a816001610f8e565b611b765760405162461bcd60e51b8152600401610b4990613eba565b610fcf82612d9d565b604080518082019091526000805160206142a08339815191528152600060208201819052611bae908290610f8e565b80611bbf5750611bbf816001610f8e565b611bdb5760405162461bcd60e51b8152600401610b4990613eba565b61016880546001600160801b03808516600160801b0291161790556040517f5497ec04d2873f2e2d376db2bb24e7e57851278c75fc1fcc9aab4db5fb70d22390611c2690849061398e565b60405180910390a15050565b60006001600160e01b03198216637965db0b60e01b1480610a6957506301ffc9a760e01b6001600160e01b0319831614610a69565b6111818133612e22565b6001600160a01b03811660009081526101636020526040812060040154611ca1906001600160801b031642613e41565b9050600061016660009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1d9190613e28565b61016854909150600160801b90046001600160801b03168210611e33576001600160a01b0383166000908152610163602052604090206005015461271090611d6b9063ffffffff1683613fc9565b611d759190613ffe565b6001600160a01b03841660009081526101636020908152604080832060030180546001600160801b0319166001600160801b03959095169490941790935561016a9052206004015461271090611dd19063ffffffff1683613fc9565b611ddb9190613ffe565b6001600160a01b038416600090815261016a6020908152604080832060030180546001600160801b03199081166001600160801b03968716179091556101639092529091206004018054909116429092169190911790555b611e3b612e7b565b6001600160a01b03831660009081526101636020526040902060050154610168546001600160801b03908116600160201b9092041614610f5e5750506001600160a01b0316600090815261016360208181526040808420600380820180546001600160801b0390811690915561016a855292909520909401805482169055610168549290915260059092018054600160201b600160a01b03191691909216600160201b02179055565b6000818310611ef35781611704565b5090919050565b600080516020614154833981519152611f128161183c565b158015611f265750611f24600061183c565b155b611f425760405162461bcd60e51b8152600401610b4990613dc1565b306001600160a01b03841603611f895760405162461bcd60e51b815260206004820152600c60248201526b36b4b73a103a379039b2b63360a11b6044820152606401610b49565b33600090815261016360205260409020541580611fb6575033600090815261016360205260409020548211155b611ff85760405162461bcd60e51b81526020600482015260136024820152721b5a5b9d195c881b585e08195e18d959591959606a1b6044820152606401610b49565b33600090815261016360205260409020600301546001600160801b0316158061206b5750336000908152610163602052604090206003015461204b908390600160801b90046001600160801b0316613e54565b33600090815261016360205260409020600301546001600160801b031610155b6120b35760405162461bcd60e51b81526020600482015260196024820152781b5a5b9d195c8819185a5b1e4818d85c08195e18d959591959603a1b6044820152606401610b49565b3360009081526101636020526040902060030180548391906010906120e9908490600160801b90046001600160801b0316613e67565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550816101636000336001600160a01b03166001600160a01b0316815260200190815260200160002060020160008282546121469190613e54565b909155505033600090815261016360205260409020600101541580612184575033600090815261016360205260409020600181015460029091015411155b6121a05760405162461bcd60e51b8152600401610b4990614012565b8161016560008282546121b39190613e54565b909155505033600090815261016a602052604090206002015482116122005733600090815261016a6020526040812060020180548492906121f5908490613e41565b909155506122159050565b33600090815261016a60205260408120600201555b61012e5461012f54604051633203f21960e11b8152600481018590526001600160a01b03868116602483015291821660448201526000929190911690636407e432906064016020604051808303816000875af1158015612279573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229d919061403f565b9050806122da5760405162461bcd60e51b815260206004820152600b60248201526a1b5a5b9d0819985a5b195960aa1b6044820152606401610b49565b50505050565b610f5e8363a9059cbb60e01b84846040516024016122ff92919061405c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612eab565b61016954610166546040516370a0823160e01b81526000926123c4926001600160801b03909116916001600160a01b03909116906370a082319061237e903090600401613a49565b602060405180830381865afa15801561239b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123bf9190613e28565b611ee4565b905080156111815761016980548291906000906123eb9084906001600160801b0316613e08565b92506101000a8154816001600160801b0302191690836001600160801b031602179055508061016560008282546124229190613e41565b909155505061016654604051630852cd8d60e31b8152600481018390526001600160a01b03909116906342966c6890602401600060405180830381600087803b15801561246e57600080fd5b505af1158015612482573d6000803e3d6000fd5b5050505050565b6124938282612f7d565b6000828152609760205260409020610f5e9082613003565b806124b58161183c565b806124c557506124c5600061183c565b61250f5760405162461bcd60e51b815260206004820152601b60248201527a14185d5cd8589b1950dbdb9d1c9bdb0e881b9bdd081c185d5cd959602a1b6044820152606401610b49565b600082815260c9602052604090819020805460ff19169055517fd05bfc2250abb0f8fd265a54c53a24359c5484af63cad2e4ce87c78ab751395a90611c269084815260200190565b6125618282613018565b6000828152609760205260409020610f5e908261307f565b6000805160206141b4833981519152546001600160a01b031690565b611181613094565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156125d057610f5e83613158565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561262a575060408051601f3d908101601f1916820190925261262791810190613e28565b60015b61268d5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610b49565b6000805160206141b483398151915281146126fc5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610b49565b50610f5e8383836131f2565b6001600160a01b03163b151590565b600054610100900460ff166127825760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610b49565b565b61013080546001600160a01b0319166001600160a01b038316179055611181610e03565b610fcf8282612489565b6001600160a01b03871660009081526101636020908152604080832061016a90925282206004820154919290916001600160801b03161515906128036000805160206141f98339815191528c61170b565b600185018b905589855560058501805463ffffffff191663ffffffff8b16908117909155600480870180546001600160801b031916426001600160801b031617905561016654604080516318160ddd60e01b81529051949550612710946001600160a01b03909216926318160ddd9282820192602092908290030181865afa158015612893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b79190613e28565b6128c19190613fc9565b6128cb9190614075565b8460030160006101000a8154816001600160801b0302191690836001600160801b031602179055506127108563ffffffff1661016660009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612951573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129759190613e28565b61297f9190613fc9565b6129899190614075565b6003840180546001600160801b0319166001600160801b03929092169190911790556001830187905585835560048301805463ffffffff191663ffffffff878116918217909255604080516001600160a01b038f168152602081018e90529081018c9052918a1660608301526080820189905260a0820188905260c082015281151560e08201528215156101008201527f58c3ceb7d4f068706ddc92911fae8701fac2c91c60bcc1b56ec7a6f56001aa5e906101200160405180910390a15050505050505050505050565b60006117048383613217565b600080516020614219833981519152612a788161183c565b158015612a8c5750612a8a600061183c565b155b612aa85760405162461bcd60e51b8152600401610b4990613dc1565b33600090815261016a60205260409020541580612ad5575033600090815261016a60205260409020548211155b612b1c5760405162461bcd60e51b81526020600482015260186024820152771b5a5b9d195c88189d5c9b881b585e08195e18d95959195960421b6044820152606401610b49565b33600090815261016a60205260409020600301546001600160801b03161580612b8f575033600090815261016a6020526040902060030154612b6f908390600160801b90046001600160801b0316613e54565b33600090815261016a60205260409020600301546001600160801b031610155b612bdb5760405162461bcd60e51b815260206004820152601e60248201527f6d696e746572206275726e206461696c792063617020657863656564656400006044820152606401610b49565b33600090815261016a602052604090206003018054839190601090612c11908490600160801b90046001600160801b0316613e67565b92506101000a8154816001600160801b0302191690836001600160801b031602179055508161016a6000336001600160a01b03166001600160a01b031681526020019081526020016000206002016000828254612c6e9190613e54565b909155505033600090815261016a60205260409020600101541580612cac575033600090815261016a60205260409020600181015460029091015411155b612cc85760405162461bcd60e51b8152600401610b4990614012565b816101655410612cf057816101656000828254612ce59190613e41565b90915550612cf79050565b6000610165555b33600090815261016360205260409020600201548211612d3f57336000908152610163602052604081206002018054849290612d34908490613e41565b90915550612d549050565b33600090815261016360205260408120600201555b306001600160a01b03841603612d7b5761016654610f5e906001600160a01b031683613241565b61016654610f5e906001600160a01b0316848461328e565b6000610a69825490565b80612da78161183c565b158015612dbb5750612db9600061183c565b155b612dd75760405162461bcd60e51b8152600401610b4990613dc1565b600082815260c9602052604090819020805460ff19166001179055517f0cb09dc71d57eeec2046f6854976717e4874a3cf2d6ddeddde337e5b6de6ba3190611c269084815260200190565b612e2c828261170b565b610fcf57612e39816132aa565b612e448360206132bc565b604051602001612e5592919061409b565b60408051601f198184030181529082905262461bcd60e51b8252610b499160040161395b565b612e886201518042613ffe565b61016880546001600160801b0319166001600160801b0392909216919091179055565b6000612f00826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166134579092919063ffffffff16565b805190915015610f5e5780806020019051810190612f1e919061403f565b610f5e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610b49565b612f87828261170b565b610fcf5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612fbf3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000611704836001600160a01b03841661346e565b613022828261170b565b15610fcf5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000611704836001600160a01b0384166134bd565b61012e5460408051632d77bef360e11b8152905133926001600160a01b031691635aef7de69160048083019260209291908290030181865afa1580156130de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131029190613e87565b6001600160a01b0316146127825760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f646044820152606401610b49565b61316181612708565b6131c35760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610b49565b6000805160206141b483398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6131fb836135b0565b6000825111806132085750805b15610f5e576122da83836135f0565b600082600001828154811061322e5761322e613ea4565b9060005260206000200154905092915050565b610fcf826342966c688360405160240161325d91815260200190565b6040516020818303038152906040529060e01b6020820180516001600160e01b0383818316178352505050506136e2565b610f5e836379cc6790848460405160240161325d92919061405c565b6060610a696001600160a01b03831660145b606060006132cb836002613fc9565b6132d6906002613e54565b6001600160401b038111156132ed576132ed613a8b565b6040519080825280601f01601f191660200182016040528015613317576020820181803683370190505b509050600360fc1b8160008151811061333257613332613ea4565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061336157613361613ea4565b60200101906001600160f81b031916908160001a9053506000613385846002613fc9565b613390906001613e54565b90505b6001811115613408576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106133c4576133c4613ea4565b1a60f81b8282815181106133da576133da613ea4565b60200101906001600160f81b031916908160001a90535060049490941c936134018161410a565b9050613393565b5083156117045760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610b49565b6060613466848460008561377c565b949350505050565b60008181526001830160205260408120546134b557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a69565b506000610a69565b600081815260018301602052604081205480156135a65760006134e1600183613e41565b85549091506000906134f590600190613e41565b905081811461355a57600086600001828154811061351557613515613ea4565b906000526020600020015490508087600001848154811061353857613538613ea4565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061356b5761356b614121565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a69565b6000915050610a69565b6135b981613158565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606135fb83612708565b6136565760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610b49565b600080846001600160a01b0316846040516136719190614137565b600060405180830381855af49150503d80600081146136ac576040519150601f19603f3d011682016040523d82523d6000602084013e6136b1565b606091505b50915091506136d9828260405180606001604052806027815260200161423960279139613857565b95945050505050565b6000613712826040518060600160405280602581526020016141d4602591396001600160a01b0386169190613457565b805190915015610f5e5780806020019051810190613730919061403f565b610f5e5760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e4f7065726174696f6e3a20646964206e6f742073756363656564006044820152606401610b49565b6060824710156137dd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610b49565b600080866001600160a01b031685876040516137f99190614137565b60006040518083038185875af1925050503d8060008114613836576040519150601f19603f3d011682016040523d82523d6000602084013e61383b565b606091505b509150915061384c87838387613870565b979650505050505050565b60608315613866575081611704565b61170483836138e3565b606083156138dd5782516000036138d65761388a85612708565b6138d65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b49565b5081613466565b61346683835b8151156138f35781518083602001fd5b8060405162461bcd60e51b8152600401610b49919061395b565b60006020828403121561391f57600080fd5b81356001600160e01b03198116811461170457600080fd5b60005b8381101561395257818101518382015260200161393a565b50506000910152565b602081526000825180602084015261397a816040850160208701613937565b601f01601f19169190910160400192915050565b6001600160801b0391909116815260200190565b6001600160a01b038116811461118157600080fd5b600080604083850312156139ca57600080fd5b82356139d5816139a2565b946020939093013593505050565b6000602082840312156139f557600080fd5b5035919050565b60008060408385031215613a0f57600080fd5b823591506020830135613a21816139a2565b809150509250929050565b600060208284031215613a3e57600080fd5b8135611704816139a2565b6001600160a01b0391909116815260200190565b60008060408385031215613a7057600080fd5b8235613a7b816139a2565b91506020830135613a21816139a2565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613ac957613ac9613a8b565b604052919050565b60006001600160401b03821115613aea57613aea613a8b565b50601f01601f191660200190565b600082601f830112613b0957600080fd5b8135613b1c613b1782613ad1565b613aa1565b818152846020838601011115613b3157600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215613b6157600080fd5b8235613b6c816139a2565b915060208301356001600160401b03811115613b8757600080fd5b613b9385828601613af8565b9150509250929050565b803563ffffffff81168114613bb157600080fd5b919050565b801515811461118157600080fd5b600080600080600080600080610100898b031215613be157600080fd5b8835613bec816139a2565b97506020890135965060408901359550613c0860608a01613b9d565b94506080890135935060a08901359250613c2460c08a01613b9d565b915060e0890135613c3481613bb6565b809150509295985092959890939650565b60008060408385031215613c5857600080fd5b50508035926020909101359150565b600080600060608486031215613c7c57600080fd5b8335613c87816139a2565b92506020840135915060408401356001600160401b03811115613ca957600080fd5b613cb586828701613af8565b9150509250925092565b600080600080600080600060e0888a031215613cda57600080fd5b8735613ce5816139a2565b96506020880135955060408801359450613d0160608901613b9d565b93506080880135925060a08801359150613d1d60c08901613b9d565b905092959891949750929550565b600060208284031215613d3d57600080fd5b81356001600160801b038116811461170457600080fd5b600060208284031215613d6657600080fd5b81516001600160401b03811115613d7c57600080fd5b8201601f81018413613d8d57600080fd5b8051613d9b613b1782613ad1565b818152856020838501011115613db057600080fd5b6136d9826020830160208601613937565b60208082526017908201527614185d5cd8589b1950dbdb9d1c9bdb0e881c185d5cd959604a1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6001600160801b038281168282160390808211156111f1576111f1613df2565b600060208284031215613e3a57600080fd5b5051919050565b81810381811115610a6957610a69613df2565b80820180821115610a6957610a69613df2565b6001600160801b038181168382160190808211156111f1576111f1613df2565b600060208284031215613e9957600080fd5b8151611704816139a2565b634e487b7160e01b600052603260045260246000fd5b6020808252600c908201526b726f6c65206d697373696e6760a01b604082015260600190565b600060208284031215613ef257600080fd5b815160ff8116811461170457600080fd5b6020808252602c9082015260008051602061419483398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c9082015260008051602061419483398151915260408201526b6163746976652070726f787960a01b606082015260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60008060408385031215613fae57600080fd5b8251613fb9816139a2565b6020939093015192949293505050565b6000816000190483118215151615613fe357613fe3613df2565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261400d5761400d613fe8565b500490565b6020808252601390820152721b5a5b9d195c8818d85c08195e18d959591959606a1b604082015260600190565b60006020828403121561405157600080fd5b815161170481613bb6565b6001600160a01b03929092168252602082015260400190565b60006001600160801b038381168061408f5761408f613fe8565b92169190910492915050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516140cd816017850160208801613937565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516140fe816028840160208801613937565b01602801949350505050565b60008161411957614119613df2565b506000190190565b634e487b7160e01b600052603160045260246000fd5b60008251614149818460208701613937565b919091019291505056feb2a18ae5d0b623b41098012c516d0bf4bef38c068c9e397da870c290888b19999604fa49b1cb3aa782c099225b9c340b6afeb802be5d4b3314ba27a14502cdfa46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546f6b656e4f7065726174696f6e3a206c6f772d6c6576656c2063616c6c206661696c65645407862f04286ebe607684514c14b7fffc750b6bf52ba44ea49569174845a5bd62d52416825983abd68b16e092b60c2eac31fd673bcce92494e063af530d9c30416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65649f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6b601d6a8ea5419a4251765936e52b2763485fede82d3c5dfd765cd67d30f4f2255435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a264697066735822122080fba124231a2b3040b17593b1b6f31533318c5ba4b4a2a90070bb60a841b13b64736f6c63430008100033";
1280
+ "0x60a06040523060805234801561001457600080fd5b5060805161421461004c600039600081816110a6015281816110e6015281816113a7015281816113e7015261145f01526142146000f3fe60806040526004361061024f5760003560e01c806301ffc9a71461025457806306fdde03146102895780630e15561a146102ab57806317eebf21146102e05780631b3c90a81461030e578063248a9ca31461032557806324ea54f4146103455780632f2ff15d146103675780632f4dae9f1461038757806330d643b5146103a7578063313ce567146103db57806336568abe146104025780633659cfe6146104225780633e6326fc1461044257806340c10f19146104705780634162169f14610490578063485cc955146104b15780634f1ef286146104d15780634f31e2b5146104e457806352d1902d146105055780635955b5921461051a5780635ad411611461053c5780635aef7de61461055c5780635c9302c91461057d578063673ea0861461059e57806370a08231146105c65780638da5cb5b146105e65780639010d07c146105fb57806391d148541461061b578063956092121461063b57806395d89b41146107135780639ac25d08146107285780639dc29fac1461073d5780639e9e46661461075d578063a19ff6801461077d578063a217fddf14610728578063a2309ff81461079f578063a4c0ed36146107b6578063abccdb52146107d6578063b32ad1a6146107f6578063b5bfddea14610818578063ca15c8731461084c578063ca4fb87c1461086c578063d53913931461088e578063d547741f146108b0578063d56b73a4146108d0578063e1758bd814610975578063e47cbcbe1461098a578063ed56531a146109a1578063f1755339146109c1578063fc0c546a146109e1578063fe2e98b914610a02575b600080fd5b34801561026057600080fd5b5061027461026f36600461382c565b610a24565b60405190151581526020015b60405180910390f35b34801561029557600080fd5b5061029e610a4f565b604051610280919061387a565b3480156102b757600080fd5b50610169546102d390600160801b90046001600160801b031681565b60405161028091906138ad565b3480156102ec57600080fd5b506103006102fb3660046138d6565b610ac7565b604051908152602001610280565b34801561031a57600080fd5b50610323610de3565b005b34801561033157600080fd5b50610300610340366004613902565b610f0d565b34801561035157600080fd5b506103006000805160206141bf83398151915281565b34801561037357600080fd5b5061032361038236600461391b565b610f22565b34801561039357600080fd5b506103236103a2366004613902565b610f43565b3480156103b357600080fd5b506103007f7a05a596cb0ce7fdea8a1e1ec73be300bdb35097c944ce1897202f7a13122eb281565b3480156103e757600080fd5b506103f0610fb3565b60405160ff9091168152602001610280565b34801561040e57600080fd5b5061032361041d36600461391b565b611022565b34801561042e57600080fd5b5061032361043d36600461394b565b61109c565b34801561044e57600080fd5b5061013054610463906001600160a01b031681565b6040516102809190613968565b34801561047c57600080fd5b5061027461048b3660046138d6565b611164565b34801561049c57600080fd5b5061012e54610463906001600160a01b031681565b3480156104bd57600080fd5b506103236104cc36600461397c565b6111d8565b6103236104df366004613a6d565b61139d565b3480156104f057600080fd5b50610169546102d3906001600160801b031681565b34801561051157600080fd5b50610300611452565b34801561052657600080fd5b5061030060008051602061419f83398151915281565b34801561054857600080fd5b50610323610557366004613ae3565b611500565b34801561056857600080fd5b5061012f54610463906001600160a01b031681565b34801561058957600080fd5b50610168546102d3906001600160801b031681565b3480156105aa57600080fd5b50610168546102d390600160801b90046001600160801b031681565b3480156105d257600080fd5b506103006105e136600461394b565b611590565b3480156105f257600080fd5b50610463611603565b34801561060757600080fd5b50610463610616366004613b64565b61160b565b34801561062757600080fd5b5061027461063636600461391b565b61162a565b34801561064757600080fd5b506106ba61065636600461394b565b610163602052600090815260409020805460018201546002830154600384015460048501546005909501549394929391926001600160801b0380831693600160801b93849004821693838316930482169163ffffffff821691600160201b90041689565b60408051998a5260208a0198909852968801959095526001600160801b0393841660608801529183166080870152821660a0860152811660c085015263ffffffff90911660e08401521661010082015261012001610280565b34801561071f57600080fd5b5061029e611655565b34801561073457600080fd5b50610300600081565b34801561074957600080fd5b506102746107583660046138d6565b6116a0565b34801561076957600080fd5b50610274610778366004613902565b61175b565b34801561078957600080fd5b5061030060008051602061413883398151915281565b3480156107ab57600080fd5b506103006101655481565b3480156107c257600080fd5b506102746107d1366004613b86565b611770565b3480156107e257600080fd5b506103236107f1366004613bde565b611908565b34801561080257600080fd5b5061030060008051602061407383398151915281565b34801561082457600080fd5b506103007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f81565b34801561085857600080fd5b50610300610867366004613902565b61197d565b34801561087857600080fd5b5061030060008051602061411883398151915281565b34801561089a57600080fd5b5061030060008051602061417f83398151915281565b3480156108bc57600080fd5b506103236108cb36600461391b565b611994565b3480156108dc57600080fd5b506109366108eb36600461394b565b61016a60205260009081526040902080546001820154600283015460038401546004909401549293919290916001600160801b0380821692600160801b909204169063ffffffff1686565b604080519687526020870195909552938501929092526001600160801b03908116606085015216608083015263ffffffff1660a082015260c001610280565b34801561098157600080fd5b506104636119b0565b34801561099657600080fd5b506103006101645481565b3480156109ad57600080fd5b506103236109bc366004613902565b611a39565b3480156109cd57600080fd5b506103236109dc366004613c4a565b611a9e565b3480156109ed57600080fd5b5061016654610463906001600160a01b031681565b348015610a0e57600080fd5b5061030060008051602061409383398151915281565b60006001600160e01b03198216635a05180f60e01b1480610a495750610a4982611b51565b92915050565b61016654604080516306fdde0360e01b815290516060926001600160a01b0316916306fdde039160048083019260009291908290030181865afa158015610a9a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ac29190810190613c73565b905090565b6000600080516020614118833981519152610ae181611b86565b600080516020614093833981519152610af98161175b565b158015610b0d5750610b0b600061175b565b155b610b325760405162461bcd60e51b8152600401610b2990613ce0565b60405180910390fd5b610b3b33611b90565b33600090815261016360205260408120600301546001600160801b031615610b9b573360009081526101636020526040902060030154610b8d906001600160801b03600160801b820481169116613d27565b6001600160801b0316610b9d565b845b610166546040516370a0823160e01b8152919250600091610c1d916001600160a01b0316906370a0823190610bd6903090600401613968565b602060405180830381865afa158015610bf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c179190613d47565b87611e03565b90506000610c34610c2e8389613d60565b84611e03565b9050610c408183613d73565b3360009081526101636020526040902060040180549197508791601090610c78908490600160801b90046001600160801b0316613d86565b92506101000a8154816001600160801b0302191690836001600160801b031602179055508561016960108282829054906101000a90046001600160801b0316610cc19190613d86565b92506101000a8154816001600160801b0302191690836001600160801b031602179055508061016960008282829054906101000a90046001600160801b0316610d0a9190613d86565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506000811115610d4157610d418882611e19565b8115610d5f5761016654610d5f906001600160a01b031689846121ff565b80600003610d6f57610d6f612255565b61016954604080513381526001600160a01b038b1660208201528082018a905260608101859052608081018490526001600160801b0390921660a0830152517fdea51570922020f525c1f30d8c1c57bd3cffe5632d70d13aaf8f8451388dbd959181900360c00190a1505050505092915050565b6101305460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa158015610e47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6b9190613da6565b61012e80546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa158015610ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eea9190613da6565b61012f80546001600160a01b0319166001600160a01b0392909216919091179055565b60009081526065602052604090206001015490565b610f2b82610f0d565b610f3481611b86565b610f3e83836123a8565b505050565b604080518082019091526000805160206141bf8339815191528152600060208201819052610f799082905b60200201513361162a565b80610f8a5750610f8a816001610f6e565b610fa65760405162461bcd60e51b8152600401610b2990613dd9565b610faf826123ca565b5050565b610166546040805163313ce56760e01b815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015610ffe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac29190613dff565b6001600160a01b03811633146110925760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610b29565b610faf8282612476565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036110e45760405162461bcd60e51b8152600401610b2990613e22565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611116612498565b6001600160a01b03161461113c5760405162461bcd60e51b8152600401610b2990613e5c565b611145816124b4565b60408051600080825260208201909252611161918391906124bc565b50565b600060008051602061417f83398151915261117e81611b86565b61118733611b90565b6111918484611e19565b7f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f03385856040516111c493929190613e96565b60405180910390a1600191505b5092915050565b600054610100900460ff16158080156111f85750600054600160ff909116105b80611219575061120730612627565b158015611219575060005460ff166001145b61127c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b29565b6000805460ff19166001179055801561129f576000805461ff0019166101001790555b6112a7612636565b6112b0826126a3565b6001600160a01b0383166112fb5760405162461bcd60e51b81526020600482015260126024820152717a65726f2061646d696e206164647265737360701b6044820152606401610b29565b6113036119b0565b61016680546001600160a01b0319166001600160a01b0392831617905561016880546001600160801b031661127560871b17905561012f5461134891600091166126c7565b6113536000846126c7565b8015610f3e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036113e55760405162461bcd60e51b8152600401610b2990613e22565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611417612498565b6001600160a01b03161461143d5760405162461bcd60e51b8152600401610b2990613e5c565b611446826124b4565b610faf828260016124bc565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114ed5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610b29565b506000805160206140d383398151915290565b600061150b81611b86565b8115611546576115296000805160206141188339815191528a610f22565b61154160008051602061417f8339815191528a611994565b611576565b61155e60008051602061417f8339815191528a610f22565b6115766000805160206141188339815191528a611994565b611585898989898989896126d1565b505050505050505050565b610166546040516370a0823160e01b81526000916001600160a01b0316906370a08231906115c2908590600401613968565b602060405180830381865afa1580156115df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a499190613d47565b6000610ac281805b60008281526097602052604081206116239083612973565b9392505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61016654604080516395d89b4160e01b815290516060926001600160a01b0316916395d89b419160048083019260009291908290030181865afa158015610a9a573d6000803e3d6000fd5b600060008051602061417f8339815191526116ba81611b86565b60008051602061419f8339815191526116d28161175b565b1580156116e657506116e4600061175b565b155b6117025760405162461bcd60e51b8152600401610b2990613ce0565b61170b33611b90565b611715858561297f565b7f6ab368f832c266c8eb942b84fbcaa20aedc24a699d2a05fae2568028733b1d0933868660405161174893929190613e96565b60405180910390a1506001949350505050565b600090815260c9602052604090205460ff1690565b610166546000906001600160a01b0316331461178b57600080fd5b600080838060200190518101906117a29190613eba565b91509150806000036117e55760405162461bcd60e51b815260206004820152600c60248201526b1e995c9bc818da185a5b925960a21b6044820152606401610b29565b6001600160a01b0382166117f957856117fb565b815b6101305460405163bf40fac160e01b815260206004820152601160248201527026aaa62a24a1a420a4a72fa927aaaa22a960791b60448201529193506001600160a01b03169063bf40fac190606401602060405180830381865afa158015611867573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188b9190613da6565b60405163241dc2df60e01b81523060048201526001600160a01b0384811660248301526044820188905260648201849052919091169063241dc2df90608401600060405180830381600087803b1580156118e457600080fd5b505af11580156118f8573d6000803e3d6000fd5b5060019998505050505050505050565b604080518082019091526000805160206141bf8339815191528152600060208201819052611937908290610f6e565b806119485750611948816001610f6e565b6119645760405162461bcd60e51b8152600401610b2990613dd9565b611973888888888888886126d1565b5050505050505050565b6000818152609760205260408120610a4990612cb2565b61199d82610f0d565b6119a681611b86565b610f3e8383612476565b6101305460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015611a15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac29190613da6565b604080518082019091526000805160206141bf8339815191528152600060208201819052611a68908290610f6e565b80611a795750611a79816001610f6e565b611a955760405162461bcd60e51b8152600401610b2990613dd9565b610faf82612cbc565b604080518082019091526000805160206141bf8339815191528152600060208201819052611acd908290610f6e565b80611ade5750611ade816001610f6e565b611afa5760405162461bcd60e51b8152600401610b2990613dd9565b61016880546001600160801b03808516600160801b0291161790556040517f5497ec04d2873f2e2d376db2bb24e7e57851278c75fc1fcc9aab4db5fb70d22390611b459084906138ad565b60405180910390a15050565b60006001600160e01b03198216637965db0b60e01b1480610a4957506301ffc9a760e01b6001600160e01b0319831614610a49565b6111618133612d41565b6001600160a01b03811660009081526101636020526040812060040154611bc0906001600160801b031642613d60565b9050600061016660009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3c9190613d47565b61016854909150600160801b90046001600160801b03168210611d52576001600160a01b0383166000908152610163602052604090206005015461271090611c8a9063ffffffff1683613ee8565b611c949190613f1d565b6001600160a01b03841660009081526101636020908152604080832060030180546001600160801b0319166001600160801b03959095169490941790935561016a9052206004015461271090611cf09063ffffffff1683613ee8565b611cfa9190613f1d565b6001600160a01b038416600090815261016a6020908152604080832060030180546001600160801b03199081166001600160801b03968716179091556101639092529091206004018054909116429092169190911790555b611d5a612d9a565b6001600160a01b03831660009081526101636020526040902060050154610168546001600160801b03908116600160201b9092041614610f3e5750506001600160a01b0316600090815261016360208181526040808420600380820180546001600160801b0390811690915561016a855292909520909401805482169055610168549290915260059092018054600160201b600160a01b03191691909216600160201b02179055565b6000818310611e125781611623565b5090919050565b600080516020614073833981519152611e318161175b565b158015611e455750611e43600061175b565b155b611e615760405162461bcd60e51b8152600401610b2990613ce0565b306001600160a01b03841603611ea85760405162461bcd60e51b815260206004820152600c60248201526b36b4b73a103a379039b2b63360a11b6044820152606401610b29565b33600090815261016360205260409020541580611ed5575033600090815261016360205260409020548211155b611f175760405162461bcd60e51b81526020600482015260136024820152721b5a5b9d195c881b585e08195e18d959591959606a1b6044820152606401610b29565b33600090815261016360205260409020600301546001600160801b03161580611f8a57503360009081526101636020526040902060030154611f6a908390600160801b90046001600160801b0316613d73565b33600090815261016360205260409020600301546001600160801b031610155b611fd25760405162461bcd60e51b81526020600482015260196024820152781b5a5b9d195c8819185a5b1e4818d85c08195e18d959591959603a1b6044820152606401610b29565b336000908152610163602052604090206003018054839190601090612008908490600160801b90046001600160801b0316613d86565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550816101636000336001600160a01b03166001600160a01b0316815260200190815260200160002060020160008282546120659190613d73565b9091555050336000908152610163602052604090206001015415806120a3575033600090815261016360205260409020600181015460029091015411155b6120bf5760405162461bcd60e51b8152600401610b2990613f31565b8161016560008282546120d29190613d73565b909155505033600090815261016a6020526040902060020154821161211f5733600090815261016a602052604081206002018054849290612114908490613d60565b909155506121349050565b33600090815261016a60205260408120600201555b61012e5461012f54604051633203f21960e11b8152600481018590526001600160a01b03868116602483015291821660448201526000929190911690636407e432906064016020604051808303816000875af1158015612198573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121bc9190613f5e565b9050806121f95760405162461bcd60e51b815260206004820152600b60248201526a1b5a5b9d0819985a5b195960aa1b6044820152606401610b29565b50505050565b610f3e8363a9059cbb60e01b848460405160240161221e929190613f7b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612dca565b61016954610166546040516370a0823160e01b81526000926122e3926001600160801b03909116916001600160a01b03909116906370a082319061229d903090600401613968565b602060405180830381865afa1580156122ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122de9190613d47565b611e03565b9050801561116157610169805482919060009061230a9084906001600160801b0316613d27565b92506101000a8154816001600160801b0302191690836001600160801b031602179055508061016560008282546123419190613d60565b909155505061016654604051630852cd8d60e31b8152600481018390526001600160a01b03909116906342966c6890602401600060405180830381600087803b15801561238d57600080fd5b505af11580156123a1573d6000803e3d6000fd5b5050505050565b6123b28282612e9c565b6000828152609760205260409020610f3e9082612f22565b806123d48161175b565b806123e457506123e4600061175b565b61242e5760405162461bcd60e51b815260206004820152601b60248201527a14185d5cd8589b1950dbdb9d1c9bdb0e881b9bdd081c185d5cd959602a1b6044820152606401610b29565b600082815260c9602052604090819020805460ff19169055517fd05bfc2250abb0f8fd265a54c53a24359c5484af63cad2e4ce87c78ab751395a90611b459084815260200190565b6124808282612f37565b6000828152609760205260409020610f3e9082612f9e565b6000805160206140d3833981519152546001600160a01b031690565b611161612fb3565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156124ef57610f3e83613077565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612549575060408051601f3d908101601f1916820190925261254691810190613d47565b60015b6125ac5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610b29565b6000805160206140d3833981519152811461261b5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610b29565b50610f3e838383613111565b6001600160a01b03163b151590565b600054610100900460ff166126a15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610b29565b565b61013080546001600160a01b0319166001600160a01b038316179055611161610de3565b610faf82826123a8565b6001600160a01b03871660009081526101636020908152604080832061016a90925282206004820154919290916001600160801b03161515906127226000805160206141188339815191528c61162a565b600185018b905589855560058501805463ffffffff191663ffffffff8b16908117909155600480870180546001600160801b031916426001600160801b031617905561016654604080516318160ddd60e01b81529051949550612710946001600160a01b03909216926318160ddd9282820192602092908290030181865afa1580156127b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d69190613d47565b6127e09190613ee8565b6127ea9190613f94565b8460030160006101000a8154816001600160801b0302191690836001600160801b031602179055506127108563ffffffff1661016660009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612870573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128949190613d47565b61289e9190613ee8565b6128a89190613f94565b6003840180546001600160801b0319166001600160801b03929092169190911790556001830187905585835560048301805463ffffffff191663ffffffff878116918217909255604080516001600160a01b038f168152602081018e90529081018c9052918a1660608301526080820189905260a0820188905260c082015281151560e08201528215156101008201527f58c3ceb7d4f068706ddc92911fae8701fac2c91c60bcc1b56ec7a6f56001aa5e906101200160405180910390a15050505050505050505050565b60006116238383613136565b6000805160206141388339815191526129978161175b565b1580156129ab57506129a9600061175b565b155b6129c75760405162461bcd60e51b8152600401610b2990613ce0565b33600090815261016a602052604090205415806129f4575033600090815261016a60205260409020548211155b612a3b5760405162461bcd60e51b81526020600482015260186024820152771b5a5b9d195c88189d5c9b881b585e08195e18d95959195960421b6044820152606401610b29565b33600090815261016a60205260409020600301546001600160801b03161580612aae575033600090815261016a6020526040902060030154612a8e908390600160801b90046001600160801b0316613d73565b33600090815261016a60205260409020600301546001600160801b031610155b612afa5760405162461bcd60e51b815260206004820152601e60248201527f6d696e746572206275726e206461696c792063617020657863656564656400006044820152606401610b29565b33600090815261016a602052604090206003018054839190601090612b30908490600160801b90046001600160801b0316613d86565b92506101000a8154816001600160801b0302191690836001600160801b031602179055508161016a6000336001600160a01b03166001600160a01b031681526020019081526020016000206002016000828254612b8d9190613d73565b909155505033600090815261016a60205260409020600101541580612bcb575033600090815261016a60205260409020600181015460029091015411155b612be75760405162461bcd60e51b8152600401610b2990613f31565b816101655410612c0f57816101656000828254612c049190613d60565b90915550612c169050565b6000610165555b33600090815261016360205260409020600201548211612c5e57336000908152610163602052604081206002018054849290612c53908490613d60565b90915550612c739050565b33600090815261016360205260408120600201555b306001600160a01b03841603612c9a5761016654610f3e906001600160a01b031683613160565b61016654610f3e906001600160a01b031684846131ad565b6000610a49825490565b80612cc68161175b565b158015612cda5750612cd8600061175b565b155b612cf65760405162461bcd60e51b8152600401610b2990613ce0565b600082815260c9602052604090819020805460ff19166001179055517f0cb09dc71d57eeec2046f6854976717e4874a3cf2d6ddeddde337e5b6de6ba3190611b459084815260200190565b612d4b828261162a565b610faf57612d58816131c9565b612d638360206131db565b604051602001612d74929190613fba565b60408051601f198184030181529082905262461bcd60e51b8252610b299160040161387a565b612da76201518042613f1d565b61016880546001600160801b0319166001600160801b0392909216919091179055565b6000612e1f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166133769092919063ffffffff16565b805190915015610f3e5780806020019051810190612e3d9190613f5e565b610f3e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610b29565b612ea6828261162a565b610faf5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612ede3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000611623836001600160a01b03841661338d565b612f41828261162a565b15610faf5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000611623836001600160a01b0384166133dc565b61012e5460408051632d77bef360e11b8152905133926001600160a01b031691635aef7de69160048083019260209291908290030181865afa158015612ffd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130219190613da6565b6001600160a01b0316146126a15760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f646044820152606401610b29565b61308081612627565b6130e25760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610b29565b6000805160206140d383398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61311a836134cf565b6000825111806131275750805b15610f3e576121f9838361350f565b600082600001828154811061314d5761314d613dc3565b9060005260206000200154905092915050565b610faf826342966c688360405160240161317c91815260200190565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050613601565b610f3e836379cc6790848460405160240161317c929190613f7b565b6060610a496001600160a01b03831660145b606060006131ea836002613ee8565b6131f5906002613d73565b6001600160401b0381111561320c5761320c6139aa565b6040519080825280601f01601f191660200182016040528015613236576020820181803683370190505b509050600360fc1b8160008151811061325157613251613dc3565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061328057613280613dc3565b60200101906001600160f81b031916908160001a90535060006132a4846002613ee8565b6132af906001613d73565b90505b6001811115613327576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106132e3576132e3613dc3565b1a60f81b8282815181106132f9576132f9613dc3565b60200101906001600160f81b031916908160001a90535060049490941c9361332081614029565b90506132b2565b5083156116235760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610b29565b6060613385848460008561369b565b949350505050565b60008181526001830160205260408120546133d457508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a49565b506000610a49565b600081815260018301602052604081205480156134c5576000613400600183613d60565b855490915060009061341490600190613d60565b905081811461347957600086600001828154811061343457613434613dc3565b906000526020600020015490508087600001848154811061345757613457613dc3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061348a5761348a614040565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a49565b6000915050610a49565b6134d881613077565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061351a83612627565b6135755760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610b29565b600080846001600160a01b0316846040516135909190614056565b600060405180830381855af49150503d80600081146135cb576040519150601f19603f3d011682016040523d82523d6000602084013e6135d0565b606091505b50915091506135f8828260405180606001604052806027815260200161415860279139613776565b95945050505050565b6000613631826040518060600160405280602581526020016140f3602591396001600160a01b0386169190613376565b805190915015610f3e578080602001905181019061364f9190613f5e565b610f3e5760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e4f7065726174696f6e3a20646964206e6f742073756363656564006044820152606401610b29565b6060824710156136fc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610b29565b600080866001600160a01b031685876040516137189190614056565b60006040518083038185875af1925050503d8060008114613755576040519150601f19603f3d011682016040523d82523d6000602084013e61375a565b606091505b509150915061376b8783838761378f565b979650505050505050565b60608315613785575081611623565b6116238383613802565b606083156137fc5782516000036137f5576137a985612627565b6137f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b29565b5081613385565b61338583835b8151156138125781518083602001fd5b8060405162461bcd60e51b8152600401610b29919061387a565b60006020828403121561383e57600080fd5b81356001600160e01b03198116811461162357600080fd5b60005b83811015613871578181015183820152602001613859565b50506000910152565b6020815260008251806020840152613899816040850160208701613856565b601f01601f19169190910160400192915050565b6001600160801b0391909116815260200190565b6001600160a01b038116811461116157600080fd5b600080604083850312156138e957600080fd5b82356138f4816138c1565b946020939093013593505050565b60006020828403121561391457600080fd5b5035919050565b6000806040838503121561392e57600080fd5b823591506020830135613940816138c1565b809150509250929050565b60006020828403121561395d57600080fd5b8135611623816138c1565b6001600160a01b0391909116815260200190565b6000806040838503121561398f57600080fd5b823561399a816138c1565b91506020830135613940816138c1565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156139e8576139e86139aa565b604052919050565b60006001600160401b03821115613a0957613a096139aa565b50601f01601f191660200190565b600082601f830112613a2857600080fd5b8135613a3b613a36826139f0565b6139c0565b818152846020838601011115613a5057600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215613a8057600080fd5b8235613a8b816138c1565b915060208301356001600160401b03811115613aa657600080fd5b613ab285828601613a17565b9150509250929050565b803563ffffffff81168114613ad057600080fd5b919050565b801515811461116157600080fd5b600080600080600080600080610100898b031215613b0057600080fd5b8835613b0b816138c1565b97506020890135965060408901359550613b2760608a01613abc565b94506080890135935060a08901359250613b4360c08a01613abc565b915060e0890135613b5381613ad5565b809150509295985092959890939650565b60008060408385031215613b7757600080fd5b50508035926020909101359150565b600080600060608486031215613b9b57600080fd5b8335613ba6816138c1565b92506020840135915060408401356001600160401b03811115613bc857600080fd5b613bd486828701613a17565b9150509250925092565b600080600080600080600060e0888a031215613bf957600080fd5b8735613c04816138c1565b96506020880135955060408801359450613c2060608901613abc565b93506080880135925060a08801359150613c3c60c08901613abc565b905092959891949750929550565b600060208284031215613c5c57600080fd5b81356001600160801b038116811461162357600080fd5b600060208284031215613c8557600080fd5b81516001600160401b03811115613c9b57600080fd5b8201601f81018413613cac57600080fd5b8051613cba613a36826139f0565b818152856020838501011115613ccf57600080fd5b6135f8826020830160208601613856565b60208082526017908201527614185d5cd8589b1950dbdb9d1c9bdb0e881c185d5cd959604a1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6001600160801b038281168282160390808211156111d1576111d1613d11565b600060208284031215613d5957600080fd5b5051919050565b81810381811115610a4957610a49613d11565b80820180821115610a4957610a49613d11565b6001600160801b038181168382160190808211156111d1576111d1613d11565b600060208284031215613db857600080fd5b8151611623816138c1565b634e487b7160e01b600052603260045260246000fd5b6020808252600c908201526b726f6c65206d697373696e6760a01b604082015260600190565b600060208284031215613e1157600080fd5b815160ff8116811461162357600080fd5b6020808252602c908201526000805160206140b383398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201526000805160206140b383398151915260408201526b6163746976652070726f787960a01b606082015260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60008060408385031215613ecd57600080fd5b8251613ed8816138c1565b6020939093015192949293505050565b6000816000190483118215151615613f0257613f02613d11565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613f2c57613f2c613f07565b500490565b6020808252601390820152721b5a5b9d195c8818d85c08195e18d959591959606a1b604082015260600190565b600060208284031215613f7057600080fd5b815161162381613ad5565b6001600160a01b03929092168252602082015260400190565b60006001600160801b0383811680613fae57613fae613f07565b92169190910492915050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613fec816017850160208801613856565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161401d816028840160208801613856565b01602801949350505050565b60008161403857614038613d11565b506000190190565b634e487b7160e01b600052603160045260246000fd5b60008251614068818460208701613856565b919091019291505056feb2a18ae5d0b623b41098012c516d0bf4bef38c068c9e397da870c290888b19999604fa49b1cb3aa782c099225b9c340b6afeb802be5d4b3314ba27a14502cdfa46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546f6b656e4f7065726174696f6e3a206c6f772d6c6576656c2063616c6c206661696c65645407862f04286ebe607684514c14b7fffc750b6bf52ba44ea49569174845a5bd62d52416825983abd68b16e092b60c2eac31fd673bcce92494e063af530d9c30416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65649f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6b601d6a8ea5419a4251765936e52b2763485fede82d3c5dfd765cd67d30f4f2255435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212202a898be1642b59978bccb0b9c939e855c39dbcf0966b7efcb1782110a065fe1c64736f6c63430008100033";
1288
1281
 
1289
1282
  type GoodDollarMintBurnWrapperConstructorParams =
1290
1283
  | [signer?: Signer]
@@ -985,7 +985,7 @@ const _abi = [
985
985
  ];
986
986
 
987
987
  const _bytecode =
988
- "0x60a06040523060805234801561001457600080fd5b50608051612c7661004c60003960008181610d6901528181610da9015281816111dd0152818161121d01526112990152612c766000f3fe60806040526004361061022e5760003560e01c8063013eba921461023357806302329a2914610273578063069786ea146102955780630ce82d67146102bf5780631248b101146102d45780631794bb3c1461030b5780631a787f2e1461032b5780631b3c90a81461034b5780631bbc644c146103605780631d8f5ea91461039057806322b45727146103a65780633659cfe6146103bc57806337658574146103dc5780633d84ceca146103f25780633e6326fc146104125780634162169f1461043f5780634202d2141461045f578063456ac1c21461047f5780634b4c7180146104995780634e71d92d146104b35780634f1ef286146104c85780635231e2f0146104db57806352d1902d1461050b578063560796d1146105205780635aef7de6146105715780635c9302c9146105915780635c975abb146105a757806373b2e80e146105c1578063741470ac146105e15780638081cbbd146105f75780638fd247d21461061757806398d6621b146106375780639dc2c0331461064c578063a21f698a14610662578063b656223d14610682578063ba07541014610698578063c033abf2146106ae578063c1337508146106c4578063c7713870146106e4578063c7a76adf146106f9578063cc054dfc14610719578063cef6360014610746578063d6a9f61814610766578063d7c4cbb814610786578063dddc36161461079c578063de1de3a0146107b1578063e1758bd8146107d1578063eac471a0146107e6578063eda4e6d6146107fc575b600080fd5b34801561023f57600080fd5b5061026061024e366004612651565b609b6020526000908152604090205481565b6040519081526020015b60405180910390f35b34801561027f57600080fd5b5061029361028e36600461267c565b610812565b005b3480156102a157600080fd5b506102aa61082d565b6040805192835260208301919091520161026a565b3480156102cb57600080fd5b5061026061086b565b3480156102e057600080fd5b506102aa6102ef366004612699565b609a602052600090815260409020600181015460029091015482565b34801561031757600080fd5b506102936103263660046126b2565b61088e565b34801561033757600080fd5b50610260610346366004612651565b610a81565b34801561035757600080fd5b50610293610ba9565b34801561036c57600080fd5b5061038061037b366004612651565b610cd0565b604051901515815260200161026a565b34801561039c57600080fd5b50610260609e5481565b3480156103b257600080fd5b5061026060a05481565b3480156103c857600080fd5b506102936103d7366004612651565b610d5f565b3480156103e857600080fd5b5061026060a95481565b3480156103fe57600080fd5b5061029361040d366004612699565b610e27565b34801561041e57600080fd5b50606754610432906001600160a01b031681565b60405161026a91906126f3565b34801561044b57600080fd5b50606554610432906001600160a01b031681565b34801561046b57600080fd5b5061038061047a366004612651565b610eca565b34801561048b57600080fd5b5060a3546103809060ff1681565b3480156104a557600080fd5b5060a8546103809060ff1681565b3480156104bf57600080fd5b50610380610f2c565b6102936104d6366004612774565b6111d3565b3480156104e757600080fd5b506103806104f6366004612651565b60ac6020526000908152604090205460ff1681565b34801561051757600080fd5b5061026061128c565b34801561052c57600080fd5b5061055a61053b366004612699565b60ab602052600090815260409020805460019091015460ff9091169082565b60408051921515835260208301919091520161026a565b34801561057d57600080fd5b50606654610432906001600160a01b031681565b34801561059d57600080fd5b50610260609c5481565b3480156105b357600080fd5b5060ae546103809060ff1681565b3480156105cd57600080fd5b506103806105dc366004612651565b61133a565b3480156105ed57600080fd5b5061026060a75481565b34801561060357600080fd5b5060aa54610432906001600160a01b031681565b34801561062357600080fd5b50610293610632366004612699565b611366565b34801561064357600080fd5b50610260611373565b34801561065857600080fd5b5061026060a55481565b34801561066e57600080fd5b5061038061067d366004612651565b61137e565b34801561068e57600080fd5b5061026060a25481565b3480156106a457600080fd5b5061026060a65481565b3480156106ba57600080fd5b50610260609f5481565b3480156106d057600080fd5b506102606106df366004612806565b6113a4565b3480156106f057600080fd5b506102606114f3565b34801561070557600080fd5b50610260610714366004612699565b6115d6565b34801561072557600080fd5b50610260610734366004612651565b60ad6020526000908152604090205481565b34801561075257600080fd5b50610260610761366004612699565b6115eb565b34801561077257600080fd5b5061029361078136600461267c565b611600565b34801561079257600080fd5b5061026060a15481565b3480156107a857600080fd5b5061029361161b565b3480156107bd57600080fd5b506102936107cc36600461267c565b61167a565b3480156107dd57600080fd5b506104326116c9565b3480156107f257600080fd5b5061026060a45481565b34801561080857600080fd5b50610260609d5481565b61081a611751565b60ae805460ff1916911515919091179055565b600080600062015180609d544261084491906128cd565b61084e91906128e0565b9050610859816115d6565b610862826115eb565b92509250509091565b60006201518060a6544261087f91906128cd565b61088991906128e0565b905090565b600054610100900460ff16158080156108ae5750600054600160ff909116105b806108cf57506108bd30611816565b1580156108cf575060005460ff166001145b6109375760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561095a576000805461ff0019166101001790555b600082116109aa5760405162461bcd60e51b815260206004820181905260248201527f4d617820696e61637469766520646179732063616e6e6f74206265207a65726f604482015260640161092e565b6109b384611825565b60a282905560aa80546001600160a01b0319166001600160a01b03851617905560a3805460ff19169055605a60a4556202d2a8609f556109f662015180426128e0565b610a039062015180612902565b610a0f9061a8c0612921565b609d81905560a65560a8805460ff19166001600160a01b03851615151790556103e860a9558015610a7b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b50505050565b6000609d54421015610a9557506000919050565b60a85460ff168015610acf5750610aab8261137e565b1580610acf57506001600160a01b038216600090815260ac602052604090205460ff165b15610b515760aa60009054906101000a90046001600160a01b03166001600160a01b031663830953ab6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4b9190612934565b92915050565b62015180609d5442610b6391906128cd565b610b6d91906128e0565b609c54148015610b7f57506000609e54115b15610ba157610b8d8261133a565b610b9957609e54610b4b565b600092915050565b610b4b6114f3565b60675460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa158015610c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c30919061294d565b606580546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa158015610c8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cae919061294d565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b60ae5460009060ff16158015610ce857506000609d54115b8015610cf65750609d544210155b610d125760405162461bcd60e51b815260040161092e9061296a565b610d1b82611848565b610d545760405162461bcd60e51b815260206004820152600a6024820152690c6c2dc4ee840ccd2e6d60b31b604482015260640161092e565b610b4b82600161188c565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610da75760405162461bcd60e51b815260040161092e906129a1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610dd961193a565b6001600160a01b031614610dff5760405162461bcd60e51b815260040161092e906129db565b610e0881611956565b60408051600080825260208201909252610e249183919061195e565b50565b610e2f611751565b60008111610e895760405162461bcd60e51b815260206004820152602160248201527f6379636c65206d757374206265206174206c65617374203120646179206c6f6e6044820152606760f81b606482015260840161092e565b60a4819055600060a7556040518181527fa61e6cca2c12e2a0a493683acfe95b034f0f50d793434f4dfe3ba06ea201f344906020015b60405180910390a150565b6001600160a01b0381166000908152609b6020526040812054610eec8361137e565b15610f2357600062015180610f0183426128cd565b610f0b91906128e0565b905060a254811015610f21575060019392505050565b505b50600092915050565b60ae5460009060ff16158015610f4457506000609d54115b8015610f525750609d544210155b610f6e5760405162461bcd60e51b815260040161092e9061296a565b60675460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015610fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff4919061294d565b6001600160a01b0316632d0e9b46336040518263ffffffff1660e01b815260040161101f91906126f3565b602060405180830381865afa15801561103c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611060919061294d565b90506001600160a01b0381166110b55760405162461bcd60e51b815260206004820152601a60248201527915509254d8da195b594e881b9bdd081dda1a5d195b1a5cdd195960321b604482015260640161092e565b60006110c18233611ace565b60675460405163bf40fac160e01b815260206004820152600d60248201526c4744414f5f434c41494d45525360981b60448201529192506000916001600160a01b039091169063bf40fac190606401602060405180830381865afa15801561112d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611151919061294d565b905081801561116857506001600160a01b03811615155b156111cc5760405163748abee960e11b81526001600160a01b0382169063e9157dd2906111999086906004016126f3565b600060405180830381600087803b1580156111b357600080fd5b505af11580156111c7573d6000803e3d6000fd5b505050505b5091505090565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361121b5760405162461bcd60e51b815260040161092e906129a1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661124d61193a565b6001600160a01b0316146112735760405162461bcd60e51b815260040161092e906129db565b61127c82611956565b6112888282600161195e565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113275760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b606482015260840161092e565b50600080516020612bfa83398151915290565b609c546000908152609a602090815260408083206001600160a01b039094168352929052205460ff1690565b61136e611751565b60a055565b600061088933610a81565b6001600160a01b0381166000908152609b602052604081205415610b9957506001919050565b60ae5460009060ff161580156113bc57506000609d54115b80156113ca5750609d544210155b6113e65760405162461bcd60e51b815260040161092e9061296a565b6000805b83518210156114a557609f545a106114a55761141e84838151811061141157611411612a15565b6020026020010151611848565b156114955761144784838151811061143857611438612a15565b6020026020010151600061188c565b6114855760405162461bcd60e51b815260206004820152600f60248201526e199a5cda081a185cc819985a5b1959608a1b604482015260640161092e565b609e546114929082612921565b90505b61149e82612a2b565b91506113ea565b80156114b9576114b9333383600080611c19565b6040518281527f72b174db45b7e58932cb0c6bf37a7158f40424a078b07677d823cafdb3db540f9060200160405180910390a15092915050565b6000806114fe6116c9565b6001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161152991906126f3565b602060405180830381865afa158015611546573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156a9190612934565b9050600060a55460a4548361157f91906128e0565b119050600060a5549050600060a75461159661086b565b1015806115a05750825b156115b55760a4546115b290856128e0565b91505b6115c360a05460a954611eb2565b6115cd90836128e0565b95945050505050565b6000908152609a602052604090206001015490565b6000908152609a602052604090206002015490565b611608611751565b60a8805460ff1916911515919091179055565b600062015180609d544261162f91906128cd565b61163991906128e0565b9050609c54811115610e2457609c8190556040518181527f67eb03bd555181f9dd23f546e4331ddfb8b4a7d0c8d261ba44e037f30ce894ea90602001610ebf565b611682611751565b60a3805460ff191682151590811790915560405160ff909116151581527f6cd9a0fd2e006be39a9918bf56c85cae1d4f4599474483ff18cb93355ebaaf8e90602001610ebf565b60675460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa15801561172d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610889919061294d565b60655460408051632d77bef360e11b8152905133926001600160a01b031691635aef7de69160048083019260209291908290030181865afa15801561179a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117be919061294d565b6001600160a01b0316146118145760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f64604482015260640161092e565b565b6001600160a01b03163b151590565b606780546001600160a01b0319166001600160a01b038316179055610e24610ba9565b60006118538261137e565b8015611865575061186382610eca565b155b8015610b4b5750506001600160a01b0316600090815260ac602052604090205460ff161590565b6001600160a01b038216600090815260ac60205260408120805460ff19166001179055806118b8611ecb565b60a054909150156118dc57600160a060008282546118d691906128cd565b90915550505b82156118f0576118f0333383600080611c19565b6040518181526001600160a01b0385169033907f3c91d315d82534112f8ce552cb79133a14191077a2d715fd65cabd026fc27c749060200160405180910390a35060019392505050565b600080516020612bfa833981519152546001600160a01b031690565b610e24611751565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611996576119918361215d565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156119f0575060408051601f3d908101601f191682019092526119ed91810190612934565b60015b611a535760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161092e565b600080516020612bfa8339815191528114611ac25760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161092e565b506119918383836121f7565b600080611ad9611ecb565b9050611ae48461137e565b8015611b0957506001600160a01b038416600090815260ac602052604090205460ff16155b8015611b1b5750611b198461133a565b155b15611b3957611b2f84848360016000611c19565b6001915050610b4b565b611b428461137e565b1580611b6657506001600160a01b038416600090815260ac602052604090205460ff165b15611c0f57600160a06000828254611b7e9190612921565b90915550506001600160a01b038416600090815260ac60205260409020805460ff1916905560a85460ff1615611bc257611bbd84846000806001611c19565b611bd1565b611bd184848360016000611c19565b6040516001600160a01b038516907f2f9cfaa2a5c422dfab45f7d0da071f030fc2d3a7a1f0a255c028eff9b6d3d93690600090a26001915050610b4b565b5060009392505050565b8180611c225750805b15611cb0576001609a6000609c5481526020019081526020016000206001016000828254611c509190612921565b9091555050609c546000908152609a602090815260408083206001600160a01b03891684528252808320805460ff19166001908117909155609b835281842042905560ad9092528220805491929091611caa908490612921565b90915550505b8015611d8b5760aa54604051636bf2228d60e11b81526000916001600160a01b03169063d7e4451a90611ce79088906004016126f3565b6020604051808303816000875af1158015611d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2a9190612934565b905080609a6000609c5481526020019081526020016000206002016000828254611d549190612921565b90915550506040518181526001600160a01b03871690600080516020612bda8339815191529060200160405180910390a250611eab565b8115611de757609c546000908152609a602052604081206002018054859290611db5908490612921565b90915550506040518381526001600160a01b03861690600080516020612bda8339815191529060200160405180910390a25b6000611df16116c9565b60405163a9059cbb60e01b81529091506001600160a01b0382169063a9059cbb90611e229088908890600401612a44565b6020604051808303816000875af1158015611e41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e659190612a5d565b611ea95760405162461bcd60e51b815260206004820152601560248201527418db185a5b481d1c985b9cd9995c8819985a5b1959605a1b604482015260640161092e565b505b5050505050565b600081831015611ec25781611ec4565b825b9392505050565b6000611ed561161b565b60a154609c54141580611ee85750609e54155b15612156576000611ef76116c9565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611f2791906126f3565b602060405180830381865afa158015611f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f689190612934565b9050600060a55460a45483611f7d91906128e0565b11905060a754611f8b61086b565b101580611f955750805b1561209e5760a35460ff161561201d57611fad61221c565b6040516370a0823160e01b81526001600160a01b038416906370a0823190611fd99030906004016126f3565b602060405180830381865afa158015611ff6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201a9190612934565b91505b60a45461202a90836128e0565b60a55560a45460a75561203f610e10426128e0565b61204b90610e10612902565b60a655609c5460a45460a554604080519384526020840186905283019190915260608201527f83e0d535b9e84324e0a25922406398d6ff5f96d0c686204ee490e16d7670566f9060800160405180910390a15b609c5460a1819055600090815260ab6020526040902060a354815460ff191660ff90911615151781556001810183905560a05460a9546120de9190611eb2565b60a5546120eb91906128e0565b609e5560a05461210990612101906002906128e0565b60a954611eb2565b60a955609c54609e546040805192835260208301919091524382820152517f836fa39995340265746dfe9587d9fe5c5de35b7bce778afd9b124ce1cfeafdc49181900360600190a1505050505b50609e5490565b61216681611816565b6121c85760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161092e565b600080516020612bfa83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612200836124da565b60008251118061220d5750805b1561199157610a7b838361251a565b60006122266116c9565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161225691906126f3565b602060405180830381865afa158015612273573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122979190612934565b6066546040516370a0823160e01b81529192506000916001600160a01b03858116926370a08231926122cf92909116906004016126f3565b602060405180830381865afa1580156122ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123109190612934565b6065546040519192506001600160a01b03169063d1b7089a90859061233b9030908690602401612a44565b60408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052606654905160e085901b6001600160e01b03191681526123969392916001600160a01b031690600090600401612aca565b6000604051808303816000875af11580156123b5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123dd9190810190612afe565b50600090506123ec8284612921565b6040516370a0823160e01b81529091506001600160a01b038516906370a082319061241b9030906004016126f3565b602060405180830381865afa158015612438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245c9190612934565b81146124a45760405162461bcd60e51b8152602060048201526017602482015276111053c81d1c985b9cd9995c881a185cc819985a5b1959604a1b604482015260640161092e565b60408051848152602081018390527f3107ec7eaa50b775d2486c7a394472235804b6fe1c0d4b7bd1d79b09df60f2ba9101610a72565b6124e38161215d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061252583611816565b6125805760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161092e565b600080846001600160a01b03168460405161259b9190612b8a565b600060405180830381855af49150503d80600081146125d6576040519150601f19603f3d011682016040523d82523d6000602084013e6125db565b606091505b50915091506115cd8282604051806060016040528060278152602001612c1a602791396060831561260d575081611ec4565b611ec483838151156126225781518083602001fd5b8060405162461bcd60e51b815260040161092e9190612ba6565b6001600160a01b0381168114610e2457600080fd5b60006020828403121561266357600080fd5b8135611ec48161263c565b8015158114610e2457600080fd5b60006020828403121561268e57600080fd5b8135611ec48161266e565b6000602082840312156126ab57600080fd5b5035919050565b6000806000606084860312156126c757600080fd5b83356126d28161263c565b925060208401356126e28161263c565b929592945050506040919091013590565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561274557612745612707565b604052919050565b60006001600160401b0382111561276657612766612707565b50601f01601f191660200190565b6000806040838503121561278757600080fd5b82356127928161263c565b915060208301356001600160401b038111156127ad57600080fd5b8301601f810185136127be57600080fd5b80356127d16127cc8261274d565b61271d565b8181528660208385010111156127e657600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000602080838503121561281957600080fd5b82356001600160401b038082111561283057600080fd5b818501915085601f83011261284457600080fd5b81358181111561285657612856612707565b8060051b915061286784830161271d565b818152918301840191848101908884111561288157600080fd5b938501935b838510156128ab578435925061289b8361263c565b8282529385019390850190612886565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b4b57610b4b6128b7565b6000826128fd57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561291c5761291c6128b7565b500290565b80820180821115610b4b57610b4b6128b7565b60006020828403121561294657600080fd5b5051919050565b60006020828403121561295f57600080fd5b8151611ec48161263c565b6020808252601e908201527f6e6f7420696e20706572696f6453746172746564206f72207061757365640000604082015260600190565b6020808252602c90820152600080516020612bba83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020612bba83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060018201612a3d57612a3d6128b7565b5060010190565b6001600160a01b03929092168252602082015260400190565b600060208284031215612a6f57600080fd5b8151611ec48161266e565b60005b83811015612a95578181015183820152602001612a7d565b50506000910152565b60008151808452612ab6816020860160208601612a7a565b601f01601f19169290920160200192915050565b600060018060a01b03808716835260806020840152612aec6080840187612a9e565b94166040830152506060015292915050565b60008060408385031215612b1157600080fd5b8251612b1c8161266e565b60208401519092506001600160401b03811115612b3857600080fd5b8301601f81018513612b4957600080fd5b8051612b576127cc8261274d565b818152866020838501011115612b6c57600080fd5b612b7d826020830160208601612a7a565b8093505050509250929050565b60008251612b9c818460208701612a7a565b9190910192915050565b602081526000611ec46020830184612a9e56fe46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682089ed24731df6b066e4c5186901fffdba18cd9a10f07494aff900bdee260d1304360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122094ab3ca5cab74bba9fe3636b3686cf16e3cab1565937d93ec4ff1e2bd8a9a99364736f6c63430008100033";
988
+ "0x60a06040523060805234801561001457600080fd5b50608051612c7661004c60003960008181610d6901528181610da9015281816111dd0152818161121d01526112990152612c766000f3fe60806040526004361061022e5760003560e01c8063013eba921461023357806302329a2914610273578063069786ea146102955780630ce82d67146102bf5780631248b101146102d45780631794bb3c1461030b5780631a787f2e1461032b5780631b3c90a81461034b5780631bbc644c146103605780631d8f5ea91461039057806322b45727146103a65780633659cfe6146103bc57806337658574146103dc5780633d84ceca146103f25780633e6326fc146104125780634162169f1461043f5780634202d2141461045f578063456ac1c21461047f5780634b4c7180146104995780634e71d92d146104b35780634f1ef286146104c85780635231e2f0146104db57806352d1902d1461050b578063560796d1146105205780635aef7de6146105715780635c9302c9146105915780635c975abb146105a757806373b2e80e146105c1578063741470ac146105e15780638081cbbd146105f75780638fd247d21461061757806398d6621b146106375780639dc2c0331461064c578063a21f698a14610662578063b656223d14610682578063ba07541014610698578063c033abf2146106ae578063c1337508146106c4578063c7713870146106e4578063c7a76adf146106f9578063cc054dfc14610719578063cef6360014610746578063d6a9f61814610766578063d7c4cbb814610786578063dddc36161461079c578063de1de3a0146107b1578063e1758bd8146107d1578063eac471a0146107e6578063eda4e6d6146107fc575b600080fd5b34801561023f57600080fd5b5061026061024e366004612651565b609b6020526000908152604090205481565b6040519081526020015b60405180910390f35b34801561027f57600080fd5b5061029361028e36600461267c565b610812565b005b3480156102a157600080fd5b506102aa61082d565b6040805192835260208301919091520161026a565b3480156102cb57600080fd5b5061026061086b565b3480156102e057600080fd5b506102aa6102ef366004612699565b609a602052600090815260409020600181015460029091015482565b34801561031757600080fd5b506102936103263660046126b2565b61088e565b34801561033757600080fd5b50610260610346366004612651565b610a81565b34801561035757600080fd5b50610293610ba9565b34801561036c57600080fd5b5061038061037b366004612651565b610cd0565b604051901515815260200161026a565b34801561039c57600080fd5b50610260609e5481565b3480156103b257600080fd5b5061026060a05481565b3480156103c857600080fd5b506102936103d7366004612651565b610d5f565b3480156103e857600080fd5b5061026060a95481565b3480156103fe57600080fd5b5061029361040d366004612699565b610e27565b34801561041e57600080fd5b50606754610432906001600160a01b031681565b60405161026a91906126f3565b34801561044b57600080fd5b50606554610432906001600160a01b031681565b34801561046b57600080fd5b5061038061047a366004612651565b610eca565b34801561048b57600080fd5b5060a3546103809060ff1681565b3480156104a557600080fd5b5060a8546103809060ff1681565b3480156104bf57600080fd5b50610380610f2c565b6102936104d6366004612774565b6111d3565b3480156104e757600080fd5b506103806104f6366004612651565b60ac6020526000908152604090205460ff1681565b34801561051757600080fd5b5061026061128c565b34801561052c57600080fd5b5061055a61053b366004612699565b60ab602052600090815260409020805460019091015460ff9091169082565b60408051921515835260208301919091520161026a565b34801561057d57600080fd5b50606654610432906001600160a01b031681565b34801561059d57600080fd5b50610260609c5481565b3480156105b357600080fd5b5060ae546103809060ff1681565b3480156105cd57600080fd5b506103806105dc366004612651565b61133a565b3480156105ed57600080fd5b5061026060a75481565b34801561060357600080fd5b5060aa54610432906001600160a01b031681565b34801561062357600080fd5b50610293610632366004612699565b611366565b34801561064357600080fd5b50610260611373565b34801561065857600080fd5b5061026060a55481565b34801561066e57600080fd5b5061038061067d366004612651565b61137e565b34801561068e57600080fd5b5061026060a25481565b3480156106a457600080fd5b5061026060a65481565b3480156106ba57600080fd5b50610260609f5481565b3480156106d057600080fd5b506102606106df366004612806565b6113a4565b3480156106f057600080fd5b506102606114f3565b34801561070557600080fd5b50610260610714366004612699565b6115d6565b34801561072557600080fd5b50610260610734366004612651565b60ad6020526000908152604090205481565b34801561075257600080fd5b50610260610761366004612699565b6115eb565b34801561077257600080fd5b5061029361078136600461267c565b611600565b34801561079257600080fd5b5061026060a15481565b3480156107a857600080fd5b5061029361161b565b3480156107bd57600080fd5b506102936107cc36600461267c565b61167a565b3480156107dd57600080fd5b506104326116c9565b3480156107f257600080fd5b5061026060a45481565b34801561080857600080fd5b50610260609d5481565b61081a611751565b60ae805460ff1916911515919091179055565b600080600062015180609d544261084491906128cd565b61084e91906128e0565b9050610859816115d6565b610862826115eb565b92509250509091565b60006201518060a6544261087f91906128cd565b61088991906128e0565b905090565b600054610100900460ff16158080156108ae5750600054600160ff909116105b806108cf57506108bd30611816565b1580156108cf575060005460ff166001145b6109375760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561095a576000805461ff0019166101001790555b600082116109aa5760405162461bcd60e51b815260206004820181905260248201527f4d617820696e61637469766520646179732063616e6e6f74206265207a65726f604482015260640161092e565b6109b384611825565b60a282905560aa80546001600160a01b0319166001600160a01b03851617905560a3805460ff19169055601e60a4556202d2a8609f556109f662015180426128e0565b610a039062015180612902565b610a0f9061a8c0612921565b609d81905560a65560a8805460ff19166001600160a01b03851615151790556103e860a9558015610a7b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b50505050565b6000609d54421015610a9557506000919050565b60a85460ff168015610acf5750610aab8261137e565b1580610acf57506001600160a01b038216600090815260ac602052604090205460ff165b15610b515760aa60009054906101000a90046001600160a01b03166001600160a01b031663830953ab6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4b9190612934565b92915050565b62015180609d5442610b6391906128cd565b610b6d91906128e0565b609c54148015610b7f57506000609e54115b15610ba157610b8d8261133a565b610b9957609e54610b4b565b600092915050565b610b4b6114f3565b60675460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa158015610c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c30919061294d565b606580546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa158015610c8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cae919061294d565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b60ae5460009060ff16158015610ce857506000609d54115b8015610cf65750609d544210155b610d125760405162461bcd60e51b815260040161092e9061296a565b610d1b82611848565b610d545760405162461bcd60e51b815260206004820152600a6024820152690c6c2dc4ee840ccd2e6d60b31b604482015260640161092e565b610b4b82600161188c565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610da75760405162461bcd60e51b815260040161092e906129a1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610dd961193a565b6001600160a01b031614610dff5760405162461bcd60e51b815260040161092e906129db565b610e0881611956565b60408051600080825260208201909252610e249183919061195e565b50565b610e2f611751565b60008111610e895760405162461bcd60e51b815260206004820152602160248201527f6379636c65206d757374206265206174206c65617374203120646179206c6f6e6044820152606760f81b606482015260840161092e565b60a4819055600060a7556040518181527fa61e6cca2c12e2a0a493683acfe95b034f0f50d793434f4dfe3ba06ea201f344906020015b60405180910390a150565b6001600160a01b0381166000908152609b6020526040812054610eec8361137e565b15610f2357600062015180610f0183426128cd565b610f0b91906128e0565b905060a254811015610f21575060019392505050565b505b50600092915050565b60ae5460009060ff16158015610f4457506000609d54115b8015610f525750609d544210155b610f6e5760405162461bcd60e51b815260040161092e9061296a565b60675460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015610fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff4919061294d565b6001600160a01b0316632d0e9b46336040518263ffffffff1660e01b815260040161101f91906126f3565b602060405180830381865afa15801561103c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611060919061294d565b90506001600160a01b0381166110b55760405162461bcd60e51b815260206004820152601a60248201527915509254d8da195b594e881b9bdd081dda1a5d195b1a5cdd195960321b604482015260640161092e565b60006110c18233611ace565b60675460405163bf40fac160e01b815260206004820152600d60248201526c4744414f5f434c41494d45525360981b60448201529192506000916001600160a01b039091169063bf40fac190606401602060405180830381865afa15801561112d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611151919061294d565b905081801561116857506001600160a01b03811615155b156111cc5760405163748abee960e11b81526001600160a01b0382169063e9157dd2906111999086906004016126f3565b600060405180830381600087803b1580156111b357600080fd5b505af11580156111c7573d6000803e3d6000fd5b505050505b5091505090565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361121b5760405162461bcd60e51b815260040161092e906129a1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661124d61193a565b6001600160a01b0316146112735760405162461bcd60e51b815260040161092e906129db565b61127c82611956565b6112888282600161195e565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113275760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b606482015260840161092e565b50600080516020612bfa83398151915290565b609c546000908152609a602090815260408083206001600160a01b039094168352929052205460ff1690565b61136e611751565b60a055565b600061088933610a81565b6001600160a01b0381166000908152609b602052604081205415610b9957506001919050565b60ae5460009060ff161580156113bc57506000609d54115b80156113ca5750609d544210155b6113e65760405162461bcd60e51b815260040161092e9061296a565b6000805b83518210156114a557609f545a106114a55761141e84838151811061141157611411612a15565b6020026020010151611848565b156114955761144784838151811061143857611438612a15565b6020026020010151600061188c565b6114855760405162461bcd60e51b815260206004820152600f60248201526e199a5cda081a185cc819985a5b1959608a1b604482015260640161092e565b609e546114929082612921565b90505b61149e82612a2b565b91506113ea565b80156114b9576114b9333383600080611c19565b6040518281527f72b174db45b7e58932cb0c6bf37a7158f40424a078b07677d823cafdb3db540f9060200160405180910390a15092915050565b6000806114fe6116c9565b6001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161152991906126f3565b602060405180830381865afa158015611546573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156a9190612934565b9050600060a55460a4548361157f91906128e0565b119050600060a5549050600060a75461159661086b565b1015806115a05750825b156115b55760a4546115b290856128e0565b91505b6115c360a05460a954611eb2565b6115cd90836128e0565b95945050505050565b6000908152609a602052604090206001015490565b6000908152609a602052604090206002015490565b611608611751565b60a8805460ff1916911515919091179055565b600062015180609d544261162f91906128cd565b61163991906128e0565b9050609c54811115610e2457609c8190556040518181527f67eb03bd555181f9dd23f546e4331ddfb8b4a7d0c8d261ba44e037f30ce894ea90602001610ebf565b611682611751565b60a3805460ff191682151590811790915560405160ff909116151581527f6cd9a0fd2e006be39a9918bf56c85cae1d4f4599474483ff18cb93355ebaaf8e90602001610ebf565b60675460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa15801561172d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610889919061294d565b60655460408051632d77bef360e11b8152905133926001600160a01b031691635aef7de69160048083019260209291908290030181865afa15801561179a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117be919061294d565b6001600160a01b0316146118145760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f64604482015260640161092e565b565b6001600160a01b03163b151590565b606780546001600160a01b0319166001600160a01b038316179055610e24610ba9565b60006118538261137e565b8015611865575061186382610eca565b155b8015610b4b5750506001600160a01b0316600090815260ac602052604090205460ff161590565b6001600160a01b038216600090815260ac60205260408120805460ff19166001179055806118b8611ecb565b60a054909150156118dc57600160a060008282546118d691906128cd565b90915550505b82156118f0576118f0333383600080611c19565b6040518181526001600160a01b0385169033907f3c91d315d82534112f8ce552cb79133a14191077a2d715fd65cabd026fc27c749060200160405180910390a35060019392505050565b600080516020612bfa833981519152546001600160a01b031690565b610e24611751565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611996576119918361215d565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156119f0575060408051601f3d908101601f191682019092526119ed91810190612934565b60015b611a535760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161092e565b600080516020612bfa8339815191528114611ac25760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161092e565b506119918383836121f7565b600080611ad9611ecb565b9050611ae48461137e565b8015611b0957506001600160a01b038416600090815260ac602052604090205460ff16155b8015611b1b5750611b198461133a565b155b15611b3957611b2f84848360016000611c19565b6001915050610b4b565b611b428461137e565b1580611b6657506001600160a01b038416600090815260ac602052604090205460ff165b15611c0f57600160a06000828254611b7e9190612921565b90915550506001600160a01b038416600090815260ac60205260409020805460ff1916905560a85460ff1615611bc257611bbd84846000806001611c19565b611bd1565b611bd184848360016000611c19565b6040516001600160a01b038516907f2f9cfaa2a5c422dfab45f7d0da071f030fc2d3a7a1f0a255c028eff9b6d3d93690600090a26001915050610b4b565b5060009392505050565b8180611c225750805b15611cb0576001609a6000609c5481526020019081526020016000206001016000828254611c509190612921565b9091555050609c546000908152609a602090815260408083206001600160a01b03891684528252808320805460ff19166001908117909155609b835281842042905560ad9092528220805491929091611caa908490612921565b90915550505b8015611d8b5760aa54604051636bf2228d60e11b81526000916001600160a01b03169063d7e4451a90611ce79088906004016126f3565b6020604051808303816000875af1158015611d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2a9190612934565b905080609a6000609c5481526020019081526020016000206002016000828254611d549190612921565b90915550506040518181526001600160a01b03871690600080516020612bda8339815191529060200160405180910390a250611eab565b8115611de757609c546000908152609a602052604081206002018054859290611db5908490612921565b90915550506040518381526001600160a01b03861690600080516020612bda8339815191529060200160405180910390a25b6000611df16116c9565b60405163a9059cbb60e01b81529091506001600160a01b0382169063a9059cbb90611e229088908890600401612a44565b6020604051808303816000875af1158015611e41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e659190612a5d565b611ea95760405162461bcd60e51b815260206004820152601560248201527418db185a5b481d1c985b9cd9995c8819985a5b1959605a1b604482015260640161092e565b505b5050505050565b600081831015611ec25781611ec4565b825b9392505050565b6000611ed561161b565b60a154609c54141580611ee85750609e54155b15612156576000611ef76116c9565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611f2791906126f3565b602060405180830381865afa158015611f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f689190612934565b9050600060a55460a45483611f7d91906128e0565b11905060a754611f8b61086b565b101580611f955750805b1561209e5760a35460ff161561201d57611fad61221c565b6040516370a0823160e01b81526001600160a01b038416906370a0823190611fd99030906004016126f3565b602060405180830381865afa158015611ff6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201a9190612934565b91505b60a45461202a90836128e0565b60a55560a45460a75561203f610e10426128e0565b61204b90610e10612902565b60a655609c5460a45460a554604080519384526020840186905283019190915260608201527f83e0d535b9e84324e0a25922406398d6ff5f96d0c686204ee490e16d7670566f9060800160405180910390a15b609c5460a1819055600090815260ab6020526040902060a354815460ff191660ff90911615151781556001810183905560a05460a9546120de9190611eb2565b60a5546120eb91906128e0565b609e5560a05461210990612101906002906128e0565b60a954611eb2565b60a955609c54609e546040805192835260208301919091524382820152517f836fa39995340265746dfe9587d9fe5c5de35b7bce778afd9b124ce1cfeafdc49181900360600190a1505050505b50609e5490565b61216681611816565b6121c85760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161092e565b600080516020612bfa83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612200836124da565b60008251118061220d5750805b1561199157610a7b838361251a565b60006122266116c9565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161225691906126f3565b602060405180830381865afa158015612273573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122979190612934565b6066546040516370a0823160e01b81529192506000916001600160a01b03858116926370a08231926122cf92909116906004016126f3565b602060405180830381865afa1580156122ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123109190612934565b6065546040519192506001600160a01b03169063d1b7089a90859061233b9030908690602401612a44565b60408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052606654905160e085901b6001600160e01b03191681526123969392916001600160a01b031690600090600401612aca565b6000604051808303816000875af11580156123b5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123dd9190810190612afe565b50600090506123ec8284612921565b6040516370a0823160e01b81529091506001600160a01b038516906370a082319061241b9030906004016126f3565b602060405180830381865afa158015612438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245c9190612934565b81146124a45760405162461bcd60e51b8152602060048201526017602482015276111053c81d1c985b9cd9995c881a185cc819985a5b1959604a1b604482015260640161092e565b60408051848152602081018390527f3107ec7eaa50b775d2486c7a394472235804b6fe1c0d4b7bd1d79b09df60f2ba9101610a72565b6124e38161215d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061252583611816565b6125805760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161092e565b600080846001600160a01b03168460405161259b9190612b8a565b600060405180830381855af49150503d80600081146125d6576040519150601f19603f3d011682016040523d82523d6000602084013e6125db565b606091505b50915091506115cd8282604051806060016040528060278152602001612c1a602791396060831561260d575081611ec4565b611ec483838151156126225781518083602001fd5b8060405162461bcd60e51b815260040161092e9190612ba6565b6001600160a01b0381168114610e2457600080fd5b60006020828403121561266357600080fd5b8135611ec48161263c565b8015158114610e2457600080fd5b60006020828403121561268e57600080fd5b8135611ec48161266e565b6000602082840312156126ab57600080fd5b5035919050565b6000806000606084860312156126c757600080fd5b83356126d28161263c565b925060208401356126e28161263c565b929592945050506040919091013590565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561274557612745612707565b604052919050565b60006001600160401b0382111561276657612766612707565b50601f01601f191660200190565b6000806040838503121561278757600080fd5b82356127928161263c565b915060208301356001600160401b038111156127ad57600080fd5b8301601f810185136127be57600080fd5b80356127d16127cc8261274d565b61271d565b8181528660208385010111156127e657600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000602080838503121561281957600080fd5b82356001600160401b038082111561283057600080fd5b818501915085601f83011261284457600080fd5b81358181111561285657612856612707565b8060051b915061286784830161271d565b818152918301840191848101908884111561288157600080fd5b938501935b838510156128ab578435925061289b8361263c565b8282529385019390850190612886565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b4b57610b4b6128b7565b6000826128fd57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561291c5761291c6128b7565b500290565b80820180821115610b4b57610b4b6128b7565b60006020828403121561294657600080fd5b5051919050565b60006020828403121561295f57600080fd5b8151611ec48161263c565b6020808252601e908201527f6e6f7420696e20706572696f6453746172746564206f72207061757365640000604082015260600190565b6020808252602c90820152600080516020612bba83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020612bba83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060018201612a3d57612a3d6128b7565b5060010190565b6001600160a01b03929092168252602082015260400190565b600060208284031215612a6f57600080fd5b8151611ec48161266e565b60005b83811015612a95578181015183820152602001612a7d565b50506000910152565b60008151808452612ab6816020860160208601612a7a565b601f01601f19169290920160200192915050565b600060018060a01b03808716835260806020840152612aec6080840187612a9e565b94166040830152506060015292915050565b60008060408385031215612b1157600080fd5b8251612b1c8161266e565b60208401519092506001600160401b03811115612b3857600080fd5b8301601f81018513612b4957600080fd5b8051612b576127cc8261274d565b818152866020838501011115612b6c57600080fd5b612b7d826020830160208601612a7a565b8093505050509250929050565b60008251612b9c818460208701612a7a565b9190910192915050565b602081526000611ec46020830184612a9e56fe46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682089ed24731df6b066e4c5186901fffdba18cd9a10f07494aff900bdee260d1304360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122060e348113a715c388299f6553a21dc518e0e7f813baf2528bd4222eb0243167864736f6c63430008100033";
989
989
 
990
990
  type UBISchemeConstructorParams =
991
991
  | [signer?: Signer]
@@ -1,120 +0,0 @@
1
- /***
2
- * This script will deploy a fixed goodfundmanager that doenst disable staking contracts if rewards=0
3
- * It will also then re submit the staking contracts
4
- */
5
-
6
- import { network, ethers } from "hardhat";
7
-
8
- import {
9
- executeViaGuardian,
10
- executeViaSafe
11
- } from "../multichain-deploy/helpers";
12
-
13
- import releaser from "../releaser";
14
- import dao from "../../releases/deployment.json";
15
- const { name: networkName } = network;
16
-
17
- export const deployMainnet = async () => {
18
- let [root, ...signers] = await ethers.getSigners();
19
-
20
- let executionMethod = networkName === "localhost" ? "guardians" : "safe";
21
-
22
- const networkKey =
23
- networkName === "localhost" ? "production-mainnet" : networkName;
24
- let release: { [key: string]: any } = dao[networkKey];
25
-
26
- let safeOwner = new ethers.Wallet(
27
- process.env.SAFEOWNER_PRIVATE_KEY || ethers.constants.HashZero,
28
- ethers.provider
29
- );
30
-
31
- //test with guardians safe on hardhat mainnet fork
32
- if (network.name === "localhost") {
33
- root = await ethers.getImpersonatedSigner(
34
- "0xE0c5daa7CC6F88d29505f702a53bb5E67600e7Ec"
35
- );
36
- await signers[0].sendTransaction({
37
- to: root.address,
38
- value: ethers.constants.WeiPerEther
39
- });
40
- }
41
-
42
- console.log("got signers:", {
43
- networkName,
44
- networkKey,
45
- root: root.address,
46
- safeOwner: safeOwner.address,
47
- balance: await ethers.provider
48
- .getBalance(root.address)
49
- .then(_ => _.toString())
50
- });
51
-
52
- console.log("deploying goodfundmanager implementation");
53
- const gfmImpl = await (
54
- await ethers.getContractFactory("GoodFundManager")
55
- ).deploy();
56
-
57
- const proposalContracts = [
58
- release.GoodFundManager, //Fundmanager -> upgrade to new version
59
- release.GoodFundManager, //Fundmanager -> set staking rewards compound to 0
60
- release.GoodFundManager //Fundmanager -> set staking rewards aave to 0
61
- ];
62
-
63
- const proposalEthValues = proposalContracts.map(_ => 0);
64
-
65
- const proposalFunctionSignatures = [
66
- "upgradeTo(address)",
67
- "setStakingReward(uint32,address,uint32,uint32,bool)",
68
- "setStakingReward(uint32,address,uint32,uint32,bool)"
69
- ];
70
-
71
- const proposalFunctionInputs = [
72
- ethers.utils.defaultAbiCoder.encode(["address"], [gfmImpl.address]), //upgradeTo(address)
73
- ethers.utils.defaultAbiCoder.encode(
74
- ["uint32", "address", "uint32", "uint32", "bool"],
75
- [
76
- "0",
77
- "0x7b7246c78e2f900d17646ff0cb2ec47d6ba10754",
78
- "14338692",
79
- "4294967295",
80
- false
81
- ]
82
- ), //setstakingrewards to 0
83
- ethers.utils.defaultAbiCoder.encode(
84
- ["uint32", "address", "uint32", "uint32", "bool"],
85
- [
86
- "0",
87
- "0x3ff2d8eb2573819a9ef7167d2ba6fd6d31b17f4f",
88
- "14338692",
89
- "4294967295",
90
- false
91
- ]
92
- ) //setstakingrewards to 0
93
- ];
94
-
95
- if (executionMethod === "safe") {
96
- return executeViaSafe(
97
- proposalContracts,
98
- proposalEthValues,
99
- proposalFunctionSignatures,
100
- proposalFunctionInputs,
101
- networkName === "localhost"
102
- ? "0xE0c5daa7CC6F88d29505f702a53bb5E67600e7Ec"
103
- : release.GuardiansSafe,
104
- safeOwner
105
- );
106
- } else {
107
- return executeViaGuardian(
108
- proposalContracts,
109
- proposalEthValues,
110
- proposalFunctionSignatures,
111
- proposalFunctionInputs,
112
- root
113
- );
114
- }
115
- };
116
-
117
- export const main = async () => {
118
- await deployMainnet().catch(console.log);
119
- };
120
- if (process.argv[1].includes("v3-fix")) main();
@@ -1,219 +0,0 @@
1
- /***
2
- * This script will deploy a reserve upgrade and the DistributionHelper so that some of the expansion can be allocated
3
- * for non-ubi purposes
4
- * Upgrade process:
5
- * mainnet:
6
- * - deploy reserve
7
- * - deploy distributionHelper
8
- * - create proposal that:
9
- * - upgrades the reserve
10
- * - sets the distributionHelper at reserve with the agreed bps
11
- * - add to the distributionHelper the contracts addresses to receive part of the UBI
12
- */
13
-
14
- import { network, ethers } from "hardhat";
15
-
16
- import {
17
- deployDeterministic,
18
- printDeploy,
19
- executeViaGuardian,
20
- executeViaSafe
21
- } from "../multichain-deploy/helpers";
22
-
23
- import releaser from "../releaser";
24
- import dao from "../../releases/deployment.json";
25
- import {
26
- CompoundVotingMachine,
27
- DistributionHelper,
28
- Controller,
29
- NameService
30
- } from "../../types";
31
- const { name: networkName } = network;
32
-
33
- export const deployMainnet = async () => {
34
- let [root, ...signers] = await ethers.getSigners();
35
-
36
- let executionMethod = "safe";
37
- let communitySafe = "0x5Eb5f5fE13d1D5e6440DbD5913412299Bc5B5564";
38
-
39
- const networkKey =
40
- networkName === "localhost" ? "production-mainnet" : networkName;
41
- let release: { [key: string]: any } = dao[networkKey];
42
-
43
- let safeOwner = new ethers.Wallet(
44
- process.env.SAFEOWNER_PRIVATE_KEY || ethers.constants.HashZero,
45
- ethers.provider
46
- );
47
- //test with guardians safe on hardhat mainnet fork
48
- if (network.name === "localhost") {
49
- root = await ethers.getImpersonatedSigner(
50
- "0xE0c5daa7CC6F88d29505f702a53bb5E67600e7Ec"
51
- );
52
- await signers[0].sendTransaction({
53
- to: root.address,
54
- value: ethers.constants.WeiPerEther
55
- });
56
- }
57
-
58
- console.log("got signers:", {
59
- networkName,
60
- networkKey,
61
- root: root.address,
62
- safeOwner: safeOwner.address,
63
- balance: await ethers.provider
64
- .getBalance(root.address)
65
- .then(_ => _.toString())
66
- });
67
-
68
- console.log("deploying reserve implementation");
69
- const reserveImpl = await (
70
- await ethers.getContractFactory("GoodReserveCDai")
71
- ).deploy();
72
-
73
- console.log("deploying DistributionHelper");
74
-
75
- let DHelper: DistributionHelper;
76
- if (!release.DistributionHelper) {
77
- DHelper = (await deployDeterministic(
78
- {
79
- name: "DistributionHelper",
80
- salt: "DistributionHelper",
81
- isUpgradeable: true
82
- },
83
- [release.NameService]
84
- ).then(printDeploy)) as DistributionHelper;
85
-
86
- let torelease = {
87
- DistributionHelper: DHelper.address
88
- };
89
-
90
- await releaser(torelease, networkName, "deployment", false);
91
- } else {
92
- DHelper = (await ethers.getContractAt(
93
- "DistributionHelper",
94
- release.DistributionHelper
95
- )) as DistributionHelper;
96
- }
97
- DHelper;
98
-
99
- const ns = (await ethers.getContractAt(
100
- "NameService",
101
- release.NameService
102
- )) as NameService;
103
-
104
- const proposalContracts = [
105
- ns.address, //nameservice add DistributionHelper,MultiChainRouter,MultiChain AnyGoodDollar,
106
- DHelper.address, //update addresses from nameservice
107
- DHelper.address, //distribution helper -> add fuse community pool as recipient with 100%
108
- release.GoodReserveCDai, //upgradeTo
109
- release.GoodReserveCDai, //Reserve -> set distribution helper + non ubi bps
110
- release.GoodReserveCDai, //Reserve -> set new decline rate
111
- release.GoodFundManager, //Fundmanager -> set staking rewards compound to 0
112
- release.GoodFundManager //Fundmanager -> set staking rewards aave to 0
113
- ];
114
-
115
- const proposalEthValues = proposalContracts.map(_ => 0);
116
-
117
- const proposalFunctionSignatures = [
118
- "setAddresses(bytes32[],address[])",
119
- "updateAddresses()",
120
- "addOrUpdateRecipient((uint32,uint32,address,uint8))",
121
- "upgradeTo(address)",
122
- "setDistributionHelper(address,uint32)",
123
- "setReserveRatioDailyExpansion(uint256,uint256)",
124
- "setStakingReward(uint32,address,uint32,uint32,bool)",
125
- "setStakingReward(uint32,address,uint32,uint32,bool)"
126
- ];
127
-
128
- const proposalFunctionInputs = [
129
- ethers.utils.defaultAbiCoder.encode(
130
- ["bytes32[]", "address[]"],
131
- [
132
- [
133
- ethers.utils.keccak256(
134
- ethers.utils.toUtf8Bytes("DISTRIBUTION_HELPER")
135
- ),
136
- ethers.utils.keccak256(ethers.utils.toUtf8Bytes("MULTICHAIN_ROUTER")),
137
- ethers.utils.keccak256(
138
- ethers.utils.toUtf8Bytes("MULTICHAIN_ANYGOODDOLLAR")
139
- )
140
- ],
141
- [DHelper.address, release.MultichainRouter, release.AnyGoodDollar]
142
- ]
143
- ), //setAddresses(bytes32[],address[])"
144
- ethers.utils.defaultAbiCoder.encode([], []), //updateAddresses()
145
- ethers.utils.defaultAbiCoder.encode(
146
- ["uint32", "uint32", "address", "uint8"],
147
- [
148
- 10000, //100% bps
149
- 122, //chainid
150
- communitySafe, //recipient address,
151
- 0 //recipient type via fuse bridge
152
- ]
153
- ), //addOrUpdateRecipient((uint32,uint32,address,uint8))
154
- ethers.utils.defaultAbiCoder.encode(["address"], [reserveImpl.address]), //upgradeTo(address)
155
- ethers.utils.defaultAbiCoder.encode(
156
- ["address", "uint32"],
157
- [DHelper.address, 1000]
158
- ), //setDistributionHelper(address,uint32)
159
- ethers.utils.defaultAbiCoder.encode(
160
- ["uint256", "uint256"],
161
- ["999554841771249", "1000000000000000"] //15% a year
162
- ), //setReserveRatioDailyExpansion(uint,uint)
163
- ethers.utils.defaultAbiCoder.encode(
164
- ["uint32", "address", "uint32", "uint32", "bool"],
165
- [
166
- "0",
167
- "0x7b7246c78e2f900d17646ff0cb2ec47d6ba10754",
168
- "14338692",
169
- "4294967295",
170
- false
171
- ]
172
- ), //setstakingrewards to 0
173
- ethers.utils.defaultAbiCoder.encode(
174
- ["uint32", "address", "uint32", "uint32", "bool"],
175
- [
176
- "0",
177
- "0x3ff2d8eb2573819a9ef7167d2ba6fd6d31b17f4f",
178
- "14338692",
179
- "4294967295",
180
- false
181
- ]
182
- ) //setstakingrewards to 0
183
- ];
184
-
185
- //make sure rewards accumulated before we set them to 0
186
- const staking = await ethers.getContractAt(
187
- "SimpleStakingV2",
188
- "0x7b7246c78e2f900d17646ff0cb2ec47d6ba10754"
189
- );
190
- (await staking.withdrawRewards()).wait();
191
- staking.attach("0x3ff2d8eb2573819a9ef7167d2ba6fd6d31b17f4f");
192
- (await staking.withdrawRewards()).wait();
193
-
194
- if (executionMethod === "safe") {
195
- return executeViaSafe(
196
- proposalContracts,
197
- proposalEthValues,
198
- proposalFunctionSignatures,
199
- proposalFunctionInputs,
200
- networkName === "localhost"
201
- ? "0xE0c5daa7CC6F88d29505f702a53bb5E67600e7Ec"
202
- : release.GuardiansSafe,
203
- safeOwner
204
- );
205
- } else {
206
- return executeViaGuardian(
207
- proposalContracts,
208
- proposalEthValues,
209
- proposalFunctionSignatures,
210
- proposalFunctionInputs,
211
- root
212
- );
213
- }
214
- };
215
-
216
- export const main = async () => {
217
- await deployMainnet().catch(console.log);
218
- };
219
- if (process.argv[1].includes("v3-upgrade")) main();