@gooddollar/goodprotocol 1.0.0-beta.32 → 1.0.0-beta.42

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 (167) hide show
  1. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  2. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  3. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  4. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  5. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  6. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  7. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  8. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  9. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  10. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  11. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  12. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  13. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  14. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  15. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  16. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  17. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  18. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  19. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  20. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  21. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  22. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  23. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  24. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  25. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  26. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  27. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.json +2 -2
  28. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  29. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.json +60 -21
  30. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  31. package/artifacts/contracts/governance/GReputation.sol/GReputation.json +2 -2
  32. package/artifacts/contracts/governance/GovarnanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  33. package/artifacts/contracts/governance/GovarnanceStaking.sol/GovernanceStaking.json +2 -2
  34. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  35. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  36. package/artifacts/contracts/governance/Reputation.sol/Reputation.json +2 -2
  37. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  38. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.json +2 -2
  39. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  40. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.json +2 -2
  41. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
  42. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.json +2 -2
  43. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
  44. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.json +2 -2
  45. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
  46. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.json +2 -2
  47. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  48. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.json +2 -2
  49. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.dbg.json +1 -1
  50. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.json +2 -2
  51. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  52. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.json +2 -2
  53. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
  54. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.json +2 -2
  55. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
  56. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.json +2 -2
  57. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  58. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.json +6 -6
  59. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  60. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.json +2 -2
  61. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  62. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.json +2 -2
  63. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  64. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.json +2 -2
  65. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  66. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.json +2 -2
  67. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  68. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.json +2 -2
  69. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  70. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.json +2 -2
  71. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  72. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.json +2 -2
  73. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  74. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.json +2 -2
  75. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +4 -0
  76. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.json +224 -0
  77. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +4 -0
  78. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.json +198 -0
  79. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  80. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.json +2 -2
  81. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  82. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.json +2 -2
  83. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  84. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.json +2 -2
  85. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  86. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.json +2 -2
  87. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  88. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.json +2 -2
  89. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  90. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.json +2 -2
  91. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  92. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.json +2 -2
  93. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  94. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.json +2 -2
  95. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  96. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.json +2 -2
  97. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  98. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.json +2 -2
  99. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  100. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  101. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.json +2 -2
  102. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  103. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.json +2 -2
  104. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  105. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.json +2 -2
  106. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  107. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.json +2 -2
  108. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  109. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  110. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.json +2 -2
  111. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  112. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.json +3 -3
  113. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  114. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.json +4 -4
  115. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  116. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.json +4 -4
  117. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  118. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.json +6 -6
  119. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  120. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +2 -2
  121. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  122. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.json +2 -2
  123. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  124. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.json +2 -2
  125. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  126. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.json +2 -2
  127. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  128. package/artifacts/contracts/utils/DSMath.sol/DSMath.json +2 -2
  129. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  130. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.json +2 -2
  131. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  132. package/artifacts/contracts/utils/NameService.sol/NameService.json +2 -2
  133. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  134. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  135. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.json +7 -2
  136. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  137. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.json +7 -2
  138. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +4 -0
  139. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.json +95 -0
  140. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +4 -0
  141. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.json +185 -0
  142. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  143. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.json +2 -2
  144. package/contracts/governance/CompoundVotingMachine.sol +99 -83
  145. package/contracts/governance/GovarnanceStaking.sol +3 -5
  146. package/contracts/mocks/UpgradableMocks.sol +31 -0
  147. package/contracts/utils/DAOUpgradeableContract.sol +1 -1
  148. package/contracts/utils/ProtocolUpgrade.sol +7 -14
  149. package/contracts/utils/ProtocolUpgradeFuse.sol +2 -2
  150. package/contracts/utils/ProxyFactory1967.sol +153 -0
  151. package/hardhat.config.ts +1 -1
  152. package/package.json +8 -8
  153. package/releases/deploy-settings.json +3 -3
  154. package/releases/deployment.json +1 -1
  155. package/releases/olddao.json +1 -1
  156. package/scripts/gdx/gdxAirdropCalculation.ts +11 -10
  157. package/scripts/governance/airdropCalculation.ts +235 -65
  158. package/scripts/releaser.js +11 -5
  159. package/scripts/upgradeToV2/upgradeToV2.ts +353 -228
  160. package/test/governance/CompoundVotingMachine.daoscheme.ts +124 -10
  161. package/test/governance/CompoundVotingMachine.guardian.test.ts +38 -7
  162. package/test/localOldDaoDeploy.ts +24 -24
  163. package/test/staking/DonationsStaking.test.ts +13 -12
  164. package/test/utils/ProxyFactory.test.ts +102 -0
  165. package/tsconfig.json +1 -1
  166. package/yarn.lock +253 -32
  167. package/test/simulateInterest.ts +0 -85
@@ -691,8 +691,8 @@
691
691
  "type": "function"
692
692
  }
693
693
  ],
694
- "bytecode": "0x60806040523480156200001157600080fd5b50604051620052fb380380620052fb833981810160405281019062000037919062000f80565b6200006b7fb82068fd703ddd22684960e759016bb77f9639421654bcba9f922573a1b4bd6860001b620001da60201b60201c565b6200009f7f3ffb1686913c2d073046f8892032b086bc94fb860bff37f7edf56f5213c1a73760001b620001da60201b60201c565b620000d37f74a41d10a6f3076ffeb08cbf1d03d94936ace8ea53a89944e2eec9abed509ead60001b620001da60201b60201c565b6200014f6040518060400160405280601481526020017f456967687420446563696d616c7320546f6b656e0000000000000000000000008152506040518060400160405280600381526020017f4544540000000000000000000000000000000000000000000000000000000000815250620001dd60201b60201c565b620001837fec883ff74d105ae729db4384592daa2a96238963572ba17f9125f7bf0a49b77c60001b620001da60201b60201c565b620001b77f8f040ce547940aa920fb978d95dc2990b75606441be3fbba37a9430ca5cd6d8460001b620001da60201b60201c565b806101c360006101000a81548160ff021916908360ff16021790555050620010e1565b50565b600060019054906101000a900460ff168062000204575060008054906101000a900460ff16155b62000246576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200023d9062000fd3565b60405180910390fd5b60008060019054906101000a900460ff16159050801562000297576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b620002a76200035260201b60201c565b620002b76200043160201b60201c565b620002c76200051060201b60201c565b620002d7620005ef60201b60201c565b620002e98383620006ce60201b60201c565b620002f9620007e160201b60201c565b62000309620008c060201b60201c565b62000319620009bb60201b60201c565b6200032b838362000a9a60201b60201c565b80156200034d5760008060016101000a81548160ff0219169083151502179055505b505050565b600060019054906101000a900460ff168062000379575060008054906101000a900460ff16155b620003bb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003b29062000fd3565b60405180910390fd5b60008060019054906101000a900460ff1615905080156200040c576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156200042e5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff168062000458575060008054906101000a900460ff16155b6200049a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004919062000fd3565b60405180910390fd5b60008060019054906101000a900460ff161590508015620004eb576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156200050d5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff168062000537575060008054906101000a900460ff16155b62000579576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005709062000fd3565b60405180910390fd5b60008060019054906101000a900460ff161590508015620005ca576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b8015620005ec5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff168062000616575060008054906101000a900460ff16155b62000658576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200064f9062000fd3565b60405180910390fd5b60008060019054906101000a900460ff161590508015620006a9576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b8015620006cb5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680620006f5575060008054906101000a900460ff16155b62000737576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200072e9062000fd3565b60405180910390fd5b60008060019054906101000a900460ff16159050801562000788576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b8260cc9080519060200190620007a092919062000eb9565b508160cd9080519060200190620007b992919062000eb9565b508015620007dc5760008060016101000a81548160ff0219169083151502179055505b505050565b600060019054906101000a900460ff168062000808575060008054906101000a900460ff16155b6200084a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008419062000fd3565b60405180910390fd5b60008060019054906101000a900460ff1615905080156200089b576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b8015620008bd5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680620008e7575060008054906101000a900460ff16155b62000929576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009209062000fd3565b60405180910390fd5b60008060019054906101000a900460ff1615905080156200097a576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b600061012d60006101000a81548160ff0219169083151502179055508015620009b85760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680620009e2575060008054906101000a900460ff16155b62000a24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a1b9062000fd3565b60405180910390fd5b60008060019054906101000a900460ff16159050801562000a75576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b801562000a975760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff168062000ac1575060008054906101000a900460ff16155b62000b03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000afa9062000fd3565b60405180910390fd5b60008060019054906101000a900460ff16159050801562000b54576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b62000b786000801b62000b6c62000c2160201b60201c565b62000c2960201b60201c565b62000bb97f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a662000bad62000c2160201b60201c565b62000c2960201b60201c565b62000bfa7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a62000bee62000c2160201b60201c565b62000c2960201b60201c565b801562000c1c5760008060016101000a81548160ff0219169083151502179055505b505050565b600033905090565b62000c40828262000c7160201b6200103c1760201c565b62000c6c816097600085815260200190815260200160002062000c8760201b6200104a1790919060201c565b505050565b62000c83828262000cbf60201b60201c565b5050565b600062000cb7836000018373ffffffffffffffffffffffffffffffffffffffff1660001b62000db160201b60201c565b905092915050565b62000cd1828262000e2b60201b60201c565b62000dad5760016065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000d5262000c2160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600062000dc5838362000e9660201b60201c565b62000e2057826000018290806001815401808255809150506001900390600052602060002001600090919091909150558260000180549050836001016000848152602001908152602001600020819055506001905062000e25565b600090505b92915050565b60006065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b82805462000ec79062001013565b90600052602060002090601f01602090048101928262000eeb576000855562000f37565b82601f1062000f0657805160ff191683800117855562000f37565b8280016001018555821562000f37579182015b8281111562000f3657825182559160200191906001019062000f19565b5b50905062000f46919062000f4a565b5090565b5b8082111562000f6557600081600090555060010162000f4b565b5090565b60008151905062000f7a81620010c7565b92915050565b60006020828403121562000f9357600080fd5b600062000fa38482850162000f69565b91505092915050565b600062000fbb602e8362000ff5565b915062000fc88262001078565b604082019050919050565b6000602082019050818103600083015262000fee8162000fac565b9050919050565b600082825260208201905092915050565b600060ff82169050919050565b600060028204905060018216806200102c57607f821691505b6020821081141562001043576200104262001049565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b620010d28162001006565b8114620010de57600080fd5b50565b61420a80620010f16000396000f3fe608060405234801561001057600080fd5b506004361061016a5760003560e01c806301ffc9a71461016f57806306fdde031461019f578063095ea7b3146101bd57806318160ddd146101ed57806323b872dd1461020b578063248a9ca31461023b5780632f2ff15d1461026b578063313ce5671461028757806336568abe146102a557806338acbf11146102c157806339509351146102dd5780633f4ba83a1461030d57806340c10f191461031757806342966c68146103335780634cd88b761461034f5780635c975abb1461036b57806370a082311461038957806379cc6790146103b95780638456cb59146103d55780639010d07c146103df57806391d148541461040f57806395d89b411461043f578063a217fddf1461045d578063a457c2d71461047b578063a9059cbb146104ab578063ca15c873146104db578063d53913931461050b578063d547741f14610529578063dd62ed3e14610545578063e63ab1e914610575575b600080fd5b61018960048036038101906101849190613061565b610593565b604051610196919061352b565b60405180910390f35b6101a761060d565b6040516101b49190613561565b60405180910390f35b6101d760048036038101906101d29190612f84565b61069f565b6040516101e4919061352b565b60405180910390f35b6101f56106bd565b6040516102029190613803565b60405180910390f35b61022560048036038101906102209190612f35565b6106c7565b604051610232919061352b565b60405180910390f35b61025560048036038101906102509190612fc0565b6107bf565b6040516102629190613546565b60405180910390f35b61028560048036038101906102809190612fe9565b6107df565b005b61028f610813565b60405161029c919061381e565b60405180910390f35b6102bf60048036038101906102ba9190612fe9565b6108af565b005b6102db60048036038101906102d69190612fc0565b6108e3565b005b6102f760048036038101906102f29190612f84565b6108e6565b604051610304919061352b565b60405180910390f35b610315610992565b005b610331600480360381019061032c9190612f84565b610a0c565b005b61034d600480360381019061034891906130f6565b610a8a565b005b6103696004803603810190610364919061308a565b610a9e565b005b610373610b83565b604051610380919061352b565b60405180910390f35b6103a3600480360381019061039e9190612ed0565b610b9b565b6040516103b09190613803565b60405180910390f35b6103d360048036038101906103ce9190612f84565b610be4565b005b6103dd610c5f565b005b6103f960048036038101906103f49190613025565b610cd9565b6040516104069190613510565b60405180910390f35b61042960048036038101906104249190612fe9565b610d08565b604051610436919061352b565b60405180910390f35b610447610d73565b6040516104549190613561565b60405180910390f35b610465610e05565b6040516104729190613546565b60405180910390f35b61049560048036038101906104909190612f84565b610e0c565b6040516104a2919061352b565b60405180910390f35b6104c560048036038101906104c09190612f84565b610ef7565b6040516104d2919061352b565b60405180910390f35b6104f560048036038101906104f09190612fc0565b610f15565b6040516105029190613803565b60405180910390f35b610513610f39565b6040516105209190613546565b60405180910390f35b610543600480360381019061053e9190612fe9565b610f5d565b005b61055f600480360381019061055a9190612ef9565b610f91565b60405161056c9190613803565b60405180910390f35b61057d611018565b60405161058a9190613546565b60405180910390f35b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061060657506106058261107a565b5b9050919050565b606060cc805461061c90613a91565b80601f016020809104026020016040519081016040528092919081815260200182805461064890613a91565b80156106955780601f1061066a57610100808354040283529160200191610695565b820191906000526020600020905b81548152906001019060200180831161067857829003601f168201915b5050505050905090565b60006106b36106ac6110f4565b84846110fc565b6001905092915050565b600060cb54905090565b60006106d48484846112c7565b600060ca60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061071f6110f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561079f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610796906136a3565b60405180910390fd5b6107b3856107ab6110f4565b8584036110fc565b60019150509392505050565b600060656000838152602001908152602001600020600101549050919050565b6107e9828261154b565b61080e816097600085815260200190815260200160002061104a90919063ffffffff16565b505050565b60006108417fff7e062ccd94ccf8072cadf83b5f019480b3601b792eee8c68b287e9d127a20760001b6108e3565b61086d7ffeabe1ef4a1a49fce4c8ee2efdc589c00940ab03ade63bcd38e3af38f36dee3a60001b6108e3565b6108997f5da4ebc64c7e3eb88d71ae6b8c0d915398c30d08c386b7fb1de5d49999aada6660001b6108e3565b6101c360009054906101000a900460ff16905090565b6108b98282611574565b6108de81609760008581526020019081526020016000206115f790919063ffffffff16565b505050565b50565b60006109886108f36110f4565b848460ca60006109016110f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461098391906138b6565b6110fc565b6001905092915050565b6109c37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6109be6110f4565b610d08565b610a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f990613603565b60405180910390fd5b610a0a611627565b565b610a3d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610a386110f4565b610d08565b610a7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a73906136c3565b60405180910390fd5b610a8682826116ca565b5050565b610a9b610a956110f4565b8261182b565b50565b600060019054906101000a900460ff1680610ac4575060008054906101000a900460ff16155b610b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afa90613683565b60405180910390fd5b60008060019054906101000a900460ff161590508015610b53576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b610b5d8383611a04565b8015610b7e5760008060016101000a81548160ff0219169083151502179055505b505050565b600061012d60009054906101000a900460ff16905090565b600060c960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610bf783610bf26110f4565b610f91565b905081811015610c3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c33906136e3565b60405180910390fd5b610c5083610c486110f4565b8484036110fc565b610c5a838361182b565b505050565b610c907f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c8b6110f4565b610d08565b610ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc690613763565b60405180910390fd5b610cd7611b2b565b565b6000610d008260976000868152602001908152602001600020611bcf90919063ffffffff16565b905092915050565b60006065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060cd8054610d8290613a91565b80601f0160208091040260200160405190810160405280929190818152602001828054610dae90613a91565b8015610dfb5780601f10610dd057610100808354040283529160200191610dfb565b820191906000526020600020905b815481529060010190602001808311610dde57829003601f168201915b5050505050905090565b6000801b81565b60008060ca6000610e1b6110f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecf90613783565b60405180910390fd5b610eec610ee36110f4565b858584036110fc565b600191505092915050565b6000610f0b610f046110f4565b84846112c7565b6001905092915050565b6000610f3260976000848152602001908152602001600020611be9565b9050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b610f678282611bfe565b610f8c81609760008581526020019081526020016000206115f790919063ffffffff16565b505050565b600060ca60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6110468282611c27565b5050565b6000611072836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611d08565b905092915050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806110ed57506110ec82611d78565b5b9050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561116c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116390613743565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d390613623565b60405180910390fd5b8060ca60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112ba9190613803565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132e90613723565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139e906135a3565b60405180910390fd5b6113b2838383611de2565b600060c960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611439576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143090613643565b60405180910390fd5b81810360c960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160c960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114ce91906138b6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115329190613803565b60405180910390a3611545848484611df2565b50505050565b611554826107bf565b611565816115606110f4565b611df7565b61156f8383611c27565b505050565b61157c6110f4565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e0906137a3565b60405180910390fd5b6115f38282611e94565b5050565b600061161f836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611f76565b905092915050565b61162f610b83565b61166e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611665906135c3565b60405180910390fd5b600061012d60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6116b36110f4565b6040516116c09190613510565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561173a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611731906137c3565b60405180910390fd5b61174660008383611de2565b8060cb600082825461175891906138b6565b925050819055508060c960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117ae91906138b6565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118139190613803565b60405180910390a361182760008383611df2565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561189b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189290613703565b60405180910390fd5b6118a782600083611de2565b600060c960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561192e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611925906135e3565b60405180910390fd5b81810360c960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160cb60008282546119869190613966565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119eb9190613803565b60405180910390a36119ff83600084611df2565b505050565b600060019054906101000a900460ff1680611a2a575060008054906101000a900460ff16155b611a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6090613683565b60405180910390fd5b60008060019054906101000a900460ff161590508015611ab9576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b611ac16120fc565b611ac96121d5565b611ad16122ae565b611ad9612387565b611ae38383612460565b611aeb612569565b611af3612642565b611afb612737565b611b058383612810565b8015611b265760008060016101000a81548160ff0219169083151502179055505b505050565b611b33610b83565b15611b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6a90613663565b60405180910390fd5b600161012d60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611bb86110f4565b604051611bc59190613510565b60405180910390a1565b6000611bde8360000183612961565b60001c905092915050565b6000611bf7826000016129b2565b9050919050565b611c07826107bf565b611c1881611c136110f4565b611df7565b611c228383611e94565b505050565b611c318282610d08565b611d045760016065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611ca96110f4565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000611d1483836129c3565b611d6d578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050611d72565b600090505b92915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611ded8383836129e6565b505050565b505050565b611e018282610d08565b611e9057611e268173ffffffffffffffffffffffffffffffffffffffff166014612a3e565b611e348360001c6020612a3e565b604051602001611e459291906134d6565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e879190613561565b60405180910390fd5b5050565b611e9e8282610d08565b15611f725760006065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611f176110f4565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600080836001016000848152602001908152602001600020549050600081146120f0576000600182611fa89190613966565b9050600060018660000180549050611fc09190613966565b905081811461207b576000866000018281548110612007577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905080876000018481548110612051577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b856000018054806120b5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506120f6565b60009150505b92915050565b600060019054906101000a900460ff1680612122575060008054906101000a900460ff16155b612161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215890613683565b60405180910390fd5b60008060019054906101000a900460ff1615905080156121b1576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156121d25760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff16806121fb575060008054906101000a900460ff16155b61223a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223190613683565b60405180910390fd5b60008060019054906101000a900460ff16159050801561228a576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156122ab5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff16806122d4575060008054906101000a900460ff16155b612313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230a90613683565b60405180910390fd5b60008060019054906101000a900460ff161590508015612363576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156123845760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff16806123ad575060008054906101000a900460ff16155b6123ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e390613683565b60405180910390fd5b60008060019054906101000a900460ff16159050801561243c576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b801561245d5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680612486575060008054906101000a900460ff16155b6124c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124bc90613683565b60405180910390fd5b60008060019054906101000a900460ff161590508015612515576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b8260cc908051906020019061252b929190612d71565b508160cd9080519060200190612542929190612d71565b5080156125645760008060016101000a81548160ff0219169083151502179055505b505050565b600060019054906101000a900460ff168061258f575060008054906101000a900460ff16155b6125ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c590613683565b60405180910390fd5b60008060019054906101000a900460ff16159050801561261e576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b801561263f5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680612668575060008054906101000a900460ff16155b6126a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269e90613683565b60405180910390fd5b60008060019054906101000a900460ff1615905080156126f7576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b600061012d60006101000a81548160ff02191690831515021790555080156127345760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff168061275d575060008054906101000a900460ff16155b61279c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279390613683565b60405180910390fd5b60008060019054906101000a900460ff1615905080156127ec576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b801561280d5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680612836575060008054906101000a900460ff16155b612875576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286c90613683565b60405180910390fd5b60008060019054906101000a900460ff1615905080156128c5576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6128d96000801b6128d46110f4565b612d38565b61290a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66129056110f4565b612d38565b61293b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6129366110f4565b612d38565b801561295c5760008060016101000a81548160ff0219169083151502179055505b505050565b600082600001828154811061299f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905092915050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020541415905092915050565b6129f1838383612d6c565b6129f9610b83565b15612a39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a30906137e3565b60405180910390fd5b505050565b606060006002836002612a51919061390c565b612a5b91906138b6565b67ffffffffffffffff811115612a9a577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612acc5781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612b2a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612bb4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002612bf4919061390c565b612bfe91906138b6565b90505b6001811115612cea577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110612c66577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b1a60f81b828281518110612ca3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080612ce390613a67565b9050612c01565b5060008414612d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2590613583565b60405180910390fd5b8091505092915050565b612d42828261103c565b612d67816097600085815260200190815260200160002061104a90919063ffffffff16565b505050565b505050565b828054612d7d90613a91565b90600052602060002090601f016020900481019282612d9f5760008555612de6565b82601f10612db857805160ff1916838001178555612de6565b82800160010185558215612de6579182015b82811115612de5578251825591602001919060010190612dca565b5b509050612df39190612df7565b5090565b5b80821115612e10576000816000905550600101612df8565b5090565b6000612e27612e228461385e565b613839565b905082815260208101848484011115612e3f57600080fd5b612e4a848285613a25565b509392505050565b600081359050612e6181614178565b92915050565b600081359050612e768161418f565b92915050565b600081359050612e8b816141a6565b92915050565b600082601f830112612ea257600080fd5b8135612eb2848260208601612e14565b91505092915050565b600081359050612eca816141bd565b92915050565b600060208284031215612ee257600080fd5b6000612ef084828501612e52565b91505092915050565b60008060408385031215612f0c57600080fd5b6000612f1a85828601612e52565b9250506020612f2b85828601612e52565b9150509250929050565b600080600060608486031215612f4a57600080fd5b6000612f5886828701612e52565b9350506020612f6986828701612e52565b9250506040612f7a86828701612ebb565b9150509250925092565b60008060408385031215612f9757600080fd5b6000612fa585828601612e52565b9250506020612fb685828601612ebb565b9150509250929050565b600060208284031215612fd257600080fd5b6000612fe084828501612e67565b91505092915050565b60008060408385031215612ffc57600080fd5b600061300a85828601612e67565b925050602061301b85828601612e52565b9150509250929050565b6000806040838503121561303857600080fd5b600061304685828601612e67565b925050602061305785828601612ebb565b9150509250929050565b60006020828403121561307357600080fd5b600061308184828501612e7c565b91505092915050565b6000806040838503121561309d57600080fd5b600083013567ffffffffffffffff8111156130b757600080fd5b6130c385828601612e91565b925050602083013567ffffffffffffffff8111156130e057600080fd5b6130ec85828601612e91565b9150509250929050565b60006020828403121561310857600080fd5b600061311684828501612ebb565b91505092915050565b6131288161399a565b82525050565b613137816139ac565b82525050565b613146816139b8565b82525050565b60006131578261388f565b613161818561389a565b9350613171818560208601613a34565b61317a81613b81565b840191505092915050565b60006131908261388f565b61319a81856138ab565b93506131aa818560208601613a34565b80840191505092915050565b60006131c360208361389a565b91506131ce82613b92565b602082019050919050565b60006131e660238361389a565b91506131f182613bbb565b604082019050919050565b600061320960148361389a565b915061321482613c0a565b602082019050919050565b600061322c60228361389a565b915061323782613c33565b604082019050919050565b600061324f60398361389a565b915061325a82613c82565b604082019050919050565b600061327260228361389a565b915061327d82613cd1565b604082019050919050565b600061329560268361389a565b91506132a082613d20565b604082019050919050565b60006132b860108361389a565b91506132c382613d6f565b602082019050919050565b60006132db602e8361389a565b91506132e682613d98565b604082019050919050565b60006132fe60288361389a565b915061330982613de7565b604082019050919050565b600061332160368361389a565b915061332c82613e36565b604082019050919050565b600061334460248361389a565b915061334f82613e85565b604082019050919050565b600061336760218361389a565b915061337282613ed4565b604082019050919050565b600061338a60258361389a565b915061339582613f23565b604082019050919050565b60006133ad60248361389a565b91506133b882613f72565b604082019050919050565b60006133d060378361389a565b91506133db82613fc1565b604082019050919050565b60006133f36017836138ab565b91506133fe82614010565b601782019050919050565b600061341660258361389a565b915061342182614039565b604082019050919050565b60006134396011836138ab565b915061344482614088565b601182019050919050565b600061345c602f8361389a565b9150613467826140b1565b604082019050919050565b600061347f601f8361389a565b915061348a82614100565b602082019050919050565b60006134a2602a8361389a565b91506134ad82614129565b604082019050919050565b6134c181613a0e565b82525050565b6134d081613a18565b82525050565b60006134e1826133e6565b91506134ed8285613185565b91506134f88261342c565b91506135048284613185565b91508190509392505050565b6000602082019050613525600083018461311f565b92915050565b6000602082019050613540600083018461312e565b92915050565b600060208201905061355b600083018461313d565b92915050565b6000602082019050818103600083015261357b818461314c565b905092915050565b6000602082019050818103600083015261359c816131b6565b9050919050565b600060208201905081810360008301526135bc816131d9565b9050919050565b600060208201905081810360008301526135dc816131fc565b9050919050565b600060208201905081810360008301526135fc8161321f565b9050919050565b6000602082019050818103600083015261361c81613242565b9050919050565b6000602082019050818103600083015261363c81613265565b9050919050565b6000602082019050818103600083015261365c81613288565b9050919050565b6000602082019050818103600083015261367c816132ab565b9050919050565b6000602082019050818103600083015261369c816132ce565b9050919050565b600060208201905081810360008301526136bc816132f1565b9050919050565b600060208201905081810360008301526136dc81613314565b9050919050565b600060208201905081810360008301526136fc81613337565b9050919050565b6000602082019050818103600083015261371c8161335a565b9050919050565b6000602082019050818103600083015261373c8161337d565b9050919050565b6000602082019050818103600083015261375c816133a0565b9050919050565b6000602082019050818103600083015261377c816133c3565b9050919050565b6000602082019050818103600083015261379c81613409565b9050919050565b600060208201905081810360008301526137bc8161344f565b9050919050565b600060208201905081810360008301526137dc81613472565b9050919050565b600060208201905081810360008301526137fc81613495565b9050919050565b600060208201905061381860008301846134b8565b92915050565b600060208201905061383360008301846134c7565b92915050565b6000613843613854565b905061384f8282613ac3565b919050565b6000604051905090565b600067ffffffffffffffff82111561387957613878613b52565b5b61388282613b81565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b60006138c182613a0e565b91506138cc83613a0e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561390157613900613af4565b5b828201905092915050565b600061391782613a0e565b915061392283613a0e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561395b5761395a613af4565b5b828202905092915050565b600061397182613a0e565b915061397c83613a0e565b92508282101561398f5761398e613af4565b5b828203905092915050565b60006139a5826139ee565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015613a52578082015181840152602081019050613a37565b83811115613a61576000848401525b50505050565b6000613a7282613a0e565b91506000821415613a8657613a85613af4565b5b600182039050919050565b60006002820490506001821680613aa957607f821691505b60208210811415613abd57613abc613b23565b5b50919050565b613acc82613b81565b810181811067ffffffffffffffff82111715613aeb57613aea613b52565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332305072657365744d696e7465725061757365723a206d75737420686160008201527f76652070617573657220726f6c6520746f20756e706175736500000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f45524332305072657365744d696e7465725061757365723a206d75737420686160008201527f7665206d696e74657220726f6c6520746f206d696e7400000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332305072657365744d696e7465725061757365723a206d75737420686160008201527f76652070617573657220726f6c6520746f207061757365000000000000000000602082015250565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b7f45524332305061757361626c653a20746f6b656e207472616e7366657220776860008201527f696c652070617573656400000000000000000000000000000000000000000000602082015250565b6141818161399a565b811461418c57600080fd5b50565b614198816139b8565b81146141a357600080fd5b50565b6141af816139c2565b81146141ba57600080fd5b50565b6141c681613a0e565b81146141d157600080fd5b5056fea2646970667358221220c9d4d8ee10225903bf84de0f0b1bdab413d9392bd8a2806fba266c4d0616eb0364736f6c63430008030033",
695
- "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061016a5760003560e01c806301ffc9a71461016f57806306fdde031461019f578063095ea7b3146101bd57806318160ddd146101ed57806323b872dd1461020b578063248a9ca31461023b5780632f2ff15d1461026b578063313ce5671461028757806336568abe146102a557806338acbf11146102c157806339509351146102dd5780633f4ba83a1461030d57806340c10f191461031757806342966c68146103335780634cd88b761461034f5780635c975abb1461036b57806370a082311461038957806379cc6790146103b95780638456cb59146103d55780639010d07c146103df57806391d148541461040f57806395d89b411461043f578063a217fddf1461045d578063a457c2d71461047b578063a9059cbb146104ab578063ca15c873146104db578063d53913931461050b578063d547741f14610529578063dd62ed3e14610545578063e63ab1e914610575575b600080fd5b61018960048036038101906101849190613061565b610593565b604051610196919061352b565b60405180910390f35b6101a761060d565b6040516101b49190613561565b60405180910390f35b6101d760048036038101906101d29190612f84565b61069f565b6040516101e4919061352b565b60405180910390f35b6101f56106bd565b6040516102029190613803565b60405180910390f35b61022560048036038101906102209190612f35565b6106c7565b604051610232919061352b565b60405180910390f35b61025560048036038101906102509190612fc0565b6107bf565b6040516102629190613546565b60405180910390f35b61028560048036038101906102809190612fe9565b6107df565b005b61028f610813565b60405161029c919061381e565b60405180910390f35b6102bf60048036038101906102ba9190612fe9565b6108af565b005b6102db60048036038101906102d69190612fc0565b6108e3565b005b6102f760048036038101906102f29190612f84565b6108e6565b604051610304919061352b565b60405180910390f35b610315610992565b005b610331600480360381019061032c9190612f84565b610a0c565b005b61034d600480360381019061034891906130f6565b610a8a565b005b6103696004803603810190610364919061308a565b610a9e565b005b610373610b83565b604051610380919061352b565b60405180910390f35b6103a3600480360381019061039e9190612ed0565b610b9b565b6040516103b09190613803565b60405180910390f35b6103d360048036038101906103ce9190612f84565b610be4565b005b6103dd610c5f565b005b6103f960048036038101906103f49190613025565b610cd9565b6040516104069190613510565b60405180910390f35b61042960048036038101906104249190612fe9565b610d08565b604051610436919061352b565b60405180910390f35b610447610d73565b6040516104549190613561565b60405180910390f35b610465610e05565b6040516104729190613546565b60405180910390f35b61049560048036038101906104909190612f84565b610e0c565b6040516104a2919061352b565b60405180910390f35b6104c560048036038101906104c09190612f84565b610ef7565b6040516104d2919061352b565b60405180910390f35b6104f560048036038101906104f09190612fc0565b610f15565b6040516105029190613803565b60405180910390f35b610513610f39565b6040516105209190613546565b60405180910390f35b610543600480360381019061053e9190612fe9565b610f5d565b005b61055f600480360381019061055a9190612ef9565b610f91565b60405161056c9190613803565b60405180910390f35b61057d611018565b60405161058a9190613546565b60405180910390f35b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061060657506106058261107a565b5b9050919050565b606060cc805461061c90613a91565b80601f016020809104026020016040519081016040528092919081815260200182805461064890613a91565b80156106955780601f1061066a57610100808354040283529160200191610695565b820191906000526020600020905b81548152906001019060200180831161067857829003601f168201915b5050505050905090565b60006106b36106ac6110f4565b84846110fc565b6001905092915050565b600060cb54905090565b60006106d48484846112c7565b600060ca60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061071f6110f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561079f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610796906136a3565b60405180910390fd5b6107b3856107ab6110f4565b8584036110fc565b60019150509392505050565b600060656000838152602001908152602001600020600101549050919050565b6107e9828261154b565b61080e816097600085815260200190815260200160002061104a90919063ffffffff16565b505050565b60006108417fff7e062ccd94ccf8072cadf83b5f019480b3601b792eee8c68b287e9d127a20760001b6108e3565b61086d7ffeabe1ef4a1a49fce4c8ee2efdc589c00940ab03ade63bcd38e3af38f36dee3a60001b6108e3565b6108997f5da4ebc64c7e3eb88d71ae6b8c0d915398c30d08c386b7fb1de5d49999aada6660001b6108e3565b6101c360009054906101000a900460ff16905090565b6108b98282611574565b6108de81609760008581526020019081526020016000206115f790919063ffffffff16565b505050565b50565b60006109886108f36110f4565b848460ca60006109016110f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461098391906138b6565b6110fc565b6001905092915050565b6109c37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6109be6110f4565b610d08565b610a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f990613603565b60405180910390fd5b610a0a611627565b565b610a3d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610a386110f4565b610d08565b610a7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a73906136c3565b60405180910390fd5b610a8682826116ca565b5050565b610a9b610a956110f4565b8261182b565b50565b600060019054906101000a900460ff1680610ac4575060008054906101000a900460ff16155b610b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afa90613683565b60405180910390fd5b60008060019054906101000a900460ff161590508015610b53576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b610b5d8383611a04565b8015610b7e5760008060016101000a81548160ff0219169083151502179055505b505050565b600061012d60009054906101000a900460ff16905090565b600060c960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610bf783610bf26110f4565b610f91565b905081811015610c3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c33906136e3565b60405180910390fd5b610c5083610c486110f4565b8484036110fc565b610c5a838361182b565b505050565b610c907f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c8b6110f4565b610d08565b610ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc690613763565b60405180910390fd5b610cd7611b2b565b565b6000610d008260976000868152602001908152602001600020611bcf90919063ffffffff16565b905092915050565b60006065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060cd8054610d8290613a91565b80601f0160208091040260200160405190810160405280929190818152602001828054610dae90613a91565b8015610dfb5780601f10610dd057610100808354040283529160200191610dfb565b820191906000526020600020905b815481529060010190602001808311610dde57829003601f168201915b5050505050905090565b6000801b81565b60008060ca6000610e1b6110f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecf90613783565b60405180910390fd5b610eec610ee36110f4565b858584036110fc565b600191505092915050565b6000610f0b610f046110f4565b84846112c7565b6001905092915050565b6000610f3260976000848152602001908152602001600020611be9565b9050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b610f678282611bfe565b610f8c81609760008581526020019081526020016000206115f790919063ffffffff16565b505050565b600060ca60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6110468282611c27565b5050565b6000611072836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611d08565b905092915050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806110ed57506110ec82611d78565b5b9050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561116c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116390613743565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d390613623565b60405180910390fd5b8060ca60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112ba9190613803565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132e90613723565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139e906135a3565b60405180910390fd5b6113b2838383611de2565b600060c960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611439576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143090613643565b60405180910390fd5b81810360c960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160c960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114ce91906138b6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115329190613803565b60405180910390a3611545848484611df2565b50505050565b611554826107bf565b611565816115606110f4565b611df7565b61156f8383611c27565b505050565b61157c6110f4565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e0906137a3565b60405180910390fd5b6115f38282611e94565b5050565b600061161f836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611f76565b905092915050565b61162f610b83565b61166e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611665906135c3565b60405180910390fd5b600061012d60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6116b36110f4565b6040516116c09190613510565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561173a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611731906137c3565b60405180910390fd5b61174660008383611de2565b8060cb600082825461175891906138b6565b925050819055508060c960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117ae91906138b6565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118139190613803565b60405180910390a361182760008383611df2565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561189b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189290613703565b60405180910390fd5b6118a782600083611de2565b600060c960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561192e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611925906135e3565b60405180910390fd5b81810360c960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160cb60008282546119869190613966565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119eb9190613803565b60405180910390a36119ff83600084611df2565b505050565b600060019054906101000a900460ff1680611a2a575060008054906101000a900460ff16155b611a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6090613683565b60405180910390fd5b60008060019054906101000a900460ff161590508015611ab9576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b611ac16120fc565b611ac96121d5565b611ad16122ae565b611ad9612387565b611ae38383612460565b611aeb612569565b611af3612642565b611afb612737565b611b058383612810565b8015611b265760008060016101000a81548160ff0219169083151502179055505b505050565b611b33610b83565b15611b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6a90613663565b60405180910390fd5b600161012d60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611bb86110f4565b604051611bc59190613510565b60405180910390a1565b6000611bde8360000183612961565b60001c905092915050565b6000611bf7826000016129b2565b9050919050565b611c07826107bf565b611c1881611c136110f4565b611df7565b611c228383611e94565b505050565b611c318282610d08565b611d045760016065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611ca96110f4565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000611d1483836129c3565b611d6d578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050611d72565b600090505b92915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611ded8383836129e6565b505050565b505050565b611e018282610d08565b611e9057611e268173ffffffffffffffffffffffffffffffffffffffff166014612a3e565b611e348360001c6020612a3e565b604051602001611e459291906134d6565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e879190613561565b60405180910390fd5b5050565b611e9e8282610d08565b15611f725760006065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611f176110f4565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600080836001016000848152602001908152602001600020549050600081146120f0576000600182611fa89190613966565b9050600060018660000180549050611fc09190613966565b905081811461207b576000866000018281548110612007577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905080876000018481548110612051577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b856000018054806120b5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506120f6565b60009150505b92915050565b600060019054906101000a900460ff1680612122575060008054906101000a900460ff16155b612161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215890613683565b60405180910390fd5b60008060019054906101000a900460ff1615905080156121b1576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156121d25760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff16806121fb575060008054906101000a900460ff16155b61223a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223190613683565b60405180910390fd5b60008060019054906101000a900460ff16159050801561228a576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156122ab5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff16806122d4575060008054906101000a900460ff16155b612313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230a90613683565b60405180910390fd5b60008060019054906101000a900460ff161590508015612363576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156123845760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff16806123ad575060008054906101000a900460ff16155b6123ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e390613683565b60405180910390fd5b60008060019054906101000a900460ff16159050801561243c576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b801561245d5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680612486575060008054906101000a900460ff16155b6124c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124bc90613683565b60405180910390fd5b60008060019054906101000a900460ff161590508015612515576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b8260cc908051906020019061252b929190612d71565b508160cd9080519060200190612542929190612d71565b5080156125645760008060016101000a81548160ff0219169083151502179055505b505050565b600060019054906101000a900460ff168061258f575060008054906101000a900460ff16155b6125ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c590613683565b60405180910390fd5b60008060019054906101000a900460ff16159050801561261e576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b801561263f5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680612668575060008054906101000a900460ff16155b6126a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269e90613683565b60405180910390fd5b60008060019054906101000a900460ff1615905080156126f7576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b600061012d60006101000a81548160ff02191690831515021790555080156127345760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff168061275d575060008054906101000a900460ff16155b61279c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279390613683565b60405180910390fd5b60008060019054906101000a900460ff1615905080156127ec576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b801561280d5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680612836575060008054906101000a900460ff16155b612875576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286c90613683565b60405180910390fd5b60008060019054906101000a900460ff1615905080156128c5576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6128d96000801b6128d46110f4565b612d38565b61290a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66129056110f4565b612d38565b61293b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6129366110f4565b612d38565b801561295c5760008060016101000a81548160ff0219169083151502179055505b505050565b600082600001828154811061299f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905092915050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020541415905092915050565b6129f1838383612d6c565b6129f9610b83565b15612a39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a30906137e3565b60405180910390fd5b505050565b606060006002836002612a51919061390c565b612a5b91906138b6565b67ffffffffffffffff811115612a9a577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612acc5781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612b2a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612bb4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002612bf4919061390c565b612bfe91906138b6565b90505b6001811115612cea577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110612c66577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b1a60f81b828281518110612ca3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080612ce390613a67565b9050612c01565b5060008414612d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2590613583565b60405180910390fd5b8091505092915050565b612d42828261103c565b612d67816097600085815260200190815260200160002061104a90919063ffffffff16565b505050565b505050565b828054612d7d90613a91565b90600052602060002090601f016020900481019282612d9f5760008555612de6565b82601f10612db857805160ff1916838001178555612de6565b82800160010185558215612de6579182015b82811115612de5578251825591602001919060010190612dca565b5b509050612df39190612df7565b5090565b5b80821115612e10576000816000905550600101612df8565b5090565b6000612e27612e228461385e565b613839565b905082815260208101848484011115612e3f57600080fd5b612e4a848285613a25565b509392505050565b600081359050612e6181614178565b92915050565b600081359050612e768161418f565b92915050565b600081359050612e8b816141a6565b92915050565b600082601f830112612ea257600080fd5b8135612eb2848260208601612e14565b91505092915050565b600081359050612eca816141bd565b92915050565b600060208284031215612ee257600080fd5b6000612ef084828501612e52565b91505092915050565b60008060408385031215612f0c57600080fd5b6000612f1a85828601612e52565b9250506020612f2b85828601612e52565b9150509250929050565b600080600060608486031215612f4a57600080fd5b6000612f5886828701612e52565b9350506020612f6986828701612e52565b9250506040612f7a86828701612ebb565b9150509250925092565b60008060408385031215612f9757600080fd5b6000612fa585828601612e52565b9250506020612fb685828601612ebb565b9150509250929050565b600060208284031215612fd257600080fd5b6000612fe084828501612e67565b91505092915050565b60008060408385031215612ffc57600080fd5b600061300a85828601612e67565b925050602061301b85828601612e52565b9150509250929050565b6000806040838503121561303857600080fd5b600061304685828601612e67565b925050602061305785828601612ebb565b9150509250929050565b60006020828403121561307357600080fd5b600061308184828501612e7c565b91505092915050565b6000806040838503121561309d57600080fd5b600083013567ffffffffffffffff8111156130b757600080fd5b6130c385828601612e91565b925050602083013567ffffffffffffffff8111156130e057600080fd5b6130ec85828601612e91565b9150509250929050565b60006020828403121561310857600080fd5b600061311684828501612ebb565b91505092915050565b6131288161399a565b82525050565b613137816139ac565b82525050565b613146816139b8565b82525050565b60006131578261388f565b613161818561389a565b9350613171818560208601613a34565b61317a81613b81565b840191505092915050565b60006131908261388f565b61319a81856138ab565b93506131aa818560208601613a34565b80840191505092915050565b60006131c360208361389a565b91506131ce82613b92565b602082019050919050565b60006131e660238361389a565b91506131f182613bbb565b604082019050919050565b600061320960148361389a565b915061321482613c0a565b602082019050919050565b600061322c60228361389a565b915061323782613c33565b604082019050919050565b600061324f60398361389a565b915061325a82613c82565b604082019050919050565b600061327260228361389a565b915061327d82613cd1565b604082019050919050565b600061329560268361389a565b91506132a082613d20565b604082019050919050565b60006132b860108361389a565b91506132c382613d6f565b602082019050919050565b60006132db602e8361389a565b91506132e682613d98565b604082019050919050565b60006132fe60288361389a565b915061330982613de7565b604082019050919050565b600061332160368361389a565b915061332c82613e36565b604082019050919050565b600061334460248361389a565b915061334f82613e85565b604082019050919050565b600061336760218361389a565b915061337282613ed4565b604082019050919050565b600061338a60258361389a565b915061339582613f23565b604082019050919050565b60006133ad60248361389a565b91506133b882613f72565b604082019050919050565b60006133d060378361389a565b91506133db82613fc1565b604082019050919050565b60006133f36017836138ab565b91506133fe82614010565b601782019050919050565b600061341660258361389a565b915061342182614039565b604082019050919050565b60006134396011836138ab565b915061344482614088565b601182019050919050565b600061345c602f8361389a565b9150613467826140b1565b604082019050919050565b600061347f601f8361389a565b915061348a82614100565b602082019050919050565b60006134a2602a8361389a565b91506134ad82614129565b604082019050919050565b6134c181613a0e565b82525050565b6134d081613a18565b82525050565b60006134e1826133e6565b91506134ed8285613185565b91506134f88261342c565b91506135048284613185565b91508190509392505050565b6000602082019050613525600083018461311f565b92915050565b6000602082019050613540600083018461312e565b92915050565b600060208201905061355b600083018461313d565b92915050565b6000602082019050818103600083015261357b818461314c565b905092915050565b6000602082019050818103600083015261359c816131b6565b9050919050565b600060208201905081810360008301526135bc816131d9565b9050919050565b600060208201905081810360008301526135dc816131fc565b9050919050565b600060208201905081810360008301526135fc8161321f565b9050919050565b6000602082019050818103600083015261361c81613242565b9050919050565b6000602082019050818103600083015261363c81613265565b9050919050565b6000602082019050818103600083015261365c81613288565b9050919050565b6000602082019050818103600083015261367c816132ab565b9050919050565b6000602082019050818103600083015261369c816132ce565b9050919050565b600060208201905081810360008301526136bc816132f1565b9050919050565b600060208201905081810360008301526136dc81613314565b9050919050565b600060208201905081810360008301526136fc81613337565b9050919050565b6000602082019050818103600083015261371c8161335a565b9050919050565b6000602082019050818103600083015261373c8161337d565b9050919050565b6000602082019050818103600083015261375c816133a0565b9050919050565b6000602082019050818103600083015261377c816133c3565b9050919050565b6000602082019050818103600083015261379c81613409565b9050919050565b600060208201905081810360008301526137bc8161344f565b9050919050565b600060208201905081810360008301526137dc81613472565b9050919050565b600060208201905081810360008301526137fc81613495565b9050919050565b600060208201905061381860008301846134b8565b92915050565b600060208201905061383360008301846134c7565b92915050565b6000613843613854565b905061384f8282613ac3565b919050565b6000604051905090565b600067ffffffffffffffff82111561387957613878613b52565b5b61388282613b81565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b60006138c182613a0e565b91506138cc83613a0e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561390157613900613af4565b5b828201905092915050565b600061391782613a0e565b915061392283613a0e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561395b5761395a613af4565b5b828202905092915050565b600061397182613a0e565b915061397c83613a0e565b92508282101561398f5761398e613af4565b5b828203905092915050565b60006139a5826139ee565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015613a52578082015181840152602081019050613a37565b83811115613a61576000848401525b50505050565b6000613a7282613a0e565b91506000821415613a8657613a85613af4565b5b600182039050919050565b60006002820490506001821680613aa957607f821691505b60208210811415613abd57613abc613b23565b5b50919050565b613acc82613b81565b810181811067ffffffffffffffff82111715613aeb57613aea613b52565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332305072657365744d696e7465725061757365723a206d75737420686160008201527f76652070617573657220726f6c6520746f20756e706175736500000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f45524332305072657365744d696e7465725061757365723a206d75737420686160008201527f7665206d696e74657220726f6c6520746f206d696e7400000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332305072657365744d696e7465725061757365723a206d75737420686160008201527f76652070617573657220726f6c6520746f207061757365000000000000000000602082015250565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b7f45524332305061757361626c653a20746f6b656e207472616e7366657220776860008201527f696c652070617573656400000000000000000000000000000000000000000000602082015250565b6141818161399a565b811461418c57600080fd5b50565b614198816139b8565b81146141a357600080fd5b50565b6141af816139c2565b81146141ba57600080fd5b50565b6141c681613a0e565b81146141d157600080fd5b5056fea2646970667358221220c9d4d8ee10225903bf84de0f0b1bdab413d9392bd8a2806fba266c4d0616eb0364736f6c63430008030033",
694
+ "bytecode": "0x60806040523480156200001157600080fd5b506040516200525a3803806200525a833981810160405281019062000037919062000fac565b6200006b7feaf8a39ee678edebe42225801bb00f2649ab4da7a483fe8b59c145d810d0a5a060001b620001da60201b60201c565b6200009f7f4e88d4224956503be74762e1a9c4f612560c14e3d0295c3986b43d9f5c6d0f5960001b620001da60201b60201c565b620000d37fb907e778f6f7bce369ab8a68f46046a4badf50290b17aabe606adc568666cb5c60001b620001da60201b60201c565b6200014f6040518060400160405280601481526020017f456967687420446563696d616c7320546f6b656e0000000000000000000000008152506040518060400160405280600381526020017f4544540000000000000000000000000000000000000000000000000000000000815250620001dd60201b60201c565b620001837f71c1fb96d250953c0b2c25bb68f0f32cb7f44801bf0a1a5098cba648fe5dcdd160001b620001da60201b60201c565b620001b77f42b042e65d95156986eb3cad741e35b3028a5cee1f6d6d7f7a62b9ba8408dd6760001b620001da60201b60201c565b806101c360006101000a81548160ff021916908360ff16021790555050620010ec565b50565b600060019054906101000a900460ff168062000204575060008054906101000a900460ff16155b62000246576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200023d9062001065565b60405180910390fd5b60008060019054906101000a900460ff16159050801562000297576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b620002a76200035260201b60201c565b620002b76200043160201b60201c565b620002c76200051060201b60201c565b620002d7620005ef60201b60201c565b620002e98383620006ce60201b60201c565b620002f9620007e160201b60201c565b62000309620008c060201b60201c565b62000319620009bb60201b60201c565b6200032b838362000a9a60201b60201c565b80156200034d5760008060016101000a81548160ff0219169083151502179055505b505050565b600060019054906101000a900460ff168062000379575060008054906101000a900460ff16155b620003bb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003b29062001065565b60405180910390fd5b60008060019054906101000a900460ff1615905080156200040c576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156200042e5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff168062000458575060008054906101000a900460ff16155b6200049a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004919062001065565b60405180910390fd5b60008060019054906101000a900460ff161590508015620004eb576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156200050d5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff168062000537575060008054906101000a900460ff16155b62000579576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005709062001065565b60405180910390fd5b60008060019054906101000a900460ff161590508015620005ca576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b8015620005ec5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff168062000616575060008054906101000a900460ff16155b62000658576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200064f9062001065565b60405180910390fd5b60008060019054906101000a900460ff161590508015620006a9576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b8015620006cb5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680620006f5575060008054906101000a900460ff16155b62000737576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200072e9062001065565b60405180910390fd5b60008060019054906101000a900460ff16159050801562000788576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b8260cc9080519060200190620007a092919062000eb9565b508160cd9080519060200190620007b992919062000eb9565b508015620007dc5760008060016101000a81548160ff0219169083151502179055505b505050565b600060019054906101000a900460ff168062000808575060008054906101000a900460ff16155b6200084a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008419062001065565b60405180910390fd5b60008060019054906101000a900460ff1615905080156200089b576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b8015620008bd5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680620008e7575060008054906101000a900460ff16155b62000929576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009209062001065565b60405180910390fd5b60008060019054906101000a900460ff1615905080156200097a576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b600061012d60006101000a81548160ff0219169083151502179055508015620009b85760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680620009e2575060008054906101000a900460ff16155b62000a24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a1b9062001065565b60405180910390fd5b60008060019054906101000a900460ff16159050801562000a75576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b801562000a975760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff168062000ac1575060008054906101000a900460ff16155b62000b03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000afa9062001065565b60405180910390fd5b60008060019054906101000a900460ff16159050801562000b54576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b62000b786000801b62000b6c62000c2160201b60201c565b62000c2960201b60201c565b62000bb97f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a662000bad62000c2160201b60201c565b62000c2960201b60201c565b62000bfa7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a62000bee62000c2160201b60201c565b62000c2960201b60201c565b801562000c1c5760008060016101000a81548160ff0219169083151502179055505b505050565b600033905090565b62000c40828262000c7160201b6200103c1760201c565b62000c6c816097600085815260200190815260200160002062000c8760201b6200104a1790919060201c565b505050565b62000c83828262000cbf60201b60201c565b5050565b600062000cb7836000018373ffffffffffffffffffffffffffffffffffffffff1660001b62000db160201b60201c565b905092915050565b62000cd1828262000e2b60201b60201c565b62000dad5760016065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000d5262000c2160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600062000dc5838362000e9660201b60201c565b62000e2057826000018290806001815401808255809150506001900390600052602060002001600090919091909150558260000180549050836001016000848152602001908152602001600020819055506001905062000e25565b600090505b92915050565b60006065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b82805462000ec790620010b6565b90600052602060002090601f01602090048101928262000eeb576000855562000f37565b82601f1062000f0657805160ff191683800117855562000f37565b8280016001018555821562000f37579182015b8281111562000f3657825182559160200191906001019062000f19565b5b50905062000f46919062000f4a565b5090565b5b8082111562000f6557600081600090555060010162000f4b565b5090565b600080fd5b600060ff82169050919050565b62000f868162000f6e565b811462000f9257600080fd5b50565b60008151905062000fa68162000f7b565b92915050565b60006020828403121562000fc55762000fc462000f69565b5b600062000fd58482850162000f95565b91505092915050565b600082825260208201905092915050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b60006200104d602e8362000fde565b91506200105a8262000fef565b604082019050919050565b6000602082019050818103600083015262001080816200103e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620010cf57607f821691505b60208210811415620010e657620010e562001087565b5b50919050565b61415e80620010fc6000396000f3fe608060405234801561001057600080fd5b506004361061016a5760003560e01c806301ffc9a71461016f57806306fdde031461019f578063095ea7b3146101bd57806318160ddd146101ed57806323b872dd1461020b578063248a9ca31461023b5780632f2ff15d1461026b578063313ce5671461028757806336568abe146102a557806338acbf11146102c157806339509351146102dd5780633f4ba83a1461030d57806340c10f191461031757806342966c68146103335780634cd88b761461034f5780635c975abb1461036b57806370a082311461038957806379cc6790146103b95780638456cb59146103d55780639010d07c146103df57806391d148541461040f57806395d89b411461043f578063a217fddf1461045d578063a457c2d71461047b578063a9059cbb146104ab578063ca15c873146104db578063d53913931461050b578063d547741f14610529578063dd62ed3e14610545578063e63ab1e914610575575b600080fd5b61018960048036038101906101849190612d2a565b610593565b6040516101969190612d72565b60405180910390f35b6101a761060d565b6040516101b49190612e26565b60405180910390f35b6101d760048036038101906101d29190612edc565b61069f565b6040516101e49190612d72565b60405180910390f35b6101f56106bd565b6040516102029190612f2b565b60405180910390f35b61022560048036038101906102209190612f46565b6106c7565b6040516102329190612d72565b60405180910390f35b61025560048036038101906102509190612fcf565b6107bf565b604051610262919061300b565b60405180910390f35b61028560048036038101906102809190613026565b6107df565b005b61028f610813565b60405161029c9190613082565b60405180910390f35b6102bf60048036038101906102ba9190613026565b6108af565b005b6102db60048036038101906102d69190612fcf565b6108e3565b005b6102f760048036038101906102f29190612edc565b6108e6565b6040516103049190612d72565b60405180910390f35b610315610992565b005b610331600480360381019061032c9190612edc565b610a0c565b005b61034d6004803603810190610348919061309d565b610a8a565b005b610369600480360381019061036491906131ff565b610a9e565b005b610373610b83565b6040516103809190612d72565b60405180910390f35b6103a3600480360381019061039e9190613277565b610b9b565b6040516103b09190612f2b565b60405180910390f35b6103d360048036038101906103ce9190612edc565b610be4565b005b6103dd610c5f565b005b6103f960048036038101906103f491906132a4565b610cd9565b60405161040691906132f3565b60405180910390f35b61042960048036038101906104249190613026565b610d08565b6040516104369190612d72565b60405180910390f35b610447610d73565b6040516104549190612e26565b60405180910390f35b610465610e05565b604051610472919061300b565b60405180910390f35b61049560048036038101906104909190612edc565b610e0c565b6040516104a29190612d72565b60405180910390f35b6104c560048036038101906104c09190612edc565b610ef7565b6040516104d29190612d72565b60405180910390f35b6104f560048036038101906104f09190612fcf565b610f15565b6040516105029190612f2b565b60405180910390f35b610513610f39565b604051610520919061300b565b60405180910390f35b610543600480360381019061053e9190613026565b610f5d565b005b61055f600480360381019061055a919061330e565b610f91565b60405161056c9190612f2b565b60405180910390f35b61057d611018565b60405161058a919061300b565b60405180910390f35b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061060657506106058261107a565b5b9050919050565b606060cc805461061c9061337d565b80601f01602080910402602001604051908101604052809291908181526020018280546106489061337d565b80156106955780601f1061066a57610100808354040283529160200191610695565b820191906000526020600020905b81548152906001019060200180831161067857829003601f168201915b5050505050905090565b60006106b36106ac6110f4565b84846110fc565b6001905092915050565b600060cb54905090565b60006106d48484846112c7565b600060ca60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061071f6110f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561079f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079690613421565b60405180910390fd5b6107b3856107ab6110f4565b8584036110fc565b60019150509392505050565b600060656000838152602001908152602001600020600101549050919050565b6107e9828261154b565b61080e816097600085815260200190815260200160002061104a90919063ffffffff16565b505050565b60006108417fa462d08ec18416c0b0f9384c7efb98e0fa83c32d097c5cf00b24f7a6122446e860001b6108e3565b61086d7f10c418e37dea72e6348fd74c0f065d84c105fc6f26044bf59ac3749545a8e36860001b6108e3565b6108997fcd59307420532b947b77ccc29ab92de4a8224e89b6402894150d515940d7948360001b6108e3565b6101c360009054906101000a900460ff16905090565b6108b98282611574565b6108de81609760008581526020019081526020016000206115f790919063ffffffff16565b505050565b50565b60006109886108f36110f4565b848460ca60006109016110f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109839190613470565b6110fc565b6001905092915050565b6109c37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6109be6110f4565b610d08565b610a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f990613538565b60405180910390fd5b610a0a611627565b565b610a3d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610a386110f4565b610d08565b610a7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a73906135ca565b60405180910390fd5b610a8682826116ca565b5050565b610a9b610a956110f4565b8261182b565b50565b600060019054906101000a900460ff1680610ac4575060008054906101000a900460ff16155b610b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afa9061365c565b60405180910390fd5b60008060019054906101000a900460ff161590508015610b53576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b610b5d8383611a04565b8015610b7e5760008060016101000a81548160ff0219169083151502179055505b505050565b600061012d60009054906101000a900460ff16905090565b600060c960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610bf783610bf26110f4565b610f91565b905081811015610c3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c33906136ee565b60405180910390fd5b610c5083610c486110f4565b8484036110fc565b610c5a838361182b565b505050565b610c907f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c8b6110f4565b610d08565b610ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc690613780565b60405180910390fd5b610cd7611b2b565b565b6000610d008260976000868152602001908152602001600020611bcf90919063ffffffff16565b905092915050565b60006065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060cd8054610d829061337d565b80601f0160208091040260200160405190810160405280929190818152602001828054610dae9061337d565b8015610dfb5780601f10610dd057610100808354040283529160200191610dfb565b820191906000526020600020905b815481529060010190602001808311610dde57829003601f168201915b5050505050905090565b6000801b81565b60008060ca6000610e1b6110f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecf90613812565b60405180910390fd5b610eec610ee36110f4565b858584036110fc565b600191505092915050565b6000610f0b610f046110f4565b84846112c7565b6001905092915050565b6000610f3260976000848152602001908152602001600020611be9565b9050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b610f678282611bfe565b610f8c81609760008581526020019081526020016000206115f790919063ffffffff16565b505050565b600060ca60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6110468282611c27565b5050565b6000611072836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611d08565b905092915050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806110ed57506110ec82611d78565b5b9050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561116c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611163906138a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d390613936565b60405180910390fd5b8060ca60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112ba9190612f2b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132e906139c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139e90613a5a565b60405180910390fd5b6113b2838383611de2565b600060c960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611439576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143090613aec565b60405180910390fd5b81810360c960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160c960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114ce9190613470565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115329190612f2b565b60405180910390a3611545848484611df2565b50505050565b611554826107bf565b611565816115606110f4565b611df7565b61156f8383611c27565b505050565b61157c6110f4565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e090613b7e565b60405180910390fd5b6115f38282611e94565b5050565b600061161f836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611f76565b905092915050565b61162f610b83565b61166e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166590613bea565b60405180910390fd5b600061012d60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6116b36110f4565b6040516116c091906132f3565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561173a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173190613c56565b60405180910390fd5b61174660008383611de2565b8060cb60008282546117589190613470565b925050819055508060c960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117ae9190613470565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118139190612f2b565b60405180910390a361182760008383611df2565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561189b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189290613ce8565b60405180910390fd5b6118a782600083611de2565b600060c960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561192e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192590613d7a565b60405180910390fd5b81810360c960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160cb60008282546119869190613d9a565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119eb9190612f2b565b60405180910390a36119ff83600084611df2565b505050565b600060019054906101000a900460ff1680611a2a575060008054906101000a900460ff16155b611a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a609061365c565b60405180910390fd5b60008060019054906101000a900460ff161590508015611ab9576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b611ac161208a565b611ac9612163565b611ad161223c565b611ad9612315565b611ae383836123ee565b611aeb6124f7565b611af36125d0565b611afb6126c5565b611b05838361279e565b8015611b265760008060016101000a81548160ff0219169083151502179055505b505050565b611b33610b83565b15611b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6a90613e1a565b60405180910390fd5b600161012d60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611bb86110f4565b604051611bc591906132f3565b60405180910390a1565b6000611bde83600001836128ef565b60001c905092915050565b6000611bf78260000161291a565b9050919050565b611c07826107bf565b611c1881611c136110f4565b611df7565b611c228383611e94565b505050565b611c318282610d08565b611d045760016065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611ca96110f4565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000611d14838361292b565b611d6d578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050611d72565b600090505b92915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611ded83838361294e565b505050565b505050565b611e018282610d08565b611e9057611e268173ffffffffffffffffffffffffffffffffffffffff1660146129a6565b611e348360001c60206129a6565b604051602001611e45929190613f0e565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e879190612e26565b60405180910390fd5b5050565b611e9e8282610d08565b15611f725760006065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611f176110f4565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000808360010160008481526020019081526020016000205490506000811461207e576000600182611fa89190613d9a565b9050600060018660000180549050611fc09190613d9a565b905081811461202f576000866000018281548110611fe157611fe0613f48565b5b906000526020600020015490508087600001848154811061200557612004613f48565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b8560000180548061204357612042613f77565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050612084565b60009150505b92915050565b600060019054906101000a900460ff16806120b0575060008054906101000a900460ff16155b6120ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e69061365c565b60405180910390fd5b60008060019054906101000a900460ff16159050801561213f576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156121605760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680612189575060008054906101000a900460ff16155b6121c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121bf9061365c565b60405180910390fd5b60008060019054906101000a900460ff161590508015612218576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156122395760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680612262575060008054906101000a900460ff16155b6122a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122989061365c565b60405180910390fd5b60008060019054906101000a900460ff1615905080156122f1576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156123125760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff168061233b575060008054906101000a900460ff16155b61237a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123719061365c565b60405180910390fd5b60008060019054906101000a900460ff1615905080156123ca576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156123eb5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680612414575060008054906101000a900460ff16155b612453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244a9061365c565b60405180910390fd5b60008060019054906101000a900460ff1615905080156124a3576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b8260cc90805190602001906124b9929190612c1b565b508160cd90805190602001906124d0929190612c1b565b5080156124f25760008060016101000a81548160ff0219169083151502179055505b505050565b600060019054906101000a900460ff168061251d575060008054906101000a900460ff16155b61255c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125539061365c565b60405180910390fd5b60008060019054906101000a900460ff1615905080156125ac576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156125cd5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff16806125f6575060008054906101000a900460ff16155b612635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262c9061365c565b60405180910390fd5b60008060019054906101000a900460ff161590508015612685576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b600061012d60006101000a81548160ff02191690831515021790555080156126c25760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff16806126eb575060008054906101000a900460ff16155b61272a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127219061365c565b60405180910390fd5b60008060019054906101000a900460ff16159050801561277a576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b801561279b5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff16806127c4575060008054906101000a900460ff16155b612803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fa9061365c565b60405180910390fd5b60008060019054906101000a900460ff161590508015612853576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6128676000801b6128626110f4565b612be2565b6128987f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66128936110f4565b612be2565b6128c97f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6128c46110f4565b612be2565b80156128ea5760008060016101000a81548160ff0219169083151502179055505b505050565b600082600001828154811061290757612906613f48565b5b9060005260206000200154905092915050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020541415905092915050565b612959838383612c16565b612961610b83565b156129a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299890614018565b60405180910390fd5b505050565b6060600060028360026129b99190614038565b6129c39190613470565b67ffffffffffffffff8111156129dc576129db6130d4565b5b6040519080825280601f01601f191660200182016040528015612a0e5781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612a4657612a45613f48565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612aaa57612aa9613f48565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002612aea9190614038565b612af49190613470565b90505b6001811115612b94577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110612b3657612b35613f48565b5b1a60f81b828281518110612b4d57612b4c613f48565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080612b8d90614092565b9050612af7565b5060008414612bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bcf90614108565b60405180910390fd5b8091505092915050565b612bec828261103c565b612c11816097600085815260200190815260200160002061104a90919063ffffffff16565b505050565b505050565b828054612c279061337d565b90600052602060002090601f016020900481019282612c495760008555612c90565b82601f10612c6257805160ff1916838001178555612c90565b82800160010185558215612c90579182015b82811115612c8f578251825591602001919060010190612c74565b5b509050612c9d9190612ca1565b5090565b5b80821115612cba576000816000905550600101612ca2565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612d0781612cd2565b8114612d1257600080fd5b50565b600081359050612d2481612cfe565b92915050565b600060208284031215612d4057612d3f612cc8565b5b6000612d4e84828501612d15565b91505092915050565b60008115159050919050565b612d6c81612d57565b82525050565b6000602082019050612d876000830184612d63565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612dc7578082015181840152602081019050612dac565b83811115612dd6576000848401525b50505050565b6000601f19601f8301169050919050565b6000612df882612d8d565b612e028185612d98565b9350612e12818560208601612da9565b612e1b81612ddc565b840191505092915050565b60006020820190508181036000830152612e408184612ded565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e7382612e48565b9050919050565b612e8381612e68565b8114612e8e57600080fd5b50565b600081359050612ea081612e7a565b92915050565b6000819050919050565b612eb981612ea6565b8114612ec457600080fd5b50565b600081359050612ed681612eb0565b92915050565b60008060408385031215612ef357612ef2612cc8565b5b6000612f0185828601612e91565b9250506020612f1285828601612ec7565b9150509250929050565b612f2581612ea6565b82525050565b6000602082019050612f406000830184612f1c565b92915050565b600080600060608486031215612f5f57612f5e612cc8565b5b6000612f6d86828701612e91565b9350506020612f7e86828701612e91565b9250506040612f8f86828701612ec7565b9150509250925092565b6000819050919050565b612fac81612f99565b8114612fb757600080fd5b50565b600081359050612fc981612fa3565b92915050565b600060208284031215612fe557612fe4612cc8565b5b6000612ff384828501612fba565b91505092915050565b61300581612f99565b82525050565b60006020820190506130206000830184612ffc565b92915050565b6000806040838503121561303d5761303c612cc8565b5b600061304b85828601612fba565b925050602061305c85828601612e91565b9150509250929050565b600060ff82169050919050565b61307c81613066565b82525050565b60006020820190506130976000830184613073565b92915050565b6000602082840312156130b3576130b2612cc8565b5b60006130c184828501612ec7565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61310c82612ddc565b810181811067ffffffffffffffff8211171561312b5761312a6130d4565b5b80604052505050565b600061313e612cbe565b905061314a8282613103565b919050565b600067ffffffffffffffff82111561316a576131696130d4565b5b61317382612ddc565b9050602081019050919050565b82818337600083830152505050565b60006131a261319d8461314f565b613134565b9050828152602081018484840111156131be576131bd6130cf565b5b6131c9848285613180565b509392505050565b600082601f8301126131e6576131e56130ca565b5b81356131f684826020860161318f565b91505092915050565b6000806040838503121561321657613215612cc8565b5b600083013567ffffffffffffffff81111561323457613233612ccd565b5b613240858286016131d1565b925050602083013567ffffffffffffffff81111561326157613260612ccd565b5b61326d858286016131d1565b9150509250929050565b60006020828403121561328d5761328c612cc8565b5b600061329b84828501612e91565b91505092915050565b600080604083850312156132bb576132ba612cc8565b5b60006132c985828601612fba565b92505060206132da85828601612ec7565b9150509250929050565b6132ed81612e68565b82525050565b600060208201905061330860008301846132e4565b92915050565b6000806040838503121561332557613324612cc8565b5b600061333385828601612e91565b925050602061334485828601612e91565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061339557607f821691505b602082108114156133a9576133a861334e565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061340b602883612d98565b9150613416826133af565b604082019050919050565b6000602082019050818103600083015261343a816133fe565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061347b82612ea6565b915061348683612ea6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156134bb576134ba613441565b5b828201905092915050565b7f45524332305072657365744d696e7465725061757365723a206d75737420686160008201527f76652070617573657220726f6c6520746f20756e706175736500000000000000602082015250565b6000613522603983612d98565b915061352d826134c6565b604082019050919050565b6000602082019050818103600083015261355181613515565b9050919050565b7f45524332305072657365744d696e7465725061757365723a206d75737420686160008201527f7665206d696e74657220726f6c6520746f206d696e7400000000000000000000602082015250565b60006135b4603683612d98565b91506135bf82613558565b604082019050919050565b600060208201905081810360008301526135e3816135a7565b9050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000613646602e83612d98565b9150613651826135ea565b604082019050919050565b6000602082019050818103600083015261367581613639565b9050919050565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b60006136d8602483612d98565b91506136e38261367c565b604082019050919050565b60006020820190508181036000830152613707816136cb565b9050919050565b7f45524332305072657365744d696e7465725061757365723a206d75737420686160008201527f76652070617573657220726f6c6520746f207061757365000000000000000000602082015250565b600061376a603783612d98565b91506137758261370e565b604082019050919050565b600060208201905081810360008301526137998161375d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006137fc602583612d98565b9150613807826137a0565b604082019050919050565b6000602082019050818103600083015261382b816137ef565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061388e602483612d98565b915061389982613832565b604082019050919050565b600060208201905081810360008301526138bd81613881565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613920602283612d98565b915061392b826138c4565b604082019050919050565b6000602082019050818103600083015261394f81613913565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139b2602583612d98565b91506139bd82613956565b604082019050919050565b600060208201905081810360008301526139e1816139a5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a44602383612d98565b9150613a4f826139e8565b604082019050919050565b60006020820190508181036000830152613a7381613a37565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613ad6602683612d98565b9150613ae182613a7a565b604082019050919050565b60006020820190508181036000830152613b0581613ac9565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000613b68602f83612d98565b9150613b7382613b0c565b604082019050919050565b60006020820190508181036000830152613b9781613b5b565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000613bd4601483612d98565b9150613bdf82613b9e565b602082019050919050565b60006020820190508181036000830152613c0381613bc7565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000613c40601f83612d98565b9150613c4b82613c0a565b602082019050919050565b60006020820190508181036000830152613c6f81613c33565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cd2602183612d98565b9150613cdd82613c76565b604082019050919050565b60006020820190508181036000830152613d0181613cc5565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d64602283612d98565b9150613d6f82613d08565b604082019050919050565b60006020820190508181036000830152613d9381613d57565b9050919050565b6000613da582612ea6565b9150613db083612ea6565b925082821015613dc357613dc2613441565b5b828203905092915050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000613e04601083612d98565b9150613e0f82613dce565b602082019050919050565b60006020820190508181036000830152613e3381613df7565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000613e7b601783613e3a565b9150613e8682613e45565b601782019050919050565b6000613e9c82612d8d565b613ea68185613e3a565b9350613eb6818560208601612da9565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000613ef8601183613e3a565b9150613f0382613ec2565b601182019050919050565b6000613f1982613e6e565b9150613f258285613e91565b9150613f3082613eeb565b9150613f3c8284613e91565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f45524332305061757361626c653a20746f6b656e207472616e7366657220776860008201527f696c652070617573656400000000000000000000000000000000000000000000602082015250565b6000614002602a83612d98565b915061400d82613fa6565b604082019050919050565b6000602082019050818103600083015261403181613ff5565b9050919050565b600061404382612ea6565b915061404e83612ea6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561408757614086613441565b5b828202905092915050565b600061409d82612ea6565b915060008214156140b1576140b0613441565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006140f2602083612d98565b91506140fd826140bc565b602082019050919050565b60006020820190508181036000830152614121816140e5565b905091905056fea26469706673582212203c25434177395aeed4b07f413abe4421f57c271938167436561edc466ea44b7e64736f6c63430008080033",
695
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061016a5760003560e01c806301ffc9a71461016f57806306fdde031461019f578063095ea7b3146101bd57806318160ddd146101ed57806323b872dd1461020b578063248a9ca31461023b5780632f2ff15d1461026b578063313ce5671461028757806336568abe146102a557806338acbf11146102c157806339509351146102dd5780633f4ba83a1461030d57806340c10f191461031757806342966c68146103335780634cd88b761461034f5780635c975abb1461036b57806370a082311461038957806379cc6790146103b95780638456cb59146103d55780639010d07c146103df57806391d148541461040f57806395d89b411461043f578063a217fddf1461045d578063a457c2d71461047b578063a9059cbb146104ab578063ca15c873146104db578063d53913931461050b578063d547741f14610529578063dd62ed3e14610545578063e63ab1e914610575575b600080fd5b61018960048036038101906101849190612d2a565b610593565b6040516101969190612d72565b60405180910390f35b6101a761060d565b6040516101b49190612e26565b60405180910390f35b6101d760048036038101906101d29190612edc565b61069f565b6040516101e49190612d72565b60405180910390f35b6101f56106bd565b6040516102029190612f2b565b60405180910390f35b61022560048036038101906102209190612f46565b6106c7565b6040516102329190612d72565b60405180910390f35b61025560048036038101906102509190612fcf565b6107bf565b604051610262919061300b565b60405180910390f35b61028560048036038101906102809190613026565b6107df565b005b61028f610813565b60405161029c9190613082565b60405180910390f35b6102bf60048036038101906102ba9190613026565b6108af565b005b6102db60048036038101906102d69190612fcf565b6108e3565b005b6102f760048036038101906102f29190612edc565b6108e6565b6040516103049190612d72565b60405180910390f35b610315610992565b005b610331600480360381019061032c9190612edc565b610a0c565b005b61034d6004803603810190610348919061309d565b610a8a565b005b610369600480360381019061036491906131ff565b610a9e565b005b610373610b83565b6040516103809190612d72565b60405180910390f35b6103a3600480360381019061039e9190613277565b610b9b565b6040516103b09190612f2b565b60405180910390f35b6103d360048036038101906103ce9190612edc565b610be4565b005b6103dd610c5f565b005b6103f960048036038101906103f491906132a4565b610cd9565b60405161040691906132f3565b60405180910390f35b61042960048036038101906104249190613026565b610d08565b6040516104369190612d72565b60405180910390f35b610447610d73565b6040516104549190612e26565b60405180910390f35b610465610e05565b604051610472919061300b565b60405180910390f35b61049560048036038101906104909190612edc565b610e0c565b6040516104a29190612d72565b60405180910390f35b6104c560048036038101906104c09190612edc565b610ef7565b6040516104d29190612d72565b60405180910390f35b6104f560048036038101906104f09190612fcf565b610f15565b6040516105029190612f2b565b60405180910390f35b610513610f39565b604051610520919061300b565b60405180910390f35b610543600480360381019061053e9190613026565b610f5d565b005b61055f600480360381019061055a919061330e565b610f91565b60405161056c9190612f2b565b60405180910390f35b61057d611018565b60405161058a919061300b565b60405180910390f35b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061060657506106058261107a565b5b9050919050565b606060cc805461061c9061337d565b80601f01602080910402602001604051908101604052809291908181526020018280546106489061337d565b80156106955780601f1061066a57610100808354040283529160200191610695565b820191906000526020600020905b81548152906001019060200180831161067857829003601f168201915b5050505050905090565b60006106b36106ac6110f4565b84846110fc565b6001905092915050565b600060cb54905090565b60006106d48484846112c7565b600060ca60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061071f6110f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561079f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079690613421565b60405180910390fd5b6107b3856107ab6110f4565b8584036110fc565b60019150509392505050565b600060656000838152602001908152602001600020600101549050919050565b6107e9828261154b565b61080e816097600085815260200190815260200160002061104a90919063ffffffff16565b505050565b60006108417fa462d08ec18416c0b0f9384c7efb98e0fa83c32d097c5cf00b24f7a6122446e860001b6108e3565b61086d7f10c418e37dea72e6348fd74c0f065d84c105fc6f26044bf59ac3749545a8e36860001b6108e3565b6108997fcd59307420532b947b77ccc29ab92de4a8224e89b6402894150d515940d7948360001b6108e3565b6101c360009054906101000a900460ff16905090565b6108b98282611574565b6108de81609760008581526020019081526020016000206115f790919063ffffffff16565b505050565b50565b60006109886108f36110f4565b848460ca60006109016110f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109839190613470565b6110fc565b6001905092915050565b6109c37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6109be6110f4565b610d08565b610a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f990613538565b60405180910390fd5b610a0a611627565b565b610a3d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610a386110f4565b610d08565b610a7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a73906135ca565b60405180910390fd5b610a8682826116ca565b5050565b610a9b610a956110f4565b8261182b565b50565b600060019054906101000a900460ff1680610ac4575060008054906101000a900460ff16155b610b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afa9061365c565b60405180910390fd5b60008060019054906101000a900460ff161590508015610b53576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b610b5d8383611a04565b8015610b7e5760008060016101000a81548160ff0219169083151502179055505b505050565b600061012d60009054906101000a900460ff16905090565b600060c960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610bf783610bf26110f4565b610f91565b905081811015610c3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c33906136ee565b60405180910390fd5b610c5083610c486110f4565b8484036110fc565b610c5a838361182b565b505050565b610c907f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610c8b6110f4565b610d08565b610ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc690613780565b60405180910390fd5b610cd7611b2b565b565b6000610d008260976000868152602001908152602001600020611bcf90919063ffffffff16565b905092915050565b60006065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060cd8054610d829061337d565b80601f0160208091040260200160405190810160405280929190818152602001828054610dae9061337d565b8015610dfb5780601f10610dd057610100808354040283529160200191610dfb565b820191906000526020600020905b815481529060010190602001808311610dde57829003601f168201915b5050505050905090565b6000801b81565b60008060ca6000610e1b6110f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecf90613812565b60405180910390fd5b610eec610ee36110f4565b858584036110fc565b600191505092915050565b6000610f0b610f046110f4565b84846112c7565b6001905092915050565b6000610f3260976000848152602001908152602001600020611be9565b9050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b610f678282611bfe565b610f8c81609760008581526020019081526020016000206115f790919063ffffffff16565b505050565b600060ca60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6110468282611c27565b5050565b6000611072836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611d08565b905092915050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806110ed57506110ec82611d78565b5b9050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561116c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611163906138a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d390613936565b60405180910390fd5b8060ca60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112ba9190612f2b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132e906139c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139e90613a5a565b60405180910390fd5b6113b2838383611de2565b600060c960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611439576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143090613aec565b60405180910390fd5b81810360c960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160c960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114ce9190613470565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115329190612f2b565b60405180910390a3611545848484611df2565b50505050565b611554826107bf565b611565816115606110f4565b611df7565b61156f8383611c27565b505050565b61157c6110f4565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e090613b7e565b60405180910390fd5b6115f38282611e94565b5050565b600061161f836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611f76565b905092915050565b61162f610b83565b61166e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166590613bea565b60405180910390fd5b600061012d60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6116b36110f4565b6040516116c091906132f3565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561173a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173190613c56565b60405180910390fd5b61174660008383611de2565b8060cb60008282546117589190613470565b925050819055508060c960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117ae9190613470565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118139190612f2b565b60405180910390a361182760008383611df2565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561189b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189290613ce8565b60405180910390fd5b6118a782600083611de2565b600060c960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561192e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192590613d7a565b60405180910390fd5b81810360c960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160cb60008282546119869190613d9a565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119eb9190612f2b565b60405180910390a36119ff83600084611df2565b505050565b600060019054906101000a900460ff1680611a2a575060008054906101000a900460ff16155b611a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a609061365c565b60405180910390fd5b60008060019054906101000a900460ff161590508015611ab9576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b611ac161208a565b611ac9612163565b611ad161223c565b611ad9612315565b611ae383836123ee565b611aeb6124f7565b611af36125d0565b611afb6126c5565b611b05838361279e565b8015611b265760008060016101000a81548160ff0219169083151502179055505b505050565b611b33610b83565b15611b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6a90613e1a565b60405180910390fd5b600161012d60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611bb86110f4565b604051611bc591906132f3565b60405180910390a1565b6000611bde83600001836128ef565b60001c905092915050565b6000611bf78260000161291a565b9050919050565b611c07826107bf565b611c1881611c136110f4565b611df7565b611c228383611e94565b505050565b611c318282610d08565b611d045760016065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611ca96110f4565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000611d14838361292b565b611d6d578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050611d72565b600090505b92915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611ded83838361294e565b505050565b505050565b611e018282610d08565b611e9057611e268173ffffffffffffffffffffffffffffffffffffffff1660146129a6565b611e348360001c60206129a6565b604051602001611e45929190613f0e565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e879190612e26565b60405180910390fd5b5050565b611e9e8282610d08565b15611f725760006065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611f176110f4565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000808360010160008481526020019081526020016000205490506000811461207e576000600182611fa89190613d9a565b9050600060018660000180549050611fc09190613d9a565b905081811461202f576000866000018281548110611fe157611fe0613f48565b5b906000526020600020015490508087600001848154811061200557612004613f48565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b8560000180548061204357612042613f77565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050612084565b60009150505b92915050565b600060019054906101000a900460ff16806120b0575060008054906101000a900460ff16155b6120ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e69061365c565b60405180910390fd5b60008060019054906101000a900460ff16159050801561213f576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156121605760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680612189575060008054906101000a900460ff16155b6121c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121bf9061365c565b60405180910390fd5b60008060019054906101000a900460ff161590508015612218576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156122395760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680612262575060008054906101000a900460ff16155b6122a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122989061365c565b60405180910390fd5b60008060019054906101000a900460ff1615905080156122f1576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156123125760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff168061233b575060008054906101000a900460ff16155b61237a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123719061365c565b60405180910390fd5b60008060019054906101000a900460ff1615905080156123ca576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156123eb5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680612414575060008054906101000a900460ff16155b612453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244a9061365c565b60405180910390fd5b60008060019054906101000a900460ff1615905080156124a3576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b8260cc90805190602001906124b9929190612c1b565b508160cd90805190602001906124d0929190612c1b565b5080156124f25760008060016101000a81548160ff0219169083151502179055505b505050565b600060019054906101000a900460ff168061251d575060008054906101000a900460ff16155b61255c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125539061365c565b60405180910390fd5b60008060019054906101000a900460ff1615905080156125ac576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156125cd5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff16806125f6575060008054906101000a900460ff16155b612635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262c9061365c565b60405180910390fd5b60008060019054906101000a900460ff161590508015612685576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b600061012d60006101000a81548160ff02191690831515021790555080156126c25760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff16806126eb575060008054906101000a900460ff16155b61272a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127219061365c565b60405180910390fd5b60008060019054906101000a900460ff16159050801561277a576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b801561279b5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff16806127c4575060008054906101000a900460ff16155b612803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fa9061365c565b60405180910390fd5b60008060019054906101000a900460ff161590508015612853576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6128676000801b6128626110f4565b612be2565b6128987f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66128936110f4565b612be2565b6128c97f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6128c46110f4565b612be2565b80156128ea5760008060016101000a81548160ff0219169083151502179055505b505050565b600082600001828154811061290757612906613f48565b5b9060005260206000200154905092915050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020541415905092915050565b612959838383612c16565b612961610b83565b156129a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299890614018565b60405180910390fd5b505050565b6060600060028360026129b99190614038565b6129c39190613470565b67ffffffffffffffff8111156129dc576129db6130d4565b5b6040519080825280601f01601f191660200182016040528015612a0e5781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612a4657612a45613f48565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612aaa57612aa9613f48565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002612aea9190614038565b612af49190613470565b90505b6001811115612b94577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110612b3657612b35613f48565b5b1a60f81b828281518110612b4d57612b4c613f48565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080612b8d90614092565b9050612af7565b5060008414612bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bcf90614108565b60405180910390fd5b8091505092915050565b612bec828261103c565b612c11816097600085815260200190815260200160002061104a90919063ffffffff16565b505050565b505050565b828054612c279061337d565b90600052602060002090601f016020900481019282612c495760008555612c90565b82601f10612c6257805160ff1916838001178555612c90565b82800160010185558215612c90579182015b82811115612c8f578251825591602001919060010190612c74565b5b509050612c9d9190612ca1565b5090565b5b80821115612cba576000816000905550600101612ca2565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612d0781612cd2565b8114612d1257600080fd5b50565b600081359050612d2481612cfe565b92915050565b600060208284031215612d4057612d3f612cc8565b5b6000612d4e84828501612d15565b91505092915050565b60008115159050919050565b612d6c81612d57565b82525050565b6000602082019050612d876000830184612d63565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612dc7578082015181840152602081019050612dac565b83811115612dd6576000848401525b50505050565b6000601f19601f8301169050919050565b6000612df882612d8d565b612e028185612d98565b9350612e12818560208601612da9565b612e1b81612ddc565b840191505092915050565b60006020820190508181036000830152612e408184612ded565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e7382612e48565b9050919050565b612e8381612e68565b8114612e8e57600080fd5b50565b600081359050612ea081612e7a565b92915050565b6000819050919050565b612eb981612ea6565b8114612ec457600080fd5b50565b600081359050612ed681612eb0565b92915050565b60008060408385031215612ef357612ef2612cc8565b5b6000612f0185828601612e91565b9250506020612f1285828601612ec7565b9150509250929050565b612f2581612ea6565b82525050565b6000602082019050612f406000830184612f1c565b92915050565b600080600060608486031215612f5f57612f5e612cc8565b5b6000612f6d86828701612e91565b9350506020612f7e86828701612e91565b9250506040612f8f86828701612ec7565b9150509250925092565b6000819050919050565b612fac81612f99565b8114612fb757600080fd5b50565b600081359050612fc981612fa3565b92915050565b600060208284031215612fe557612fe4612cc8565b5b6000612ff384828501612fba565b91505092915050565b61300581612f99565b82525050565b60006020820190506130206000830184612ffc565b92915050565b6000806040838503121561303d5761303c612cc8565b5b600061304b85828601612fba565b925050602061305c85828601612e91565b9150509250929050565b600060ff82169050919050565b61307c81613066565b82525050565b60006020820190506130976000830184613073565b92915050565b6000602082840312156130b3576130b2612cc8565b5b60006130c184828501612ec7565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61310c82612ddc565b810181811067ffffffffffffffff8211171561312b5761312a6130d4565b5b80604052505050565b600061313e612cbe565b905061314a8282613103565b919050565b600067ffffffffffffffff82111561316a576131696130d4565b5b61317382612ddc565b9050602081019050919050565b82818337600083830152505050565b60006131a261319d8461314f565b613134565b9050828152602081018484840111156131be576131bd6130cf565b5b6131c9848285613180565b509392505050565b600082601f8301126131e6576131e56130ca565b5b81356131f684826020860161318f565b91505092915050565b6000806040838503121561321657613215612cc8565b5b600083013567ffffffffffffffff81111561323457613233612ccd565b5b613240858286016131d1565b925050602083013567ffffffffffffffff81111561326157613260612ccd565b5b61326d858286016131d1565b9150509250929050565b60006020828403121561328d5761328c612cc8565b5b600061329b84828501612e91565b91505092915050565b600080604083850312156132bb576132ba612cc8565b5b60006132c985828601612fba565b92505060206132da85828601612ec7565b9150509250929050565b6132ed81612e68565b82525050565b600060208201905061330860008301846132e4565b92915050565b6000806040838503121561332557613324612cc8565b5b600061333385828601612e91565b925050602061334485828601612e91565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061339557607f821691505b602082108114156133a9576133a861334e565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061340b602883612d98565b9150613416826133af565b604082019050919050565b6000602082019050818103600083015261343a816133fe565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061347b82612ea6565b915061348683612ea6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156134bb576134ba613441565b5b828201905092915050565b7f45524332305072657365744d696e7465725061757365723a206d75737420686160008201527f76652070617573657220726f6c6520746f20756e706175736500000000000000602082015250565b6000613522603983612d98565b915061352d826134c6565b604082019050919050565b6000602082019050818103600083015261355181613515565b9050919050565b7f45524332305072657365744d696e7465725061757365723a206d75737420686160008201527f7665206d696e74657220726f6c6520746f206d696e7400000000000000000000602082015250565b60006135b4603683612d98565b91506135bf82613558565b604082019050919050565b600060208201905081810360008301526135e3816135a7565b9050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000613646602e83612d98565b9150613651826135ea565b604082019050919050565b6000602082019050818103600083015261367581613639565b9050919050565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b60006136d8602483612d98565b91506136e38261367c565b604082019050919050565b60006020820190508181036000830152613707816136cb565b9050919050565b7f45524332305072657365744d696e7465725061757365723a206d75737420686160008201527f76652070617573657220726f6c6520746f207061757365000000000000000000602082015250565b600061376a603783612d98565b91506137758261370e565b604082019050919050565b600060208201905081810360008301526137998161375d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006137fc602583612d98565b9150613807826137a0565b604082019050919050565b6000602082019050818103600083015261382b816137ef565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061388e602483612d98565b915061389982613832565b604082019050919050565b600060208201905081810360008301526138bd81613881565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613920602283612d98565b915061392b826138c4565b604082019050919050565b6000602082019050818103600083015261394f81613913565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139b2602583612d98565b91506139bd82613956565b604082019050919050565b600060208201905081810360008301526139e1816139a5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a44602383612d98565b9150613a4f826139e8565b604082019050919050565b60006020820190508181036000830152613a7381613a37565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613ad6602683612d98565b9150613ae182613a7a565b604082019050919050565b60006020820190508181036000830152613b0581613ac9565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000613b68602f83612d98565b9150613b7382613b0c565b604082019050919050565b60006020820190508181036000830152613b9781613b5b565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000613bd4601483612d98565b9150613bdf82613b9e565b602082019050919050565b60006020820190508181036000830152613c0381613bc7565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000613c40601f83612d98565b9150613c4b82613c0a565b602082019050919050565b60006020820190508181036000830152613c6f81613c33565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cd2602183612d98565b9150613cdd82613c76565b604082019050919050565b60006020820190508181036000830152613d0181613cc5565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d64602283612d98565b9150613d6f82613d08565b604082019050919050565b60006020820190508181036000830152613d9381613d57565b9050919050565b6000613da582612ea6565b9150613db083612ea6565b925082821015613dc357613dc2613441565b5b828203905092915050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000613e04601083612d98565b9150613e0f82613dce565b602082019050919050565b60006020820190508181036000830152613e3381613df7565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000613e7b601783613e3a565b9150613e8682613e45565b601782019050919050565b6000613e9c82612d8d565b613ea68185613e3a565b9350613eb6818560208601612da9565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000613ef8601183613e3a565b9150613f0382613ec2565b601182019050919050565b6000613f1982613e6e565b9150613f258285613e91565b9150613f3082613eeb565b9150613f3c8284613e91565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f45524332305061757361626c653a20746f6b656e207472616e7366657220776860008201527f696c652070617573656400000000000000000000000000000000000000000000602082015250565b6000614002602a83612d98565b915061400d82613fa6565b604082019050919050565b6000602082019050818103600083015261403181613ff5565b9050919050565b600061404382612ea6565b915061404e83612ea6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561408757614086613441565b5b828202905092915050565b600061409d82612ea6565b915060008214156140b1576140b0613441565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006140f2602083612d98565b91506140fd826140bc565b602082019050919050565b60006020820190508181036000830152614121816140e5565b905091905056fea26469706673582212203c25434177395aeed4b07f413abe4421f57c271938167436561edc466ea44b7e64736f6c63430008080033",
696
696
  "linkReferences": {},
697
697
  "deployedLinkReferences": {}
698
698
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/3209e5b39cdfe6834e6f6442881fa1e6.json"
3
+ "buildInfo": "../../../build-info/c95fb6bb6c0347b906a7ac81aab25093.json"
4
4
  }
@@ -50,8 +50,8 @@
50
50
  "type": "function"
51
51
  }
52
52
  ],
53
- "bytecode": "0x608060405234801561001057600080fd5b506101a8806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806350d25bcd1461003b578063feaf968c14610059575b600080fd5b61004361007b565b60405161005091906100da565b60405180910390f35b610061610088565b6040516100729594939291906100f5565b60405180910390f35b600064174876e800905090565b60008060008060008064174876e8006000806000945094509450945094509091929394565b6100b681610148565b82525050565b6100c581610152565b82525050565b6100d48161015c565b82525050565b60006020820190506100ef60008301846100ad565b92915050565b600060a08201905061010a60008301886100cb565b61011760208301876100ad565b61012460408301866100bc565b61013160608301856100bc565b61013e60808301846100cb565b9695505050505050565b6000819050919050565b6000819050919050565b600069ffffffffffffffffffff8216905091905056fea2646970667358221220d38d0ca12239fe04d69b04fc62e10cfbab6235983176a3a4c34a11ad355aed4864736f6c63430008030033",
54
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806350d25bcd1461003b578063feaf968c14610059575b600080fd5b61004361007b565b60405161005091906100da565b60405180910390f35b610061610088565b6040516100729594939291906100f5565b60405180910390f35b600064174876e800905090565b60008060008060008064174876e8006000806000945094509450945094509091929394565b6100b681610148565b82525050565b6100c581610152565b82525050565b6100d48161015c565b82525050565b60006020820190506100ef60008301846100ad565b92915050565b600060a08201905061010a60008301886100cb565b61011760208301876100ad565b61012460408301866100bc565b61013160608301856100bc565b61013e60808301846100cb565b9695505050505050565b6000819050919050565b6000819050919050565b600069ffffffffffffffffffff8216905091905056fea2646970667358221220d38d0ca12239fe04d69b04fc62e10cfbab6235983176a3a4c34a11ad355aed4864736f6c63430008030033",
53
+ "bytecode": "0x608060405234801561001057600080fd5b506101a8806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806350d25bcd1461003b578063feaf968c14610059575b600080fd5b61004361007b565b60405161005091906100c6565b60405180910390f35b610061610088565b60405161007295949392919061011f565b60405180910390f35b600064174876e800905090565b60008060008060008064174876e8006000806000945094509450945094509091929394565b6000819050919050565b6100c0816100ad565b82525050565b60006020820190506100db60008301846100b7565b92915050565b600069ffffffffffffffffffff82169050919050565b610100816100e1565b82525050565b6000819050919050565b61011981610106565b82525050565b600060a08201905061013460008301886100f7565b61014160208301876100b7565b61014e6040830186610110565b61015b6060830185610110565b61016860808301846100f7565b969550505050505056fea26469706673582212206e90968ad0470f4a0c4b7c2f315091a15e47d0ee9b5bc955d85c3ad7d2dd969d64736f6c63430008080033",
54
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806350d25bcd1461003b578063feaf968c14610059575b600080fd5b61004361007b565b60405161005091906100c6565b60405180910390f35b610061610088565b60405161007295949392919061011f565b60405180910390f35b600064174876e800905090565b60008060008060008064174876e8006000806000945094509450945094509091929394565b6000819050919050565b6100c0816100ad565b82525050565b60006020820190506100db60008301846100b7565b92915050565b600069ffffffffffffffffffff82169050919050565b610100816100e1565b82525050565b6000819050919050565b61011981610106565b82525050565b600060a08201905061013460008301886100f7565b61014160208301876100b7565b61014e6040830186610110565b61015b6060830185610110565b61016860808301846100f7565b969550505050505056fea26469706673582212206e90968ad0470f4a0c4b7c2f315091a15e47d0ee9b5bc955d85c3ad7d2dd969d64736f6c63430008080033",
55
55
  "linkReferences": {},
56
56
  "deployedLinkReferences": {}
57
57
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/3209e5b39cdfe6834e6f6442881fa1e6.json"
3
+ "buildInfo": "../../../build-info/c95fb6bb6c0347b906a7ac81aab25093.json"
4
4
  }
@@ -17,8 +17,8 @@
17
17
  "type": "function"
18
18
  }
19
19
  ],
20
- "bytecode": "0x608060405234801561001057600080fd5b5060b98061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336047565b604051603e91906060565b60405180910390f35b6000639502f900905090565b605a816079565b82525050565b6000602082019050607360008301846053565b92915050565b600081905091905056fea264697066735822122076862f9e934265ad58ca8c4eae4f468f62f6f8fc8f80ebbbf1b88652d93be5c964736f6c63430008030033",
21
- "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336047565b604051603e91906060565b60405180910390f35b6000639502f900905090565b605a816079565b82525050565b6000602082019050607360008301846053565b92915050565b600081905091905056fea264697066735822122076862f9e934265ad58ca8c4eae4f468f62f6f8fc8f80ebbbf1b88652d93be5c964736f6c63430008030033",
20
+ "bytecode": "0x608060405234801561001057600080fd5b5060b98061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336047565b604051603e9190606a565b60405180910390f35b6000639502f900905090565b6000819050919050565b6064816053565b82525050565b6000602082019050607d6000830184605d565b9291505056fea264697066735822122088409c464c1ac17b71b6084dc9cdb83bde4e12ce5aeca40b9c6b867720018c2864736f6c63430008080033",
21
+ "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336047565b604051603e9190606a565b60405180910390f35b6000639502f900905090565b6000819050919050565b6064816053565b82525050565b6000602082019050607d6000830184605d565b9291505056fea264697066735822122088409c464c1ac17b71b6084dc9cdb83bde4e12ce5aeca40b9c6b867720018c2864736f6c63430008080033",
22
22
  "linkReferences": {},
23
23
  "deployedLinkReferences": {}
24
24
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/3209e5b39cdfe6834e6f6442881fa1e6.json"
3
+ "buildInfo": "../../../build-info/c95fb6bb6c0347b906a7ac81aab25093.json"
4
4
  }