@pendle/core-v2 2.9.0-mainnet → 2.10.1-mainnet

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 (262) hide show
  1. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.dbg.json +1 -1
  2. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.json +2 -2
  3. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.dbg.json +1 -1
  4. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +1 -1
  5. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.json +2 -2
  6. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +1 -1
  7. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  8. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  9. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +2 -2
  10. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  11. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +2 -2
  12. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributorV2.sol/PendleFeeDistributorV2.dbg.json +4 -0
  13. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributorV2.sol/PendleFeeDistributorV2.json +492 -0
  14. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  15. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +2 -2
  16. package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  17. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  18. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +2 -2
  19. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  20. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +2 -2
  21. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  22. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  23. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
  24. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +1 -1
  25. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.json +2 -2
  26. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  27. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
  28. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.dbg.json +1 -1
  29. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.json +2 -2
  30. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.dbg.json +1 -1
  31. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.json +2 -2
  32. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.dbg.json +1 -1
  33. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.json +2 -2
  34. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  35. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.json +2 -2
  36. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.dbg.json +1 -1
  37. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.json +2 -2
  38. package/build/artifacts/contracts/core/Market/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  39. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  40. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +2 -2
  41. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  42. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
  43. package/build/artifacts/contracts/core/RewardManager/RewardManager.sol/RewardManager.dbg.json +1 -1
  44. package/build/artifacts/contracts/core/RewardManager/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  45. package/build/artifacts/contracts/core/StandardizedYield/PYIndex.sol/PYIndexLib.dbg.json +1 -1
  46. package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.dbg.json +1 -1
  47. package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +1 -1
  48. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.dbg.json +1 -1
  49. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.json +2 -2
  50. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethAnkrethSYV2.sol/PendleAuraWethAnkrethSYV2.dbg.json +1 -1
  51. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethAnkrethSYV2.sol/PendleAuraWethAnkrethSYV2.json +2 -2
  52. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRocketEthSYV2.sol/PendleAuraWethRocketEthSYV2.dbg.json +1 -1
  53. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRocketEthSYV2.sol/PendleAuraWethRocketEthSYV2.json +2 -2
  54. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethStafiEthSY.sol/PendleAuraWethStafiEthSY.dbg.json +1 -1
  55. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethStafiEthSY.sol/PendleAuraWethStafiEthSY.json +2 -2
  56. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSYV2.sol/PendleAuraWethWstethSYV2.dbg.json +1 -1
  57. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSYV2.sol/PendleAuraWethWstethSYV2.json +2 -2
  58. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSYV2.sol/PendleAuraBalancerStableLPSYV2.dbg.json +1 -1
  59. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  60. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
  61. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.dbg.json +1 -1
  62. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.json +2 -2
  63. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.dbg.json +1 -1
  64. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.json +2 -2
  65. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.dbg.json +1 -1
  66. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.json +2 -2
  67. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol/Curve3CrvPoolHelper.dbg.json +1 -1
  68. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol/CurveFraxUsdcPoolHelper.dbg.json +1 -1
  69. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol/CurveUsdd3CrvPoolHelper.dbg.json +1 -1
  70. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +1 -1
  71. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.dbg.json +1 -1
  72. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.json +2 -2
  73. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleGdaiSY.sol/PendleGDaiSY.dbg.json +1 -1
  74. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleGdaiSY.sol/PendleGDaiSY.json +2 -2
  75. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.dbg.json +1 -1
  76. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.json +2 -2
  77. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleSfrxEthSY.sol/PendleSfrxEthSY.dbg.json +1 -1
  78. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleSfrxEthSY.sol/PendleSfrxEthSY.json +2 -2
  79. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleStargateLPSY.sol/PendleStargateLPSY.dbg.json +1 -1
  80. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleStargateLPSY.sol/PendleStargateLPSY.json +2 -2
  81. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.dbg.json +1 -1
  82. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.json +2 -2
  83. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  84. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  85. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +2 -2
  86. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  87. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +2 -2
  88. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  89. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +2 -2
  90. package/build/artifacts/contracts/core/YieldContractsV2/InterestManagerYTV2.sol/InterestManagerYTV2.dbg.json +1 -1
  91. package/build/artifacts/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol/PendlePrincipalTokenV2.dbg.json +1 -1
  92. package/build/artifacts/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol/PendlePrincipalTokenV2.json +2 -2
  93. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.dbg.json +1 -1
  94. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.json +2 -2
  95. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.dbg.json +1 -1
  96. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.json +2 -2
  97. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
  98. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.json +7 -2
  99. package/build/artifacts/contracts/core/libraries/math/Math.sol/Math.dbg.json +1 -1
  100. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
  101. package/build/artifacts/contracts/interfaces/IPActionMarketAuxStatic.sol/IPActionMarketAuxStatic.dbg.json +1 -1
  102. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
  103. package/build/artifacts/contracts/interfaces/IPActionStorageStatic.sol/IPActionStorageStatic.dbg.json +1 -1
  104. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
  105. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
  106. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  107. package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
  108. package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.dbg.json +1 -1
  109. package/build/artifacts/contracts/interfaces/IPFeeDistributorV2.sol/IPFeeDistributorV2.dbg.json +4 -0
  110. package/build/artifacts/contracts/interfaces/IPFeeDistributorV2.sol/IPFeeDistributorV2.json +169 -0
  111. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  112. package/build/artifacts/contracts/interfaces/IPRouterHelper.sol/IPRouterHelper.dbg.json +1 -1
  113. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
  114. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  115. package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
  116. package/build/artifacts/contracts/offchain-helpers/BoringPtSeller.sol/BoringPtSeller.dbg.json +1 -1
  117. package/build/artifacts/contracts/offchain-helpers/Broadcaster.sol/Broadcaster.dbg.json +1 -1
  118. package/build/artifacts/contracts/offchain-helpers/Broadcaster.sol/Broadcaster.json +2 -2
  119. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +1 -1
  120. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.json +2 -2
  121. package/build/artifacts/contracts/offchain-helpers/EmptyUUPS.sol/EmptyUUPS.dbg.json +4 -0
  122. package/build/artifacts/contracts/offchain-helpers/EmptyUUPS.sol/EmptyUUPS.json +200 -0
  123. package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.dbg.json +1 -1
  124. package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.json +2 -2
  125. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.dbg.json +1 -1
  126. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.json +2 -2
  127. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.dbg.json +1 -1
  128. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.json +2 -2
  129. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.dbg.json +1 -1
  130. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.json +2 -2
  131. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.dbg.json +1 -1
  132. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.json +2 -2
  133. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.dbg.json +1 -1
  134. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.json +2 -2
  135. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.dbg.json +1 -1
  136. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.json +2 -2
  137. package/build/artifacts/contracts/offchain-helpers/router-static/base/StorageLayout.sol/StorageLayout.dbg.json +1 -1
  138. package/build/artifacts/contracts/oracles/PendlePtOracle.sol/PendlePtOracle.dbg.json +1 -1
  139. package/build/artifacts/contracts/oracles/PendlePtOracle.sol/PendlePtOracle.json +2 -2
  140. package/build/artifacts/contracts/oracles/PendlePtOracleLib.sol/PendlePtOracleLib.dbg.json +1 -1
  141. package/build/artifacts/contracts/oracles/PendlePtOracleLib.sol/PendlePtOracleLib.json +2 -2
  142. package/build/artifacts/contracts/oracles/samples/PendlePtGlpOracle.sol/PendlePtGlpOracle.dbg.json +1 -1
  143. package/build/artifacts/contracts/oracles/samples/PendlePtGlpOracle.sol/PendlePtGlpOracle.json +2 -2
  144. package/build/artifacts/contracts/oracles/samples/PendlePtUsdChainlinkOracle.sol/PendlePtUsdChainlinkOracle.dbg.json +1 -1
  145. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
  146. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +2 -2
  147. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
  148. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.json +2 -2
  149. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
  150. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.json +2 -2
  151. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
  152. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.json +2 -2
  153. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  154. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.json +2 -2
  155. package/build/artifacts/contracts/router/PendleRouterHelper.sol/PendleRouterHelper.dbg.json +1 -1
  156. package/build/artifacts/contracts/router/PendleRouterHelper.sol/PendleRouterHelper.json +2 -2
  157. package/build/artifacts/contracts/router/base/ActionBaseCallback.sol/ActionBaseCallback.dbg.json +1 -1
  158. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
  159. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
  160. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
  161. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
  162. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
  163. package/build/artifacts/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol/OneInchAggregationRouterHelper.dbg.json +1 -1
  164. package/build/artifacts/contracts/router/swap-aggregator/PendleSwapArbitrum.sol/PendleSwapArbitrum.dbg.json +1 -1
  165. package/build/artifacts/contracts/router/swap-aggregator/PendleSwapArbitrum.sol/PendleSwapArbitrum.json +2 -2
  166. package/build/artifacts/contracts/router/swap-aggregator/PendleSwapEthereum.sol/PendleSwapEthereum.dbg.json +1 -1
  167. package/build/artifacts/contracts/router/swap-aggregator/PendleSwapEthereum.sol/PendleSwapEthereum.json +2 -2
  168. package/contracts/LiquidityMining/VeDistributor/PendleFeeDistributorV2.sol +166 -0
  169. package/contracts/core/libraries/Errors.sol +1 -0
  170. package/contracts/interfaces/IPFeeDistributor.sol +3 -4
  171. package/contracts/interfaces/IPFeeDistributorV2.sol +46 -0
  172. package/contracts/offchain-helpers/EmptyUUPS.sol +16 -0
  173. package/contracts/oracles/samples/PendlePtGlpOracle.sol +1 -1
  174. package/deployments/1-core.json +2 -1
  175. package/package.json +1 -1
  176. package/typechain-types/EmptyUUPS.ts +352 -0
  177. package/typechain-types/IChronosFactory.ts +245 -0
  178. package/typechain-types/IChronosPair.ts +631 -0
  179. package/typechain-types/IChronosRouter.ts +311 -0
  180. package/typechain-types/IERC721Receiver.ts +120 -0
  181. package/typechain-types/IMaGauge.ts +1246 -0
  182. package/typechain-types/IMaLPNFT.ts +1146 -0
  183. package/typechain-types/IPFeeDistributorV2.ts +287 -0
  184. package/typechain-types/IPair.ts +553 -0
  185. package/typechain-types/IPairFactory.ts +245 -0
  186. package/typechain-types/PendleChronosChrEthSY.ts +1520 -0
  187. package/typechain-types/PendleChronosNFTManager.ts +217 -0
  188. package/typechain-types/PendleChronosVolatilePairBase.ts +134 -0
  189. package/typechain-types/PendleFeeDistributorV2.ts +722 -0
  190. package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +1 -1
  191. package/typechain-types/factories/ActionInfoStatic__factory.ts +1 -1
  192. package/typechain-types/factories/ActionMarketAuxStatic__factory.ts +1 -1
  193. package/typechain-types/factories/ActionMarketCoreStatic__factory.ts +1 -1
  194. package/typechain-types/factories/ActionMintRedeemStatic__factory.ts +1 -1
  195. package/typechain-types/factories/ActionMintRedeem__factory.ts +1 -1
  196. package/typechain-types/factories/ActionStorageStatic__factory.ts +1 -1
  197. package/typechain-types/factories/ActionSwapPT__factory.ts +1 -1
  198. package/typechain-types/factories/ActionSwapYT__factory.ts +1 -1
  199. package/typechain-types/factories/ActionVePendleStatic__factory.ts +1 -1
  200. package/typechain-types/factories/Broadcaster__factory.ts +1 -1
  201. package/typechain-types/factories/BulkSellerFactory__factory.ts +1 -1
  202. package/typechain-types/factories/BulkSellerOffchain__factory.ts +1 -1
  203. package/typechain-types/factories/BulkSeller__factory.ts +1 -1
  204. package/typechain-types/factories/EmptyUUPS__factory.ts +250 -0
  205. package/typechain-types/factories/Errors__factory.ts +6 -1
  206. package/typechain-types/factories/IChronosFactory__factory.ts +167 -0
  207. package/typechain-types/factories/IChronosPair__factory.ts +473 -0
  208. package/typechain-types/factories/IChronosRouter__factory.ts +210 -0
  209. package/typechain-types/factories/IERC721Receiver__factory.ts +60 -0
  210. package/typechain-types/factories/IMaGauge__factory.ts +740 -0
  211. package/typechain-types/factories/IMaLPNFT__factory.ts +702 -0
  212. package/typechain-types/factories/IPFeeDistributorV2__factory.ts +184 -0
  213. package/typechain-types/factories/IPairFactory__factory.ts +164 -0
  214. package/typechain-types/factories/IPair__factory.ts +392 -0
  215. package/typechain-types/factories/OracleLib__factory.ts +1 -1
  216. package/typechain-types/factories/PendleAuraWethAnkrethSYV2__factory.ts +1 -1
  217. package/typechain-types/factories/PendleAuraWethRocketEthSYV2__factory.ts +1 -1
  218. package/typechain-types/factories/PendleAuraWethStafiEthSY__factory.ts +1 -1
  219. package/typechain-types/factories/PendleAuraWethWstethSYV2__factory.ts +1 -1
  220. package/typechain-types/factories/PendleChronosChrEthSY__factory.ts +1323 -0
  221. package/typechain-types/factories/PendleChronosNFTManager__factory.ts +161 -0
  222. package/typechain-types/factories/PendleChronosVolatilePairBase__factory.ts +95 -0
  223. package/typechain-types/factories/PendleCurveFraxUsdcSY__factory.ts +1 -1
  224. package/typechain-types/factories/PendleCurveUsdd3CrvSY__factory.ts +1 -1
  225. package/typechain-types/factories/PendleFeeDistributorV2__factory.ts +549 -0
  226. package/typechain-types/factories/PendleFeeDistributor__factory.ts +1 -1
  227. package/typechain-types/factories/PendleGDaiSY__factory.ts +1 -1
  228. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
  229. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +1 -1
  230. package/typechain-types/factories/PendleGlpSY__factory.ts +1 -1
  231. package/typechain-types/factories/PendleLooksStakingSY__factory.ts +1 -1
  232. package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
  233. package/typechain-types/factories/PendleMarket__factory.ts +1 -1
  234. package/typechain-types/factories/PendleMsgReceiveEndpointUpg__factory.ts +1 -1
  235. package/typechain-types/factories/PendleMsgSendEndpointUpg__factory.ts +1 -1
  236. package/typechain-types/factories/PendlePrincipalTokenV2__factory.ts +1 -1
  237. package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
  238. package/typechain-types/factories/PendlePtGlpOracle__factory.ts +1 -1
  239. package/typechain-types/factories/PendlePtOracle__factory.ts +1 -1
  240. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
  241. package/typechain-types/factories/PendleQiTokenSY__factory.ts +1 -1
  242. package/typechain-types/factories/PendleRouterHelper__factory.ts +1 -1
  243. package/typechain-types/factories/PendleRouterStatic__factory.ts +1 -1
  244. package/typechain-types/factories/PendleRouter__factory.ts +1 -1
  245. package/typechain-types/factories/PendleSfrxEthSY__factory.ts +1 -1
  246. package/typechain-types/factories/PendleStargateLPSY__factory.ts +1 -1
  247. package/typechain-types/factories/PendleSwapArbitrum__factory.ts +1 -1
  248. package/typechain-types/factories/PendleSwapEthereum__factory.ts +1 -1
  249. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
  250. package/typechain-types/factories/PendleWstEthSY__factory.ts +1 -1
  251. package/typechain-types/factories/PendleYieldContractFactoryV2__factory.ts +1 -1
  252. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
  253. package/typechain-types/factories/PendleYieldTokenV2__factory.ts +1 -1
  254. package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
  255. package/typechain-types/factories/SAPE__factory.ts +1 -1
  256. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
  257. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +1 -1
  258. package/typechain-types/hardhat.d.ts +102 -30
  259. package/typechain-types/index.ts +24 -8
  260. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +0 -4
  261. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +0 -592
  262. package/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol +0 -219
@@ -69,8 +69,8 @@
69
69
  "type": "receive"
70
70
  }
71
71
  ],
72
- "bytecode": "0x608060405234801561001057600080fd5b5061305b806100206000396000f3fe6080604052600436106100225760003560e01c80632bdb823c1461002e57600080fd5b3661002957005b600080fd5b61004161003c366004611402565b610043565b005b61005c836100576040840160208501611461565b61011b565b61011561006f608083016060840161148c565b6100ba5761008060408301836114a9565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506100dd92505050565b6100dd6100ca60208401846114f6565b6100d760408501856114a9565b866101df565b6001600160a01b038516156100f35760006100f5565b835b6101056040850160208601611461565b6001600160a01b03169190610240565b50505050565b6001600160a01b03821661012d575050565b61013f60026001600160601b03611543565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526001600160601b03929092169184169063dd62ed3e90604401602060405180830381865afa158015610198573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101bc9190611576565b10156101db576101ce82826000610270565b6101db8282600019610270565b5050565b606060018560038111156101f5576101f561158f565b0361020c5761020584848461037f565b9050610238565b60028560038111156102205761022061158f565b0361023057610205848484610553565b6102386115a5565b949350505050565b6060610266848484604051806060016040528060298152602001612ffd6029913961079e565b90505b9392505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b17905291516000928392908716916102cc91906115df565b6000604051808303816000865af19150503d8060008114610309576040519150601f19603f3d011682016040523d82523d6000602084013e61030e565b606091505b50915091508180156103385750805115806103385750808060200190518101906103389190611606565b6103785760405162461bcd60e51b815260206004820152600c60248201526b5361666520417070726f766560a01b60448201526064015b60405180910390fd5b5050505050565b606060006103906004828688611623565b6103999161164d565b9050631de02f1760e01b6001600160e01b03198216016104565760006103c28560048189611623565b8101906103cf9190611a58565b90506103f881606001518260400151866103f38560600151610120015160206108cf565b6108db565b82606001836040018290528290525050818160405160240161041a9190611ca3565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529250610269915050565b63750fcc0560e01b6001600160e01b03198216016104ff576000808080610480886004818c611623565b81019061048d9190611d24565b93509350935093506104a283838960016108db565b604051919450925085906104c0908690869086908690602401611dbe565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529550610269945050505050565b60405162461bcd60e51b8152602060048201526024808201527f496e7075745363616c696e6748656c7065723a20496e76616c69642073656c6560448201526331ba37b960e11b606482015260840161036f565b606060006105646004828688611623565b61056d9161164d565b9050600061057e8560048189611623565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293505050506001600160e01b0319821663086fe1cb60e31b0161065757600080600080848060200190518101906105e79190611e63565b93509350935093506105fa82848a610949565b915087925085848484846040516024016106179493929190611ebb565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152965061026995505050505050565b63ed55c35160e01b6001600160e01b03198316016106c957600080600080848060200190518101906106899190611f2d565b93509350935093506106a48360a0015184608001518a610949565b60a0840152608083018890526040518690610617908690869086908690602401612025565b6308723dad60e01b6001600160e01b0319831601610772576000806000806000858060200190518101906106fd91906120aa565b9450945094509450945061071282848b610949565b9150889250868585858585604051602401610731959493929190612122565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915297506102699650505050505050565b60405163a7dd6a9560e01b8152600160048201526001600160e01b03198316602482015260440161036f565b6060824710156107ff5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161036f565b6001600160a01b0385163b6108565760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161036f565b600080866001600160a01b0316858760405161087291906115df565b60006040518083038185875af1925050503d80600081146108af576040519150601f19603f3d011682016040523d82523d6000602084013e6108b4565b606091505b50915091506108c4828286610960565b979650505050505050565b81811615155b92915050565b6108e3611365565b60e08501516060908481036108fe5786869250925050610940565b83156109245761090f878287610999565b61091a878388610af8565b9250925050610940565b61092f878287610999565b61093a878388610c25565b92509250505b94509492505050565b600082610956838661215c565b6102669190612173565b6060831561096f575081610269565b82511561097f5782518084602001fd5b8160405162461bcd60e51b815260040161036f9190612187565b6109a1611365565b610100840151836109b2848361215c565b6109bc9190612173565b61010086015280158015906109d45750610100850151155b156109e25760016101008601525b60e085018390526040850151516000036109ff5784915050610269565b6000805b866040015151811015610aed576001876040015151610a22919061219a565b8103610a5957610a32828661219a565b87606001518281518110610a4857610a486121ad565b602002602001018181525050610ab0565b858588606001518381518110610a7157610a716121ad565b6020026020010151610a83919061215c565b610a8d9190612173565b87606001518281518110610aa357610aa36121ad565b6020026020010181815250505b86606001518181518110610ac657610ac66121ad565b602002602001015182610ad991906121c3565b915080610ae5816121d6565b915050610a03565b509495945050505050565b6060600084806020019051810190610b1091906122dd565b8051519091506000805b82811015610bf857610b2d60018461219a565b8103610b6457610b3d828761219a565b84602001518281518110610b5357610b536121ad565b602002602001018181525050610bbb565b868685602001518381518110610b7c57610b7c6121ad565b6020026020010151610b8e919061215c565b610b989190612173565b84602001518281518110610bae57610bae6121ad565b6020026020010181815250505b83602001518181518110610bd157610bd16121ad565b602002602001015182610be491906121c3565b915080610bf0816121d6565b915050610b1a565b5082604051602001610c0a91906123b0565b60405160208183030381529060405293505050509392505050565b6060600084806020019051810190610c3d91906125e9565b905083838260600151610c50919061215c565b610c5a9190612173565b606082015260005b815151811015610f2057600082600001518281518110610c8457610c846121ad565b6020026020010151600081518110610c9e57610c9e6121ad565b60209081029190910181015190810151909150630be1a7a360e21b6001600160e01b0319821601610cdd578151610cd6908888610f4b565b8252610f0b565b6301b966ef60e71b6001600160e01b0319821601610d02578151610cd6908888610f96565b633409dd2d60e01b6001600160e01b0319821601610d27578151610cd6908888610fe1565b63b6bb37eb60e01b6001600160e01b0319821601610d4c578151610cd6908888610f4b565b63617556cb60e01b6001600160e01b0319821601610d71578151610cd690888861102c565b6308c49cdf60e11b6001600160e01b0319821601610da15760405162461bcd60e51b815260040161036f906126c0565b635a2f8d7160e01b6001600160e01b0319821601610dc6578151610cd69088886110df565b6375a256f160e01b6001600160e01b0319821601610deb578151610cd6908888611174565b63a7c1a92960e01b6001600160e01b0319821601610e10578151610cd69088886111bf565b6360fabb9d60e01b6001600160e01b0319821601610e35578151610cd690888861122b565b63873c52e160e01b6001600160e01b0319821601610e5a578151610cd69088886112da565b630590bce960e11b6001600160e01b0319821601610e8a5760405162461bcd60e51b815260040161036f906126c0565b6310262a3d60e01b6001600160e01b0319821601610eaf578151610cd6908888610f4b565b60405162461bcd60e51b815260206004820152602b60248201527f4167677265676174696f6e4578656375746f723a204465782074797065206e6f60448201526a1d081cdd5c1c1bdc9d195960aa1b606482015260840161036f565b50508080610f18906121d6565b915050610c62565b5080604051602001610f32919061270a565b6040516020818303038152906040529150509392505050565b6060600084806020019051810190610f639190612858565b905083838260800151610f76919061215c565b610f809190612173565b6080820152604051610f32908290602001612900565b6060600084806020019051810190610fae91906129b4565b905083838260a00151610fc1919061215c565b610fcb9190612173565b60a0820152604051610f32908290602001612a5c565b6060600084806020019051810190610ff99190612b18565b905083838260a0015161100c919061215c565b6110169190612173565b60a0820152604051610f32908290602001612bb5565b60606000848060200190518101906110449190612c4f565b905083838260800151611057919061215c565b6110619190612173565b6080820152604051610f3290829060200160006101008201905060018060a01b038084511683528060208501511660208401528060408501511660408401528060608501511660608401526080840151608084015260a084015160a08401528060c08501511660c08401525060e0830151151560e083015292915050565b60606000848060200190518101906110f79190612ce9565b90508383826080015161110a919061215c565b6111149190612173565b6080820152604051610f3290829060200181516001600160a01b03908116825260208084015190830152604080840151821690830152606080840151909116908201526080808301519082015260a0918201519181019190915260c00190565b606060008480602001905181019061118c9190612d7a565b90508383826080015161119f919061215c565b6111a99190612173565b6080820152604051610f32908290602001612e04565b60606000848060200190518101906111d79190612e86565b9050838382602001516111ea919061215c565b6111f49190612173565b60208281019182526040805184516001600160a01b0316928101929092529151818301529082015115156060820152608001610f32565b60606000848060200190518101906112439190612eee565b905083838260800151611256919061215c565b6112609190612173565b6080820152604051610f3290829060200160006101008201905060018060a01b0380845116835280602085015116602084015280604085015116604084015250606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e0830151151560e083015292915050565b60606000848060200190518101906112f29190612f6e565b905083838260600151611305919061215c565b61130f9190612173565b6060820152604051610f3290829060200181516001600160a01b03908116825260208084015182169083015260408084015182169083015260608084015190830152608092830151169181019190915260a00190565b60405180610160016040528060006001600160a01b0316815260200160006001600160a01b031681526020016060815260200160608152602001606081526020016060815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001606081525090565b6001600160a01b03811681146113ef57600080fd5b50565b80356113fd816113da565b919050565b60008060006060848603121561141757600080fd5b8335611422816113da565b92506020840135915060408401356001600160401b0381111561144457600080fd5b84016080818703121561145657600080fd5b809150509250925092565b60006020828403121561147357600080fd5b8135610269816113da565b80151581146113ef57600080fd5b60006020828403121561149e57600080fd5b81356102698161147e565b6000808335601e198436030181126114c057600080fd5b8301803591506001600160401b038211156114da57600080fd5b6020019150368190038213156114ef57600080fd5b9250929050565b60006020828403121561150857600080fd5b81356004811061026957600080fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001600160601b038381168061155d5761155d611517565b92169190910492915050565b6001600160a01b03169052565b60006020828403121561158857600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60005b838110156115d65781810151838201526020016115be565b50506000910152565b600082516115f18184602087016115bb565b9190910192915050565b80516113fd8161147e565b60006020828403121561161857600080fd5b81516102698161147e565b6000808585111561163357600080fd5b8386111561164057600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156116755780818660040360031b1b83161692505b505092915050565b634e487b7160e01b600052604160045260246000fd5b60405161016081016001600160401b03811182821017156116b6576116b661167d565b60405290565b60405160a081016001600160401b03811182821017156116b6576116b661167d565b60405160e081016001600160401b03811182821017156116b6576116b661167d565b604080519081016001600160401b03811182821017156116b6576116b661167d565b60405161012081016001600160401b03811182821017156116b6576116b661167d565b60405161014081016001600160401b03811182821017156116b6576116b661167d565b60405161010081016001600160401b03811182821017156116b6576116b661167d565b604051601f8201601f191681016001600160401b03811182821017156117b3576117b361167d565b604052919050565b60006001600160401b038211156117d4576117d461167d565b50601f01601f191660200190565b600082601f8301126117f357600080fd5b8135611806611801826117bb565b61178b565b81815284602083860101111561181b57600080fd5b816020850160208301376000918101602001919091529392505050565b60006001600160401b038211156118515761185161167d565b5060051b60200190565b600082601f83011261186c57600080fd5b8135602061187c61180183611838565b82815260059290921b8401810191818101908684111561189b57600080fd5b8286015b848110156118bf5780356118b2816113da565b835291830191830161189f565b509695505050505050565b600082601f8301126118db57600080fd5b813560206118eb61180183611838565b82815260059290921b8401810191818101908684111561190a57600080fd5b8286015b848110156118bf578035835291830191830161190e565b6000610160828403121561193857600080fd5b611940611693565b905061194b826113f2565b8152611959602083016113f2565b602082015260408201356001600160401b038082111561197857600080fd5b6119848583860161185b565b6040840152606084013591508082111561199d57600080fd5b6119a9858386016118ca565b606084015260808401359150808211156119c257600080fd5b6119ce8583860161185b565b608084015260a08401359150808211156119e757600080fd5b6119f3858386016118ca565b60a0840152611a0460c085016113f2565b60c084015260e084810135908401526101008085013590840152610120808501359084015261014091508184013581811115611a3f57600080fd5b611a4b868287016117e2565b8385015250505092915050565b600060208284031215611a6a57600080fd5b81356001600160401b0380821115611a8157600080fd5b9083019060a08286031215611a9557600080fd5b611a9d6116bc565b611aa6836113f2565b8152611ab4602084016113f2565b6020820152604083013582811115611acb57600080fd5b611ad7878286016117e2565b604083015250606083013582811115611aef57600080fd5b611afb87828601611925565b606083015250608083013582811115611b1357600080fd5b611b1f878286016117e2565b60808301525095945050505050565b60008151808452611b468160208601602086016115bb565b601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b83811015610aed5781516001600160a01b031687529582019590820190600101611b6e565b600081518084526020808501945080840160005b83811015610aed57815187529582019590820190600101611ba7565b6000610160611bd3848451611569565b6020830151611be56020860182611569565b506040830151816040860152611bfd82860182611b5a565b91505060608301518482036060860152611c178282611b93565b91505060808301518482036080860152611c318282611b5a565b91505060a083015184820360a0860152611c4b8282611b93565b91505060c0830151611c6060c0860182611569565b5060e08381015190850152610100808401519085015261012080840151908501526101408084015185830382870152611c998382611b2e565b9695505050505050565b60208152600060018060a01b0380845116602084015280602085015116604084015250604083015160a06060840152611cdf60c0840182611b2e565b90506060840151601f1980858403016080860152611cfd8383611bc3565b925060808601519150808584030160a086015250611d1b8282611b2e565b95945050505050565b60008060008060808587031215611d3a57600080fd5b8435611d45816113da565b935060208501356001600160401b0380821115611d6157600080fd5b611d6d88838901611925565b94506040870135915080821115611d8357600080fd5b611d8f888389016117e2565b93506060870135915080821115611da557600080fd5b50611db2878288016117e2565b91505092959194509250565b6001600160a01b0385168152608060208201819052600090611de290830186611bc3565b8281036040840152611df48186611b2e565b905082810360608401526108c48185611b2e565b600082601f830112611e1957600080fd5b81516020611e2961180183611838565b82815260059290921b84018101918181019086841115611e4857600080fd5b8286015b848110156118bf5780518352918301918301611e4c565b60008060008060808587031215611e7957600080fd5b8451611e84816113da565b60208601516040870151606088015192965090945092506001600160401b03811115611eaf57600080fd5b611db287828801611e08565b60018060a01b0385168152836020820152826040820152608060608201526000611c996080830184611b93565b600082601f830112611ef957600080fd5b8151611f07611801826117bb565b818152846020838601011115611f1c57600080fd5b6102388260208301602087016115bb565b600080600080848603610140811215611f4557600080fd5b8551611f50816113da565b945060e0601f1982011215611f6457600080fd5b50611f6d6116de565b6020860151611f7b816113da565b81526040860151611f8b816113da565b60208201526060860151611f9e816113da565b60408201526080860151611fb1816113da565b606082015260a086810151608083015260c0808801519183019190915260e0870151908201526101008601519093506001600160401b0380821115611ff557600080fd5b61200188838901611ee8565b935061012087015191508082111561201857600080fd5b50611db287828801611ee8565b600061014060018060a01b03808816845280875116602085015280602088015116604085015280604088015116606085015280606088015116608085015250608086015160a084015260a086015160c084015260c086015160e08401528061010084015261209581840186611b2e565b90508281036101208401526108c48185611b2e565b600080600080600060a086880312156120c257600080fd5b85516120cd816113da565b60208701519095506120de816113da565b60408701516060880151608089015192965090945092506001600160401b0381111561210957600080fd5b61211588828901611e08565b9150509295509295909350565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906108c490830184611b93565b80820281158282048414176108d5576108d561152d565b60008261218257612182611517565b500490565b6020815260006102696020830184611b2e565b818103818111156108d5576108d561152d565b634e487b7160e01b600052603260045260246000fd5b808201808211156108d5576108d561152d565b6000600182016121e8576121e861152d565b5060010190565b80516113fd816113da565b600082601f83011261220b57600080fd5b8151602061221b61180183611838565b82815260059290921b8401810191818101908684111561223a57600080fd5b8286015b848110156118bf578051612251816113da565b835291830191830161223e565b600082601f83011261226f57600080fd5b8151602061227f61180183611838565b82815260059290921b8401810191818101908684111561229e57600080fd5b8286015b848110156118bf5780516001600160401b038111156122c15760008081fd5b6122cf8986838b0101611ee8565b8452509183019183016122a2565b6000602082840312156122ef57600080fd5b81516001600160401b038082111561230657600080fd5b9083019060a0828603121561231a57600080fd5b6123226116bc565b82518281111561233157600080fd5b61233d878286016121fa565b82525060208301518281111561235257600080fd5b61235e87828601611e08565b60208301525060408301518281111561237657600080fd5b6123828782860161225e565b604083015250606083015160608201526080830151828111156123a457600080fd5b611b1f87828601611ee8565b60006020808352835160a0828501526123cc60c0850182611b5a565b905081850151601f19808684030160408701526123e98383611b93565b60408801518782038301606089015280518083529194508501925084840190600581901b8501860160005b82811015612440578487830301845261242e828751611b2e565b95880195938801939150600101612414565b5060608a015160808a015260808a01519650838982030160a08a01526124668188611b2e565b9a9950505050505050505050565b600082601f83011261248557600080fd5b815161249361180182611838565b808282526020820191508560208460051b87010111156124b257600080fd5b602085015b60208460051b8701018110156125df5780516001600160401b038111156124dd57600080fd5b8601603f810188136124ee57600080fd5b60208101516124ff61180182611838565b808282526020820191508a60408460051b860101111561251e57600080fd5b604084015b60408460051b8601018110156125c95780516001600160401b0381111561254957600080fd5b60408682018e03603f1901121561255f57600080fd5b612567611700565b868201604001516001600160401b0381111561258257600080fd5b6125938f604083868c010101611ee8565b82525090860160600151906001600160e01b0319821682146125b457600080fd5b60208181019290925284529283019201612523565b50865250506020938401939190910190506124b7565b5095945050505050565b6000602082840312156125fb57600080fd5b81516001600160401b038082111561261257600080fd5b9083019060e0828603121561262657600080fd5b61262e6116de565b82518281111561263d57600080fd5b61264987828601612474565b825250612658602084016121ef565b6020820152612669604084016121ef565b604082015260608301516060820152612684608084016121ef565b608082015260a083015160a082015260c0830151828111156126a557600080fd5b6126b187828601611ee8565b60c08301525095945050505050565b6020808252602a908201527f496e7075745363616c696e6748656c7065723a2043616e206e6f74207363616c6040820152690652052465120737761760b41b606082015260800190565b6020808252825160e0838301528051610100840181905260009291600582811b860161012090810193928501929087019186805b838110156127d25789870361011f1901855285518051808952908901908989019080861b8a018b01855b828110156127bc57601f198c830301845284516040815181855261278e82860182611b2e565b91505063ffffffff60e01b8f830151168f85015280935050508c850194508c84019350600181019050612768565b509950505095880195509387019360010161273e565b5050505050508185015191506127eb6040850183611569565b604085015191506127ff6060850183611569565b606085015160808501526080850151915061281d60a0850183611569565b60a085015160c085015260c08501519150601f198482030160e0850152611d1b8183611b2e565b805163ffffffff811681146113fd57600080fd5b6000610120828403121561286b57600080fd5b612873611722565b61287c836121ef565b815261288a602084016121ef565b602082015261289b604084016121ef565b60408201526128ac606084016121ef565b60608201526080830151608082015260a083015160a08201526128d160c08401612844565b60c08201526128e260e08401612844565b60e08201526101006128f5818501612844565b908201529392505050565b81516001600160a01b0390811682526020808401519091169082015260408083015161012083019161293490840182611569565b5060608301516129476060840182611569565b506080830151608083015260a083015160a083015260c083015161297360c084018263ffffffff169052565b5060e083015161298b60e084018263ffffffff169052565b506101008381015163ffffffff811684830152611675565b805160ff811681146113fd57600080fd5b600061014082840312156129c757600080fd5b6129cf611745565b6129d8836121ef565b81526129e6602084016121ef565b60208201526129f7604084016121ef565b6040820152612a08606084016129a3565b6060820152612a19608084016129a3565b608082015260a083015160a082015260c083015160c082015260e083015160e0820152610100612a4a8185016121ef565b908201526101206128f58482016115fb565b600061014082019050612a70828451611569565b6020830151612a826020840182611569565b506040830151612a956040840182611569565b506060830151612aaa606084018260ff169052565b506080830151612abf608084018260ff169052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151612af182850182611569565b50506101208381015180151584830152611675565b8051600f81900b81146113fd57600080fd5b60006101208284031215612b2b57600080fd5b612b33611722565b612b3c836121ef565b8152612b4a602084016121ef565b6020820152612b5b604084016121ef565b6040820152612b6c60608401612b06565b6060820152612b7d60808401612b06565b608082015260a083015160a082015260c083015160c0820152612ba260e084016115fb565b60e08201526101006128f58185016115fb565b81516001600160a01b03908116825260208084015190911690820152604080830151610120830191612be990840182611569565b506060830151612bfe6060840182600f0b9052565b506080830151612c136080840182600f0b9052565b5060a083015160a083015260c083015160c083015260e0830151612c3b60e084018215159052565b506101008381015180151584830152611675565b60006101008284031215612c6257600080fd5b612c6a611768565b8251612c75816113da565b81526020830151612c85816113da565b6020820152612c96604084016121ef565b6040820152612ca7606084016121ef565b60608201526080830151608082015260a083015160a0820152612ccc60c084016121ef565b60c0820152612cdd60e084016115fb565b60e08201529392505050565b600060c08284031215612cfb57600080fd5b60405160c081016001600160401b0381118282101715612d1d57612d1d61167d565b6040528251612d2b816113da565b8152602083810151908201526040830151612d45816113da565b60408201526060830151612d58816113da565b60608201526080838101519082015260a0928301519281019290925250919050565b60006101208284031215612d8d57600080fd5b612d95611722565b612d9e836121ef565b8152612dac602084016121ef565b6020820152612dbd604084016121ef565b6040820152612dce606084016121ef565b60608201526080830151608082015260a083015160a0820152612df360c084016121ef565b60c0820152612ba260e084016115fb565b81516001600160a01b03908116825260208084015190911690820152604080830151610120830191612e3890840182611569565b506060830151612e4b6060840182611569565b506080830151608083015260a083015160a083015260c0830151612e7260c0840182611569565b5060e0830151612c3b60e084018215159052565b600060608284031215612e9857600080fd5b604051606081016001600160401b0381118282101715612eba57612eba61167d565b6040528251612ec8816113da565b8152602083810151908201526040830151612ee28161147e565b60408201529392505050565b60006101008284031215612f0157600080fd5b612f09611768565b8251612f14816113da565b81526020830151612f24816113da565b6020820152612f35604084016121ef565b6040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c0820152612cdd60e084016115fb565b600060a08284031215612f8057600080fd5b60405160a081016001600160401b0381118282101715612fa257612fa261167d565b6040528251612fb0816113da565b81526020830151612fc0816113da565b60208201526040830151612fd3816113da565b6040820152606083810151908201526080830151612ff0816113da565b6080820152939250505056fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564a26469706673582212204eff065f6d51033c03b4c0c5e01303bfa9dafdd147cbc6f651114823543daff364736f6c63430008110033",
73
- "deployedBytecode": "0x6080604052600436106100225760003560e01c80632bdb823c1461002e57600080fd5b3661002957005b600080fd5b61004161003c366004611402565b610043565b005b61005c836100576040840160208501611461565b61011b565b61011561006f608083016060840161148c565b6100ba5761008060408301836114a9565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506100dd92505050565b6100dd6100ca60208401846114f6565b6100d760408501856114a9565b866101df565b6001600160a01b038516156100f35760006100f5565b835b6101056040850160208601611461565b6001600160a01b03169190610240565b50505050565b6001600160a01b03821661012d575050565b61013f60026001600160601b03611543565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526001600160601b03929092169184169063dd62ed3e90604401602060405180830381865afa158015610198573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101bc9190611576565b10156101db576101ce82826000610270565b6101db8282600019610270565b5050565b606060018560038111156101f5576101f561158f565b0361020c5761020584848461037f565b9050610238565b60028560038111156102205761022061158f565b0361023057610205848484610553565b6102386115a5565b949350505050565b6060610266848484604051806060016040528060298152602001612ffd6029913961079e565b90505b9392505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b17905291516000928392908716916102cc91906115df565b6000604051808303816000865af19150503d8060008114610309576040519150601f19603f3d011682016040523d82523d6000602084013e61030e565b606091505b50915091508180156103385750805115806103385750808060200190518101906103389190611606565b6103785760405162461bcd60e51b815260206004820152600c60248201526b5361666520417070726f766560a01b60448201526064015b60405180910390fd5b5050505050565b606060006103906004828688611623565b6103999161164d565b9050631de02f1760e01b6001600160e01b03198216016104565760006103c28560048189611623565b8101906103cf9190611a58565b90506103f881606001518260400151866103f38560600151610120015160206108cf565b6108db565b82606001836040018290528290525050818160405160240161041a9190611ca3565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529250610269915050565b63750fcc0560e01b6001600160e01b03198216016104ff576000808080610480886004818c611623565b81019061048d9190611d24565b93509350935093506104a283838960016108db565b604051919450925085906104c0908690869086908690602401611dbe565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529550610269945050505050565b60405162461bcd60e51b8152602060048201526024808201527f496e7075745363616c696e6748656c7065723a20496e76616c69642073656c6560448201526331ba37b960e11b606482015260840161036f565b606060006105646004828688611623565b61056d9161164d565b9050600061057e8560048189611623565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293505050506001600160e01b0319821663086fe1cb60e31b0161065757600080600080848060200190518101906105e79190611e63565b93509350935093506105fa82848a610949565b915087925085848484846040516024016106179493929190611ebb565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152965061026995505050505050565b63ed55c35160e01b6001600160e01b03198316016106c957600080600080848060200190518101906106899190611f2d565b93509350935093506106a48360a0015184608001518a610949565b60a0840152608083018890526040518690610617908690869086908690602401612025565b6308723dad60e01b6001600160e01b0319831601610772576000806000806000858060200190518101906106fd91906120aa565b9450945094509450945061071282848b610949565b9150889250868585858585604051602401610731959493929190612122565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915297506102699650505050505050565b60405163a7dd6a9560e01b8152600160048201526001600160e01b03198316602482015260440161036f565b6060824710156107ff5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161036f565b6001600160a01b0385163b6108565760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161036f565b600080866001600160a01b0316858760405161087291906115df565b60006040518083038185875af1925050503d80600081146108af576040519150601f19603f3d011682016040523d82523d6000602084013e6108b4565b606091505b50915091506108c4828286610960565b979650505050505050565b81811615155b92915050565b6108e3611365565b60e08501516060908481036108fe5786869250925050610940565b83156109245761090f878287610999565b61091a878388610af8565b9250925050610940565b61092f878287610999565b61093a878388610c25565b92509250505b94509492505050565b600082610956838661215c565b6102669190612173565b6060831561096f575081610269565b82511561097f5782518084602001fd5b8160405162461bcd60e51b815260040161036f9190612187565b6109a1611365565b610100840151836109b2848361215c565b6109bc9190612173565b61010086015280158015906109d45750610100850151155b156109e25760016101008601525b60e085018390526040850151516000036109ff5784915050610269565b6000805b866040015151811015610aed576001876040015151610a22919061219a565b8103610a5957610a32828661219a565b87606001518281518110610a4857610a486121ad565b602002602001018181525050610ab0565b858588606001518381518110610a7157610a716121ad565b6020026020010151610a83919061215c565b610a8d9190612173565b87606001518281518110610aa357610aa36121ad565b6020026020010181815250505b86606001518181518110610ac657610ac66121ad565b602002602001015182610ad991906121c3565b915080610ae5816121d6565b915050610a03565b509495945050505050565b6060600084806020019051810190610b1091906122dd565b8051519091506000805b82811015610bf857610b2d60018461219a565b8103610b6457610b3d828761219a565b84602001518281518110610b5357610b536121ad565b602002602001018181525050610bbb565b868685602001518381518110610b7c57610b7c6121ad565b6020026020010151610b8e919061215c565b610b989190612173565b84602001518281518110610bae57610bae6121ad565b6020026020010181815250505b83602001518181518110610bd157610bd16121ad565b602002602001015182610be491906121c3565b915080610bf0816121d6565b915050610b1a565b5082604051602001610c0a91906123b0565b60405160208183030381529060405293505050509392505050565b6060600084806020019051810190610c3d91906125e9565b905083838260600151610c50919061215c565b610c5a9190612173565b606082015260005b815151811015610f2057600082600001518281518110610c8457610c846121ad565b6020026020010151600081518110610c9e57610c9e6121ad565b60209081029190910181015190810151909150630be1a7a360e21b6001600160e01b0319821601610cdd578151610cd6908888610f4b565b8252610f0b565b6301b966ef60e71b6001600160e01b0319821601610d02578151610cd6908888610f96565b633409dd2d60e01b6001600160e01b0319821601610d27578151610cd6908888610fe1565b63b6bb37eb60e01b6001600160e01b0319821601610d4c578151610cd6908888610f4b565b63617556cb60e01b6001600160e01b0319821601610d71578151610cd690888861102c565b6308c49cdf60e11b6001600160e01b0319821601610da15760405162461bcd60e51b815260040161036f906126c0565b635a2f8d7160e01b6001600160e01b0319821601610dc6578151610cd69088886110df565b6375a256f160e01b6001600160e01b0319821601610deb578151610cd6908888611174565b63a7c1a92960e01b6001600160e01b0319821601610e10578151610cd69088886111bf565b6360fabb9d60e01b6001600160e01b0319821601610e35578151610cd690888861122b565b63873c52e160e01b6001600160e01b0319821601610e5a578151610cd69088886112da565b630590bce960e11b6001600160e01b0319821601610e8a5760405162461bcd60e51b815260040161036f906126c0565b6310262a3d60e01b6001600160e01b0319821601610eaf578151610cd6908888610f4b565b60405162461bcd60e51b815260206004820152602b60248201527f4167677265676174696f6e4578656375746f723a204465782074797065206e6f60448201526a1d081cdd5c1c1bdc9d195960aa1b606482015260840161036f565b50508080610f18906121d6565b915050610c62565b5080604051602001610f32919061270a565b6040516020818303038152906040529150509392505050565b6060600084806020019051810190610f639190612858565b905083838260800151610f76919061215c565b610f809190612173565b6080820152604051610f32908290602001612900565b6060600084806020019051810190610fae91906129b4565b905083838260a00151610fc1919061215c565b610fcb9190612173565b60a0820152604051610f32908290602001612a5c565b6060600084806020019051810190610ff99190612b18565b905083838260a0015161100c919061215c565b6110169190612173565b60a0820152604051610f32908290602001612bb5565b60606000848060200190518101906110449190612c4f565b905083838260800151611057919061215c565b6110619190612173565b6080820152604051610f3290829060200160006101008201905060018060a01b038084511683528060208501511660208401528060408501511660408401528060608501511660608401526080840151608084015260a084015160a08401528060c08501511660c08401525060e0830151151560e083015292915050565b60606000848060200190518101906110f79190612ce9565b90508383826080015161110a919061215c565b6111149190612173565b6080820152604051610f3290829060200181516001600160a01b03908116825260208084015190830152604080840151821690830152606080840151909116908201526080808301519082015260a0918201519181019190915260c00190565b606060008480602001905181019061118c9190612d7a565b90508383826080015161119f919061215c565b6111a99190612173565b6080820152604051610f32908290602001612e04565b60606000848060200190518101906111d79190612e86565b9050838382602001516111ea919061215c565b6111f49190612173565b60208281019182526040805184516001600160a01b0316928101929092529151818301529082015115156060820152608001610f32565b60606000848060200190518101906112439190612eee565b905083838260800151611256919061215c565b6112609190612173565b6080820152604051610f3290829060200160006101008201905060018060a01b0380845116835280602085015116602084015280604085015116604084015250606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e0830151151560e083015292915050565b60606000848060200190518101906112f29190612f6e565b905083838260600151611305919061215c565b61130f9190612173565b6060820152604051610f3290829060200181516001600160a01b03908116825260208084015182169083015260408084015182169083015260608084015190830152608092830151169181019190915260a00190565b60405180610160016040528060006001600160a01b0316815260200160006001600160a01b031681526020016060815260200160608152602001606081526020016060815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001606081525090565b6001600160a01b03811681146113ef57600080fd5b50565b80356113fd816113da565b919050565b60008060006060848603121561141757600080fd5b8335611422816113da565b92506020840135915060408401356001600160401b0381111561144457600080fd5b84016080818703121561145657600080fd5b809150509250925092565b60006020828403121561147357600080fd5b8135610269816113da565b80151581146113ef57600080fd5b60006020828403121561149e57600080fd5b81356102698161147e565b6000808335601e198436030181126114c057600080fd5b8301803591506001600160401b038211156114da57600080fd5b6020019150368190038213156114ef57600080fd5b9250929050565b60006020828403121561150857600080fd5b81356004811061026957600080fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001600160601b038381168061155d5761155d611517565b92169190910492915050565b6001600160a01b03169052565b60006020828403121561158857600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60005b838110156115d65781810151838201526020016115be565b50506000910152565b600082516115f18184602087016115bb565b9190910192915050565b80516113fd8161147e565b60006020828403121561161857600080fd5b81516102698161147e565b6000808585111561163357600080fd5b8386111561164057600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156116755780818660040360031b1b83161692505b505092915050565b634e487b7160e01b600052604160045260246000fd5b60405161016081016001600160401b03811182821017156116b6576116b661167d565b60405290565b60405160a081016001600160401b03811182821017156116b6576116b661167d565b60405160e081016001600160401b03811182821017156116b6576116b661167d565b604080519081016001600160401b03811182821017156116b6576116b661167d565b60405161012081016001600160401b03811182821017156116b6576116b661167d565b60405161014081016001600160401b03811182821017156116b6576116b661167d565b60405161010081016001600160401b03811182821017156116b6576116b661167d565b604051601f8201601f191681016001600160401b03811182821017156117b3576117b361167d565b604052919050565b60006001600160401b038211156117d4576117d461167d565b50601f01601f191660200190565b600082601f8301126117f357600080fd5b8135611806611801826117bb565b61178b565b81815284602083860101111561181b57600080fd5b816020850160208301376000918101602001919091529392505050565b60006001600160401b038211156118515761185161167d565b5060051b60200190565b600082601f83011261186c57600080fd5b8135602061187c61180183611838565b82815260059290921b8401810191818101908684111561189b57600080fd5b8286015b848110156118bf5780356118b2816113da565b835291830191830161189f565b509695505050505050565b600082601f8301126118db57600080fd5b813560206118eb61180183611838565b82815260059290921b8401810191818101908684111561190a57600080fd5b8286015b848110156118bf578035835291830191830161190e565b6000610160828403121561193857600080fd5b611940611693565b905061194b826113f2565b8152611959602083016113f2565b602082015260408201356001600160401b038082111561197857600080fd5b6119848583860161185b565b6040840152606084013591508082111561199d57600080fd5b6119a9858386016118ca565b606084015260808401359150808211156119c257600080fd5b6119ce8583860161185b565b608084015260a08401359150808211156119e757600080fd5b6119f3858386016118ca565b60a0840152611a0460c085016113f2565b60c084015260e084810135908401526101008085013590840152610120808501359084015261014091508184013581811115611a3f57600080fd5b611a4b868287016117e2565b8385015250505092915050565b600060208284031215611a6a57600080fd5b81356001600160401b0380821115611a8157600080fd5b9083019060a08286031215611a9557600080fd5b611a9d6116bc565b611aa6836113f2565b8152611ab4602084016113f2565b6020820152604083013582811115611acb57600080fd5b611ad7878286016117e2565b604083015250606083013582811115611aef57600080fd5b611afb87828601611925565b606083015250608083013582811115611b1357600080fd5b611b1f878286016117e2565b60808301525095945050505050565b60008151808452611b468160208601602086016115bb565b601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b83811015610aed5781516001600160a01b031687529582019590820190600101611b6e565b600081518084526020808501945080840160005b83811015610aed57815187529582019590820190600101611ba7565b6000610160611bd3848451611569565b6020830151611be56020860182611569565b506040830151816040860152611bfd82860182611b5a565b91505060608301518482036060860152611c178282611b93565b91505060808301518482036080860152611c318282611b5a565b91505060a083015184820360a0860152611c4b8282611b93565b91505060c0830151611c6060c0860182611569565b5060e08381015190850152610100808401519085015261012080840151908501526101408084015185830382870152611c998382611b2e565b9695505050505050565b60208152600060018060a01b0380845116602084015280602085015116604084015250604083015160a06060840152611cdf60c0840182611b2e565b90506060840151601f1980858403016080860152611cfd8383611bc3565b925060808601519150808584030160a086015250611d1b8282611b2e565b95945050505050565b60008060008060808587031215611d3a57600080fd5b8435611d45816113da565b935060208501356001600160401b0380821115611d6157600080fd5b611d6d88838901611925565b94506040870135915080821115611d8357600080fd5b611d8f888389016117e2565b93506060870135915080821115611da557600080fd5b50611db2878288016117e2565b91505092959194509250565b6001600160a01b0385168152608060208201819052600090611de290830186611bc3565b8281036040840152611df48186611b2e565b905082810360608401526108c48185611b2e565b600082601f830112611e1957600080fd5b81516020611e2961180183611838565b82815260059290921b84018101918181019086841115611e4857600080fd5b8286015b848110156118bf5780518352918301918301611e4c565b60008060008060808587031215611e7957600080fd5b8451611e84816113da565b60208601516040870151606088015192965090945092506001600160401b03811115611eaf57600080fd5b611db287828801611e08565b60018060a01b0385168152836020820152826040820152608060608201526000611c996080830184611b93565b600082601f830112611ef957600080fd5b8151611f07611801826117bb565b818152846020838601011115611f1c57600080fd5b6102388260208301602087016115bb565b600080600080848603610140811215611f4557600080fd5b8551611f50816113da565b945060e0601f1982011215611f6457600080fd5b50611f6d6116de565b6020860151611f7b816113da565b81526040860151611f8b816113da565b60208201526060860151611f9e816113da565b60408201526080860151611fb1816113da565b606082015260a086810151608083015260c0808801519183019190915260e0870151908201526101008601519093506001600160401b0380821115611ff557600080fd5b61200188838901611ee8565b935061012087015191508082111561201857600080fd5b50611db287828801611ee8565b600061014060018060a01b03808816845280875116602085015280602088015116604085015280604088015116606085015280606088015116608085015250608086015160a084015260a086015160c084015260c086015160e08401528061010084015261209581840186611b2e565b90508281036101208401526108c48185611b2e565b600080600080600060a086880312156120c257600080fd5b85516120cd816113da565b60208701519095506120de816113da565b60408701516060880151608089015192965090945092506001600160401b0381111561210957600080fd5b61211588828901611e08565b9150509295509295909350565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906108c490830184611b93565b80820281158282048414176108d5576108d561152d565b60008261218257612182611517565b500490565b6020815260006102696020830184611b2e565b818103818111156108d5576108d561152d565b634e487b7160e01b600052603260045260246000fd5b808201808211156108d5576108d561152d565b6000600182016121e8576121e861152d565b5060010190565b80516113fd816113da565b600082601f83011261220b57600080fd5b8151602061221b61180183611838565b82815260059290921b8401810191818101908684111561223a57600080fd5b8286015b848110156118bf578051612251816113da565b835291830191830161223e565b600082601f83011261226f57600080fd5b8151602061227f61180183611838565b82815260059290921b8401810191818101908684111561229e57600080fd5b8286015b848110156118bf5780516001600160401b038111156122c15760008081fd5b6122cf8986838b0101611ee8565b8452509183019183016122a2565b6000602082840312156122ef57600080fd5b81516001600160401b038082111561230657600080fd5b9083019060a0828603121561231a57600080fd5b6123226116bc565b82518281111561233157600080fd5b61233d878286016121fa565b82525060208301518281111561235257600080fd5b61235e87828601611e08565b60208301525060408301518281111561237657600080fd5b6123828782860161225e565b604083015250606083015160608201526080830151828111156123a457600080fd5b611b1f87828601611ee8565b60006020808352835160a0828501526123cc60c0850182611b5a565b905081850151601f19808684030160408701526123e98383611b93565b60408801518782038301606089015280518083529194508501925084840190600581901b8501860160005b82811015612440578487830301845261242e828751611b2e565b95880195938801939150600101612414565b5060608a015160808a015260808a01519650838982030160a08a01526124668188611b2e565b9a9950505050505050505050565b600082601f83011261248557600080fd5b815161249361180182611838565b808282526020820191508560208460051b87010111156124b257600080fd5b602085015b60208460051b8701018110156125df5780516001600160401b038111156124dd57600080fd5b8601603f810188136124ee57600080fd5b60208101516124ff61180182611838565b808282526020820191508a60408460051b860101111561251e57600080fd5b604084015b60408460051b8601018110156125c95780516001600160401b0381111561254957600080fd5b60408682018e03603f1901121561255f57600080fd5b612567611700565b868201604001516001600160401b0381111561258257600080fd5b6125938f604083868c010101611ee8565b82525090860160600151906001600160e01b0319821682146125b457600080fd5b60208181019290925284529283019201612523565b50865250506020938401939190910190506124b7565b5095945050505050565b6000602082840312156125fb57600080fd5b81516001600160401b038082111561261257600080fd5b9083019060e0828603121561262657600080fd5b61262e6116de565b82518281111561263d57600080fd5b61264987828601612474565b825250612658602084016121ef565b6020820152612669604084016121ef565b604082015260608301516060820152612684608084016121ef565b608082015260a083015160a082015260c0830151828111156126a557600080fd5b6126b187828601611ee8565b60c08301525095945050505050565b6020808252602a908201527f496e7075745363616c696e6748656c7065723a2043616e206e6f74207363616c6040820152690652052465120737761760b41b606082015260800190565b6020808252825160e0838301528051610100840181905260009291600582811b860161012090810193928501929087019186805b838110156127d25789870361011f1901855285518051808952908901908989019080861b8a018b01855b828110156127bc57601f198c830301845284516040815181855261278e82860182611b2e565b91505063ffffffff60e01b8f830151168f85015280935050508c850194508c84019350600181019050612768565b509950505095880195509387019360010161273e565b5050505050508185015191506127eb6040850183611569565b604085015191506127ff6060850183611569565b606085015160808501526080850151915061281d60a0850183611569565b60a085015160c085015260c08501519150601f198482030160e0850152611d1b8183611b2e565b805163ffffffff811681146113fd57600080fd5b6000610120828403121561286b57600080fd5b612873611722565b61287c836121ef565b815261288a602084016121ef565b602082015261289b604084016121ef565b60408201526128ac606084016121ef565b60608201526080830151608082015260a083015160a08201526128d160c08401612844565b60c08201526128e260e08401612844565b60e08201526101006128f5818501612844565b908201529392505050565b81516001600160a01b0390811682526020808401519091169082015260408083015161012083019161293490840182611569565b5060608301516129476060840182611569565b506080830151608083015260a083015160a083015260c083015161297360c084018263ffffffff169052565b5060e083015161298b60e084018263ffffffff169052565b506101008381015163ffffffff811684830152611675565b805160ff811681146113fd57600080fd5b600061014082840312156129c757600080fd5b6129cf611745565b6129d8836121ef565b81526129e6602084016121ef565b60208201526129f7604084016121ef565b6040820152612a08606084016129a3565b6060820152612a19608084016129a3565b608082015260a083015160a082015260c083015160c082015260e083015160e0820152610100612a4a8185016121ef565b908201526101206128f58482016115fb565b600061014082019050612a70828451611569565b6020830151612a826020840182611569565b506040830151612a956040840182611569565b506060830151612aaa606084018260ff169052565b506080830151612abf608084018260ff169052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151612af182850182611569565b50506101208381015180151584830152611675565b8051600f81900b81146113fd57600080fd5b60006101208284031215612b2b57600080fd5b612b33611722565b612b3c836121ef565b8152612b4a602084016121ef565b6020820152612b5b604084016121ef565b6040820152612b6c60608401612b06565b6060820152612b7d60808401612b06565b608082015260a083015160a082015260c083015160c0820152612ba260e084016115fb565b60e08201526101006128f58185016115fb565b81516001600160a01b03908116825260208084015190911690820152604080830151610120830191612be990840182611569565b506060830151612bfe6060840182600f0b9052565b506080830151612c136080840182600f0b9052565b5060a083015160a083015260c083015160c083015260e0830151612c3b60e084018215159052565b506101008381015180151584830152611675565b60006101008284031215612c6257600080fd5b612c6a611768565b8251612c75816113da565b81526020830151612c85816113da565b6020820152612c96604084016121ef565b6040820152612ca7606084016121ef565b60608201526080830151608082015260a083015160a0820152612ccc60c084016121ef565b60c0820152612cdd60e084016115fb565b60e08201529392505050565b600060c08284031215612cfb57600080fd5b60405160c081016001600160401b0381118282101715612d1d57612d1d61167d565b6040528251612d2b816113da565b8152602083810151908201526040830151612d45816113da565b60408201526060830151612d58816113da565b60608201526080838101519082015260a0928301519281019290925250919050565b60006101208284031215612d8d57600080fd5b612d95611722565b612d9e836121ef565b8152612dac602084016121ef565b6020820152612dbd604084016121ef565b6040820152612dce606084016121ef565b60608201526080830151608082015260a083015160a0820152612df360c084016121ef565b60c0820152612ba260e084016115fb565b81516001600160a01b03908116825260208084015190911690820152604080830151610120830191612e3890840182611569565b506060830151612e4b6060840182611569565b506080830151608083015260a083015160a083015260c0830151612e7260c0840182611569565b5060e0830151612c3b60e084018215159052565b600060608284031215612e9857600080fd5b604051606081016001600160401b0381118282101715612eba57612eba61167d565b6040528251612ec8816113da565b8152602083810151908201526040830151612ee28161147e565b60408201529392505050565b60006101008284031215612f0157600080fd5b612f09611768565b8251612f14816113da565b81526020830151612f24816113da565b6020820152612f35604084016121ef565b6040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c0820152612cdd60e084016115fb565b600060a08284031215612f8057600080fd5b60405160a081016001600160401b0381118282101715612fa257612fa261167d565b6040528251612fb0816113da565b81526020830151612fc0816113da565b60208201526040830151612fd3816113da565b6040820152606083810151908201526080830151612ff0816113da565b6080820152939250505056fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564a26469706673582212204eff065f6d51033c03b4c0c5e01303bfa9dafdd147cbc6f651114823543daff364736f6c63430008110033",
72
+ "bytecode": "0x608060405234801561001057600080fd5b5061305b806100206000396000f3fe6080604052600436106100225760003560e01c80632bdb823c1461002e57600080fd5b3661002957005b600080fd5b61004161003c366004611402565b610043565b005b61005c836100576040840160208501611461565b61011b565b61011561006f608083016060840161148c565b6100ba5761008060408301836114a9565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506100dd92505050565b6100dd6100ca60208401846114f6565b6100d760408501856114a9565b866101df565b6001600160a01b038516156100f35760006100f5565b835b6101056040850160208601611461565b6001600160a01b03169190610240565b50505050565b6001600160a01b03821661012d575050565b61013f60026001600160601b03611543565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526001600160601b03929092169184169063dd62ed3e90604401602060405180830381865afa158015610198573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101bc9190611576565b10156101db576101ce82826000610270565b6101db8282600019610270565b5050565b606060018560038111156101f5576101f561158f565b0361020c5761020584848461037f565b9050610238565b60028560038111156102205761022061158f565b0361023057610205848484610553565b6102386115a5565b949350505050565b6060610266848484604051806060016040528060298152602001612ffd6029913961079e565b90505b9392505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b17905291516000928392908716916102cc91906115df565b6000604051808303816000865af19150503d8060008114610309576040519150601f19603f3d011682016040523d82523d6000602084013e61030e565b606091505b50915091508180156103385750805115806103385750808060200190518101906103389190611606565b6103785760405162461bcd60e51b815260206004820152600c60248201526b5361666520417070726f766560a01b60448201526064015b60405180910390fd5b5050505050565b606060006103906004828688611623565b6103999161164d565b9050631de02f1760e01b6001600160e01b03198216016104565760006103c28560048189611623565b8101906103cf9190611a58565b90506103f881606001518260400151866103f38560600151610120015160206108cf565b6108db565b82606001836040018290528290525050818160405160240161041a9190611ca3565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529250610269915050565b63750fcc0560e01b6001600160e01b03198216016104ff576000808080610480886004818c611623565b81019061048d9190611d24565b93509350935093506104a283838960016108db565b604051919450925085906104c0908690869086908690602401611dbe565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529550610269945050505050565b60405162461bcd60e51b8152602060048201526024808201527f496e7075745363616c696e6748656c7065723a20496e76616c69642073656c6560448201526331ba37b960e11b606482015260840161036f565b606060006105646004828688611623565b61056d9161164d565b9050600061057e8560048189611623565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293505050506001600160e01b0319821663086fe1cb60e31b0161065757600080600080848060200190518101906105e79190611e63565b93509350935093506105fa82848a610949565b915087925085848484846040516024016106179493929190611ebb565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152965061026995505050505050565b63ed55c35160e01b6001600160e01b03198316016106c957600080600080848060200190518101906106899190611f2d565b93509350935093506106a48360a0015184608001518a610949565b60a0840152608083018890526040518690610617908690869086908690602401612025565b6308723dad60e01b6001600160e01b0319831601610772576000806000806000858060200190518101906106fd91906120aa565b9450945094509450945061071282848b610949565b9150889250868585858585604051602401610731959493929190612122565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915297506102699650505050505050565b60405163a7dd6a9560e01b8152600160048201526001600160e01b03198316602482015260440161036f565b6060824710156107ff5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161036f565b6001600160a01b0385163b6108565760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161036f565b600080866001600160a01b0316858760405161087291906115df565b60006040518083038185875af1925050503d80600081146108af576040519150601f19603f3d011682016040523d82523d6000602084013e6108b4565b606091505b50915091506108c4828286610960565b979650505050505050565b81811615155b92915050565b6108e3611365565b60e08501516060908481036108fe5786869250925050610940565b83156109245761090f878287610999565b61091a878388610af8565b9250925050610940565b61092f878287610999565b61093a878388610c25565b92509250505b94509492505050565b600082610956838661215c565b6102669190612173565b6060831561096f575081610269565b82511561097f5782518084602001fd5b8160405162461bcd60e51b815260040161036f9190612187565b6109a1611365565b610100840151836109b2848361215c565b6109bc9190612173565b61010086015280158015906109d45750610100850151155b156109e25760016101008601525b60e085018390526040850151516000036109ff5784915050610269565b6000805b866040015151811015610aed576001876040015151610a22919061219a565b8103610a5957610a32828661219a565b87606001518281518110610a4857610a486121ad565b602002602001018181525050610ab0565b858588606001518381518110610a7157610a716121ad565b6020026020010151610a83919061215c565b610a8d9190612173565b87606001518281518110610aa357610aa36121ad565b6020026020010181815250505b86606001518181518110610ac657610ac66121ad565b602002602001015182610ad991906121c3565b915080610ae5816121d6565b915050610a03565b509495945050505050565b6060600084806020019051810190610b1091906122dd565b8051519091506000805b82811015610bf857610b2d60018461219a565b8103610b6457610b3d828761219a565b84602001518281518110610b5357610b536121ad565b602002602001018181525050610bbb565b868685602001518381518110610b7c57610b7c6121ad565b6020026020010151610b8e919061215c565b610b989190612173565b84602001518281518110610bae57610bae6121ad565b6020026020010181815250505b83602001518181518110610bd157610bd16121ad565b602002602001015182610be491906121c3565b915080610bf0816121d6565b915050610b1a565b5082604051602001610c0a91906123b0565b60405160208183030381529060405293505050509392505050565b6060600084806020019051810190610c3d91906125e9565b905083838260600151610c50919061215c565b610c5a9190612173565b606082015260005b815151811015610f2057600082600001518281518110610c8457610c846121ad565b6020026020010151600081518110610c9e57610c9e6121ad565b60209081029190910181015190810151909150630be1a7a360e21b6001600160e01b0319821601610cdd578151610cd6908888610f4b565b8252610f0b565b6301b966ef60e71b6001600160e01b0319821601610d02578151610cd6908888610f96565b633409dd2d60e01b6001600160e01b0319821601610d27578151610cd6908888610fe1565b63b6bb37eb60e01b6001600160e01b0319821601610d4c578151610cd6908888610f4b565b63617556cb60e01b6001600160e01b0319821601610d71578151610cd690888861102c565b6308c49cdf60e11b6001600160e01b0319821601610da15760405162461bcd60e51b815260040161036f906126c0565b635a2f8d7160e01b6001600160e01b0319821601610dc6578151610cd69088886110df565b6375a256f160e01b6001600160e01b0319821601610deb578151610cd6908888611174565b63a7c1a92960e01b6001600160e01b0319821601610e10578151610cd69088886111bf565b6360fabb9d60e01b6001600160e01b0319821601610e35578151610cd690888861122b565b63873c52e160e01b6001600160e01b0319821601610e5a578151610cd69088886112da565b630590bce960e11b6001600160e01b0319821601610e8a5760405162461bcd60e51b815260040161036f906126c0565b6310262a3d60e01b6001600160e01b0319821601610eaf578151610cd6908888610f4b565b60405162461bcd60e51b815260206004820152602b60248201527f4167677265676174696f6e4578656375746f723a204465782074797065206e6f60448201526a1d081cdd5c1c1bdc9d195960aa1b606482015260840161036f565b50508080610f18906121d6565b915050610c62565b5080604051602001610f32919061270a565b6040516020818303038152906040529150509392505050565b6060600084806020019051810190610f639190612858565b905083838260800151610f76919061215c565b610f809190612173565b6080820152604051610f32908290602001612900565b6060600084806020019051810190610fae91906129b4565b905083838260a00151610fc1919061215c565b610fcb9190612173565b60a0820152604051610f32908290602001612a5c565b6060600084806020019051810190610ff99190612b18565b905083838260a0015161100c919061215c565b6110169190612173565b60a0820152604051610f32908290602001612bb5565b60606000848060200190518101906110449190612c4f565b905083838260800151611057919061215c565b6110619190612173565b6080820152604051610f3290829060200160006101008201905060018060a01b038084511683528060208501511660208401528060408501511660408401528060608501511660608401526080840151608084015260a084015160a08401528060c08501511660c08401525060e0830151151560e083015292915050565b60606000848060200190518101906110f79190612ce9565b90508383826080015161110a919061215c565b6111149190612173565b6080820152604051610f3290829060200181516001600160a01b03908116825260208084015190830152604080840151821690830152606080840151909116908201526080808301519082015260a0918201519181019190915260c00190565b606060008480602001905181019061118c9190612d7a565b90508383826080015161119f919061215c565b6111a99190612173565b6080820152604051610f32908290602001612e04565b60606000848060200190518101906111d79190612e86565b9050838382602001516111ea919061215c565b6111f49190612173565b60208281019182526040805184516001600160a01b0316928101929092529151818301529082015115156060820152608001610f32565b60606000848060200190518101906112439190612eee565b905083838260800151611256919061215c565b6112609190612173565b6080820152604051610f3290829060200160006101008201905060018060a01b0380845116835280602085015116602084015280604085015116604084015250606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e0830151151560e083015292915050565b60606000848060200190518101906112f29190612f6e565b905083838260600151611305919061215c565b61130f9190612173565b6060820152604051610f3290829060200181516001600160a01b03908116825260208084015182169083015260408084015182169083015260608084015190830152608092830151169181019190915260a00190565b60405180610160016040528060006001600160a01b0316815260200160006001600160a01b031681526020016060815260200160608152602001606081526020016060815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001606081525090565b6001600160a01b03811681146113ef57600080fd5b50565b80356113fd816113da565b919050565b60008060006060848603121561141757600080fd5b8335611422816113da565b92506020840135915060408401356001600160401b0381111561144457600080fd5b84016080818703121561145657600080fd5b809150509250925092565b60006020828403121561147357600080fd5b8135610269816113da565b80151581146113ef57600080fd5b60006020828403121561149e57600080fd5b81356102698161147e565b6000808335601e198436030181126114c057600080fd5b8301803591506001600160401b038211156114da57600080fd5b6020019150368190038213156114ef57600080fd5b9250929050565b60006020828403121561150857600080fd5b81356004811061026957600080fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001600160601b038381168061155d5761155d611517565b92169190910492915050565b6001600160a01b03169052565b60006020828403121561158857600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60005b838110156115d65781810151838201526020016115be565b50506000910152565b600082516115f18184602087016115bb565b9190910192915050565b80516113fd8161147e565b60006020828403121561161857600080fd5b81516102698161147e565b6000808585111561163357600080fd5b8386111561164057600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156116755780818660040360031b1b83161692505b505092915050565b634e487b7160e01b600052604160045260246000fd5b60405161016081016001600160401b03811182821017156116b6576116b661167d565b60405290565b60405160a081016001600160401b03811182821017156116b6576116b661167d565b60405160e081016001600160401b03811182821017156116b6576116b661167d565b604080519081016001600160401b03811182821017156116b6576116b661167d565b60405161012081016001600160401b03811182821017156116b6576116b661167d565b60405161014081016001600160401b03811182821017156116b6576116b661167d565b60405161010081016001600160401b03811182821017156116b6576116b661167d565b604051601f8201601f191681016001600160401b03811182821017156117b3576117b361167d565b604052919050565b60006001600160401b038211156117d4576117d461167d565b50601f01601f191660200190565b600082601f8301126117f357600080fd5b8135611806611801826117bb565b61178b565b81815284602083860101111561181b57600080fd5b816020850160208301376000918101602001919091529392505050565b60006001600160401b038211156118515761185161167d565b5060051b60200190565b600082601f83011261186c57600080fd5b8135602061187c61180183611838565b82815260059290921b8401810191818101908684111561189b57600080fd5b8286015b848110156118bf5780356118b2816113da565b835291830191830161189f565b509695505050505050565b600082601f8301126118db57600080fd5b813560206118eb61180183611838565b82815260059290921b8401810191818101908684111561190a57600080fd5b8286015b848110156118bf578035835291830191830161190e565b6000610160828403121561193857600080fd5b611940611693565b905061194b826113f2565b8152611959602083016113f2565b602082015260408201356001600160401b038082111561197857600080fd5b6119848583860161185b565b6040840152606084013591508082111561199d57600080fd5b6119a9858386016118ca565b606084015260808401359150808211156119c257600080fd5b6119ce8583860161185b565b608084015260a08401359150808211156119e757600080fd5b6119f3858386016118ca565b60a0840152611a0460c085016113f2565b60c084015260e084810135908401526101008085013590840152610120808501359084015261014091508184013581811115611a3f57600080fd5b611a4b868287016117e2565b8385015250505092915050565b600060208284031215611a6a57600080fd5b81356001600160401b0380821115611a8157600080fd5b9083019060a08286031215611a9557600080fd5b611a9d6116bc565b611aa6836113f2565b8152611ab4602084016113f2565b6020820152604083013582811115611acb57600080fd5b611ad7878286016117e2565b604083015250606083013582811115611aef57600080fd5b611afb87828601611925565b606083015250608083013582811115611b1357600080fd5b611b1f878286016117e2565b60808301525095945050505050565b60008151808452611b468160208601602086016115bb565b601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b83811015610aed5781516001600160a01b031687529582019590820190600101611b6e565b600081518084526020808501945080840160005b83811015610aed57815187529582019590820190600101611ba7565b6000610160611bd3848451611569565b6020830151611be56020860182611569565b506040830151816040860152611bfd82860182611b5a565b91505060608301518482036060860152611c178282611b93565b91505060808301518482036080860152611c318282611b5a565b91505060a083015184820360a0860152611c4b8282611b93565b91505060c0830151611c6060c0860182611569565b5060e08381015190850152610100808401519085015261012080840151908501526101408084015185830382870152611c998382611b2e565b9695505050505050565b60208152600060018060a01b0380845116602084015280602085015116604084015250604083015160a06060840152611cdf60c0840182611b2e565b90506060840151601f1980858403016080860152611cfd8383611bc3565b925060808601519150808584030160a086015250611d1b8282611b2e565b95945050505050565b60008060008060808587031215611d3a57600080fd5b8435611d45816113da565b935060208501356001600160401b0380821115611d6157600080fd5b611d6d88838901611925565b94506040870135915080821115611d8357600080fd5b611d8f888389016117e2565b93506060870135915080821115611da557600080fd5b50611db2878288016117e2565b91505092959194509250565b6001600160a01b0385168152608060208201819052600090611de290830186611bc3565b8281036040840152611df48186611b2e565b905082810360608401526108c48185611b2e565b600082601f830112611e1957600080fd5b81516020611e2961180183611838565b82815260059290921b84018101918181019086841115611e4857600080fd5b8286015b848110156118bf5780518352918301918301611e4c565b60008060008060808587031215611e7957600080fd5b8451611e84816113da565b60208601516040870151606088015192965090945092506001600160401b03811115611eaf57600080fd5b611db287828801611e08565b60018060a01b0385168152836020820152826040820152608060608201526000611c996080830184611b93565b600082601f830112611ef957600080fd5b8151611f07611801826117bb565b818152846020838601011115611f1c57600080fd5b6102388260208301602087016115bb565b600080600080848603610140811215611f4557600080fd5b8551611f50816113da565b945060e0601f1982011215611f6457600080fd5b50611f6d6116de565b6020860151611f7b816113da565b81526040860151611f8b816113da565b60208201526060860151611f9e816113da565b60408201526080860151611fb1816113da565b606082015260a086810151608083015260c0808801519183019190915260e0870151908201526101008601519093506001600160401b0380821115611ff557600080fd5b61200188838901611ee8565b935061012087015191508082111561201857600080fd5b50611db287828801611ee8565b600061014060018060a01b03808816845280875116602085015280602088015116604085015280604088015116606085015280606088015116608085015250608086015160a084015260a086015160c084015260c086015160e08401528061010084015261209581840186611b2e565b90508281036101208401526108c48185611b2e565b600080600080600060a086880312156120c257600080fd5b85516120cd816113da565b60208701519095506120de816113da565b60408701516060880151608089015192965090945092506001600160401b0381111561210957600080fd5b61211588828901611e08565b9150509295509295909350565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906108c490830184611b93565b80820281158282048414176108d5576108d561152d565b60008261218257612182611517565b500490565b6020815260006102696020830184611b2e565b818103818111156108d5576108d561152d565b634e487b7160e01b600052603260045260246000fd5b808201808211156108d5576108d561152d565b6000600182016121e8576121e861152d565b5060010190565b80516113fd816113da565b600082601f83011261220b57600080fd5b8151602061221b61180183611838565b82815260059290921b8401810191818101908684111561223a57600080fd5b8286015b848110156118bf578051612251816113da565b835291830191830161223e565b600082601f83011261226f57600080fd5b8151602061227f61180183611838565b82815260059290921b8401810191818101908684111561229e57600080fd5b8286015b848110156118bf5780516001600160401b038111156122c15760008081fd5b6122cf8986838b0101611ee8565b8452509183019183016122a2565b6000602082840312156122ef57600080fd5b81516001600160401b038082111561230657600080fd5b9083019060a0828603121561231a57600080fd5b6123226116bc565b82518281111561233157600080fd5b61233d878286016121fa565b82525060208301518281111561235257600080fd5b61235e87828601611e08565b60208301525060408301518281111561237657600080fd5b6123828782860161225e565b604083015250606083015160608201526080830151828111156123a457600080fd5b611b1f87828601611ee8565b60006020808352835160a0828501526123cc60c0850182611b5a565b905081850151601f19808684030160408701526123e98383611b93565b60408801518782038301606089015280518083529194508501925084840190600581901b8501860160005b82811015612440578487830301845261242e828751611b2e565b95880195938801939150600101612414565b5060608a015160808a015260808a01519650838982030160a08a01526124668188611b2e565b9a9950505050505050505050565b600082601f83011261248557600080fd5b815161249361180182611838565b808282526020820191508560208460051b87010111156124b257600080fd5b602085015b60208460051b8701018110156125df5780516001600160401b038111156124dd57600080fd5b8601603f810188136124ee57600080fd5b60208101516124ff61180182611838565b808282526020820191508a60408460051b860101111561251e57600080fd5b604084015b60408460051b8601018110156125c95780516001600160401b0381111561254957600080fd5b60408682018e03603f1901121561255f57600080fd5b612567611700565b868201604001516001600160401b0381111561258257600080fd5b6125938f604083868c010101611ee8565b82525090860160600151906001600160e01b0319821682146125b457600080fd5b60208181019290925284529283019201612523565b50865250506020938401939190910190506124b7565b5095945050505050565b6000602082840312156125fb57600080fd5b81516001600160401b038082111561261257600080fd5b9083019060e0828603121561262657600080fd5b61262e6116de565b82518281111561263d57600080fd5b61264987828601612474565b825250612658602084016121ef565b6020820152612669604084016121ef565b604082015260608301516060820152612684608084016121ef565b608082015260a083015160a082015260c0830151828111156126a557600080fd5b6126b187828601611ee8565b60c08301525095945050505050565b6020808252602a908201527f496e7075745363616c696e6748656c7065723a2043616e206e6f74207363616c6040820152690652052465120737761760b41b606082015260800190565b6020808252825160e0838301528051610100840181905260009291600582811b860161012090810193928501929087019186805b838110156127d25789870361011f1901855285518051808952908901908989019080861b8a018b01855b828110156127bc57601f198c830301845284516040815181855261278e82860182611b2e565b91505063ffffffff60e01b8f830151168f85015280935050508c850194508c84019350600181019050612768565b509950505095880195509387019360010161273e565b5050505050508185015191506127eb6040850183611569565b604085015191506127ff6060850183611569565b606085015160808501526080850151915061281d60a0850183611569565b60a085015160c085015260c08501519150601f198482030160e0850152611d1b8183611b2e565b805163ffffffff811681146113fd57600080fd5b6000610120828403121561286b57600080fd5b612873611722565b61287c836121ef565b815261288a602084016121ef565b602082015261289b604084016121ef565b60408201526128ac606084016121ef565b60608201526080830151608082015260a083015160a08201526128d160c08401612844565b60c08201526128e260e08401612844565b60e08201526101006128f5818501612844565b908201529392505050565b81516001600160a01b0390811682526020808401519091169082015260408083015161012083019161293490840182611569565b5060608301516129476060840182611569565b506080830151608083015260a083015160a083015260c083015161297360c084018263ffffffff169052565b5060e083015161298b60e084018263ffffffff169052565b506101008381015163ffffffff811684830152611675565b805160ff811681146113fd57600080fd5b600061014082840312156129c757600080fd5b6129cf611745565b6129d8836121ef565b81526129e6602084016121ef565b60208201526129f7604084016121ef565b6040820152612a08606084016129a3565b6060820152612a19608084016129a3565b608082015260a083015160a082015260c083015160c082015260e083015160e0820152610100612a4a8185016121ef565b908201526101206128f58482016115fb565b600061014082019050612a70828451611569565b6020830151612a826020840182611569565b506040830151612a956040840182611569565b506060830151612aaa606084018260ff169052565b506080830151612abf608084018260ff169052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151612af182850182611569565b50506101208381015180151584830152611675565b8051600f81900b81146113fd57600080fd5b60006101208284031215612b2b57600080fd5b612b33611722565b612b3c836121ef565b8152612b4a602084016121ef565b6020820152612b5b604084016121ef565b6040820152612b6c60608401612b06565b6060820152612b7d60808401612b06565b608082015260a083015160a082015260c083015160c0820152612ba260e084016115fb565b60e08201526101006128f58185016115fb565b81516001600160a01b03908116825260208084015190911690820152604080830151610120830191612be990840182611569565b506060830151612bfe6060840182600f0b9052565b506080830151612c136080840182600f0b9052565b5060a083015160a083015260c083015160c083015260e0830151612c3b60e084018215159052565b506101008381015180151584830152611675565b60006101008284031215612c6257600080fd5b612c6a611768565b8251612c75816113da565b81526020830151612c85816113da565b6020820152612c96604084016121ef565b6040820152612ca7606084016121ef565b60608201526080830151608082015260a083015160a0820152612ccc60c084016121ef565b60c0820152612cdd60e084016115fb565b60e08201529392505050565b600060c08284031215612cfb57600080fd5b60405160c081016001600160401b0381118282101715612d1d57612d1d61167d565b6040528251612d2b816113da565b8152602083810151908201526040830151612d45816113da565b60408201526060830151612d58816113da565b60608201526080838101519082015260a0928301519281019290925250919050565b60006101208284031215612d8d57600080fd5b612d95611722565b612d9e836121ef565b8152612dac602084016121ef565b6020820152612dbd604084016121ef565b6040820152612dce606084016121ef565b60608201526080830151608082015260a083015160a0820152612df360c084016121ef565b60c0820152612ba260e084016115fb565b81516001600160a01b03908116825260208084015190911690820152604080830151610120830191612e3890840182611569565b506060830151612e4b6060840182611569565b506080830151608083015260a083015160a083015260c0830151612e7260c0840182611569565b5060e0830151612c3b60e084018215159052565b600060608284031215612e9857600080fd5b604051606081016001600160401b0381118282101715612eba57612eba61167d565b6040528251612ec8816113da565b8152602083810151908201526040830151612ee28161147e565b60408201529392505050565b60006101008284031215612f0157600080fd5b612f09611768565b8251612f14816113da565b81526020830151612f24816113da565b6020820152612f35604084016121ef565b6040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c0820152612cdd60e084016115fb565b600060a08284031215612f8057600080fd5b60405160a081016001600160401b0381118282101715612fa257612fa261167d565b6040528251612fb0816113da565b81526020830151612fc0816113da565b60208201526040830151612fd3816113da565b6040820152606083810151908201526080830151612ff0816113da565b6080820152939250505056fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564a264697066735822122043315a7481b2293598092d73704bb17a4b6bb6f08ad761b390aab3daeda7469a64736f6c63430008110033",
73
+ "deployedBytecode": "0x6080604052600436106100225760003560e01c80632bdb823c1461002e57600080fd5b3661002957005b600080fd5b61004161003c366004611402565b610043565b005b61005c836100576040840160208501611461565b61011b565b61011561006f608083016060840161148c565b6100ba5761008060408301836114a9565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506100dd92505050565b6100dd6100ca60208401846114f6565b6100d760408501856114a9565b866101df565b6001600160a01b038516156100f35760006100f5565b835b6101056040850160208601611461565b6001600160a01b03169190610240565b50505050565b6001600160a01b03821661012d575050565b61013f60026001600160601b03611543565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526001600160601b03929092169184169063dd62ed3e90604401602060405180830381865afa158015610198573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101bc9190611576565b10156101db576101ce82826000610270565b6101db8282600019610270565b5050565b606060018560038111156101f5576101f561158f565b0361020c5761020584848461037f565b9050610238565b60028560038111156102205761022061158f565b0361023057610205848484610553565b6102386115a5565b949350505050565b6060610266848484604051806060016040528060298152602001612ffd6029913961079e565b90505b9392505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b17905291516000928392908716916102cc91906115df565b6000604051808303816000865af19150503d8060008114610309576040519150601f19603f3d011682016040523d82523d6000602084013e61030e565b606091505b50915091508180156103385750805115806103385750808060200190518101906103389190611606565b6103785760405162461bcd60e51b815260206004820152600c60248201526b5361666520417070726f766560a01b60448201526064015b60405180910390fd5b5050505050565b606060006103906004828688611623565b6103999161164d565b9050631de02f1760e01b6001600160e01b03198216016104565760006103c28560048189611623565b8101906103cf9190611a58565b90506103f881606001518260400151866103f38560600151610120015160206108cf565b6108db565b82606001836040018290528290525050818160405160240161041a9190611ca3565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529250610269915050565b63750fcc0560e01b6001600160e01b03198216016104ff576000808080610480886004818c611623565b81019061048d9190611d24565b93509350935093506104a283838960016108db565b604051919450925085906104c0908690869086908690602401611dbe565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529550610269945050505050565b60405162461bcd60e51b8152602060048201526024808201527f496e7075745363616c696e6748656c7065723a20496e76616c69642073656c6560448201526331ba37b960e11b606482015260840161036f565b606060006105646004828688611623565b61056d9161164d565b9050600061057e8560048189611623565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293505050506001600160e01b0319821663086fe1cb60e31b0161065757600080600080848060200190518101906105e79190611e63565b93509350935093506105fa82848a610949565b915087925085848484846040516024016106179493929190611ebb565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152965061026995505050505050565b63ed55c35160e01b6001600160e01b03198316016106c957600080600080848060200190518101906106899190611f2d565b93509350935093506106a48360a0015184608001518a610949565b60a0840152608083018890526040518690610617908690869086908690602401612025565b6308723dad60e01b6001600160e01b0319831601610772576000806000806000858060200190518101906106fd91906120aa565b9450945094509450945061071282848b610949565b9150889250868585858585604051602401610731959493929190612122565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915297506102699650505050505050565b60405163a7dd6a9560e01b8152600160048201526001600160e01b03198316602482015260440161036f565b6060824710156107ff5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161036f565b6001600160a01b0385163b6108565760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161036f565b600080866001600160a01b0316858760405161087291906115df565b60006040518083038185875af1925050503d80600081146108af576040519150601f19603f3d011682016040523d82523d6000602084013e6108b4565b606091505b50915091506108c4828286610960565b979650505050505050565b81811615155b92915050565b6108e3611365565b60e08501516060908481036108fe5786869250925050610940565b83156109245761090f878287610999565b61091a878388610af8565b9250925050610940565b61092f878287610999565b61093a878388610c25565b92509250505b94509492505050565b600082610956838661215c565b6102669190612173565b6060831561096f575081610269565b82511561097f5782518084602001fd5b8160405162461bcd60e51b815260040161036f9190612187565b6109a1611365565b610100840151836109b2848361215c565b6109bc9190612173565b61010086015280158015906109d45750610100850151155b156109e25760016101008601525b60e085018390526040850151516000036109ff5784915050610269565b6000805b866040015151811015610aed576001876040015151610a22919061219a565b8103610a5957610a32828661219a565b87606001518281518110610a4857610a486121ad565b602002602001018181525050610ab0565b858588606001518381518110610a7157610a716121ad565b6020026020010151610a83919061215c565b610a8d9190612173565b87606001518281518110610aa357610aa36121ad565b6020026020010181815250505b86606001518181518110610ac657610ac66121ad565b602002602001015182610ad991906121c3565b915080610ae5816121d6565b915050610a03565b509495945050505050565b6060600084806020019051810190610b1091906122dd565b8051519091506000805b82811015610bf857610b2d60018461219a565b8103610b6457610b3d828761219a565b84602001518281518110610b5357610b536121ad565b602002602001018181525050610bbb565b868685602001518381518110610b7c57610b7c6121ad565b6020026020010151610b8e919061215c565b610b989190612173565b84602001518281518110610bae57610bae6121ad565b6020026020010181815250505b83602001518181518110610bd157610bd16121ad565b602002602001015182610be491906121c3565b915080610bf0816121d6565b915050610b1a565b5082604051602001610c0a91906123b0565b60405160208183030381529060405293505050509392505050565b6060600084806020019051810190610c3d91906125e9565b905083838260600151610c50919061215c565b610c5a9190612173565b606082015260005b815151811015610f2057600082600001518281518110610c8457610c846121ad565b6020026020010151600081518110610c9e57610c9e6121ad565b60209081029190910181015190810151909150630be1a7a360e21b6001600160e01b0319821601610cdd578151610cd6908888610f4b565b8252610f0b565b6301b966ef60e71b6001600160e01b0319821601610d02578151610cd6908888610f96565b633409dd2d60e01b6001600160e01b0319821601610d27578151610cd6908888610fe1565b63b6bb37eb60e01b6001600160e01b0319821601610d4c578151610cd6908888610f4b565b63617556cb60e01b6001600160e01b0319821601610d71578151610cd690888861102c565b6308c49cdf60e11b6001600160e01b0319821601610da15760405162461bcd60e51b815260040161036f906126c0565b635a2f8d7160e01b6001600160e01b0319821601610dc6578151610cd69088886110df565b6375a256f160e01b6001600160e01b0319821601610deb578151610cd6908888611174565b63a7c1a92960e01b6001600160e01b0319821601610e10578151610cd69088886111bf565b6360fabb9d60e01b6001600160e01b0319821601610e35578151610cd690888861122b565b63873c52e160e01b6001600160e01b0319821601610e5a578151610cd69088886112da565b630590bce960e11b6001600160e01b0319821601610e8a5760405162461bcd60e51b815260040161036f906126c0565b6310262a3d60e01b6001600160e01b0319821601610eaf578151610cd6908888610f4b565b60405162461bcd60e51b815260206004820152602b60248201527f4167677265676174696f6e4578656375746f723a204465782074797065206e6f60448201526a1d081cdd5c1c1bdc9d195960aa1b606482015260840161036f565b50508080610f18906121d6565b915050610c62565b5080604051602001610f32919061270a565b6040516020818303038152906040529150509392505050565b6060600084806020019051810190610f639190612858565b905083838260800151610f76919061215c565b610f809190612173565b6080820152604051610f32908290602001612900565b6060600084806020019051810190610fae91906129b4565b905083838260a00151610fc1919061215c565b610fcb9190612173565b60a0820152604051610f32908290602001612a5c565b6060600084806020019051810190610ff99190612b18565b905083838260a0015161100c919061215c565b6110169190612173565b60a0820152604051610f32908290602001612bb5565b60606000848060200190518101906110449190612c4f565b905083838260800151611057919061215c565b6110619190612173565b6080820152604051610f3290829060200160006101008201905060018060a01b038084511683528060208501511660208401528060408501511660408401528060608501511660608401526080840151608084015260a084015160a08401528060c08501511660c08401525060e0830151151560e083015292915050565b60606000848060200190518101906110f79190612ce9565b90508383826080015161110a919061215c565b6111149190612173565b6080820152604051610f3290829060200181516001600160a01b03908116825260208084015190830152604080840151821690830152606080840151909116908201526080808301519082015260a0918201519181019190915260c00190565b606060008480602001905181019061118c9190612d7a565b90508383826080015161119f919061215c565b6111a99190612173565b6080820152604051610f32908290602001612e04565b60606000848060200190518101906111d79190612e86565b9050838382602001516111ea919061215c565b6111f49190612173565b60208281019182526040805184516001600160a01b0316928101929092529151818301529082015115156060820152608001610f32565b60606000848060200190518101906112439190612eee565b905083838260800151611256919061215c565b6112609190612173565b6080820152604051610f3290829060200160006101008201905060018060a01b0380845116835280602085015116602084015280604085015116604084015250606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e0830151151560e083015292915050565b60606000848060200190518101906112f29190612f6e565b905083838260600151611305919061215c565b61130f9190612173565b6060820152604051610f3290829060200181516001600160a01b03908116825260208084015182169083015260408084015182169083015260608084015190830152608092830151169181019190915260a00190565b60405180610160016040528060006001600160a01b0316815260200160006001600160a01b031681526020016060815260200160608152602001606081526020016060815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001606081525090565b6001600160a01b03811681146113ef57600080fd5b50565b80356113fd816113da565b919050565b60008060006060848603121561141757600080fd5b8335611422816113da565b92506020840135915060408401356001600160401b0381111561144457600080fd5b84016080818703121561145657600080fd5b809150509250925092565b60006020828403121561147357600080fd5b8135610269816113da565b80151581146113ef57600080fd5b60006020828403121561149e57600080fd5b81356102698161147e565b6000808335601e198436030181126114c057600080fd5b8301803591506001600160401b038211156114da57600080fd5b6020019150368190038213156114ef57600080fd5b9250929050565b60006020828403121561150857600080fd5b81356004811061026957600080fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001600160601b038381168061155d5761155d611517565b92169190910492915050565b6001600160a01b03169052565b60006020828403121561158857600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60005b838110156115d65781810151838201526020016115be565b50506000910152565b600082516115f18184602087016115bb565b9190910192915050565b80516113fd8161147e565b60006020828403121561161857600080fd5b81516102698161147e565b6000808585111561163357600080fd5b8386111561164057600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156116755780818660040360031b1b83161692505b505092915050565b634e487b7160e01b600052604160045260246000fd5b60405161016081016001600160401b03811182821017156116b6576116b661167d565b60405290565b60405160a081016001600160401b03811182821017156116b6576116b661167d565b60405160e081016001600160401b03811182821017156116b6576116b661167d565b604080519081016001600160401b03811182821017156116b6576116b661167d565b60405161012081016001600160401b03811182821017156116b6576116b661167d565b60405161014081016001600160401b03811182821017156116b6576116b661167d565b60405161010081016001600160401b03811182821017156116b6576116b661167d565b604051601f8201601f191681016001600160401b03811182821017156117b3576117b361167d565b604052919050565b60006001600160401b038211156117d4576117d461167d565b50601f01601f191660200190565b600082601f8301126117f357600080fd5b8135611806611801826117bb565b61178b565b81815284602083860101111561181b57600080fd5b816020850160208301376000918101602001919091529392505050565b60006001600160401b038211156118515761185161167d565b5060051b60200190565b600082601f83011261186c57600080fd5b8135602061187c61180183611838565b82815260059290921b8401810191818101908684111561189b57600080fd5b8286015b848110156118bf5780356118b2816113da565b835291830191830161189f565b509695505050505050565b600082601f8301126118db57600080fd5b813560206118eb61180183611838565b82815260059290921b8401810191818101908684111561190a57600080fd5b8286015b848110156118bf578035835291830191830161190e565b6000610160828403121561193857600080fd5b611940611693565b905061194b826113f2565b8152611959602083016113f2565b602082015260408201356001600160401b038082111561197857600080fd5b6119848583860161185b565b6040840152606084013591508082111561199d57600080fd5b6119a9858386016118ca565b606084015260808401359150808211156119c257600080fd5b6119ce8583860161185b565b608084015260a08401359150808211156119e757600080fd5b6119f3858386016118ca565b60a0840152611a0460c085016113f2565b60c084015260e084810135908401526101008085013590840152610120808501359084015261014091508184013581811115611a3f57600080fd5b611a4b868287016117e2565b8385015250505092915050565b600060208284031215611a6a57600080fd5b81356001600160401b0380821115611a8157600080fd5b9083019060a08286031215611a9557600080fd5b611a9d6116bc565b611aa6836113f2565b8152611ab4602084016113f2565b6020820152604083013582811115611acb57600080fd5b611ad7878286016117e2565b604083015250606083013582811115611aef57600080fd5b611afb87828601611925565b606083015250608083013582811115611b1357600080fd5b611b1f878286016117e2565b60808301525095945050505050565b60008151808452611b468160208601602086016115bb565b601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b83811015610aed5781516001600160a01b031687529582019590820190600101611b6e565b600081518084526020808501945080840160005b83811015610aed57815187529582019590820190600101611ba7565b6000610160611bd3848451611569565b6020830151611be56020860182611569565b506040830151816040860152611bfd82860182611b5a565b91505060608301518482036060860152611c178282611b93565b91505060808301518482036080860152611c318282611b5a565b91505060a083015184820360a0860152611c4b8282611b93565b91505060c0830151611c6060c0860182611569565b5060e08381015190850152610100808401519085015261012080840151908501526101408084015185830382870152611c998382611b2e565b9695505050505050565b60208152600060018060a01b0380845116602084015280602085015116604084015250604083015160a06060840152611cdf60c0840182611b2e565b90506060840151601f1980858403016080860152611cfd8383611bc3565b925060808601519150808584030160a086015250611d1b8282611b2e565b95945050505050565b60008060008060808587031215611d3a57600080fd5b8435611d45816113da565b935060208501356001600160401b0380821115611d6157600080fd5b611d6d88838901611925565b94506040870135915080821115611d8357600080fd5b611d8f888389016117e2565b93506060870135915080821115611da557600080fd5b50611db2878288016117e2565b91505092959194509250565b6001600160a01b0385168152608060208201819052600090611de290830186611bc3565b8281036040840152611df48186611b2e565b905082810360608401526108c48185611b2e565b600082601f830112611e1957600080fd5b81516020611e2961180183611838565b82815260059290921b84018101918181019086841115611e4857600080fd5b8286015b848110156118bf5780518352918301918301611e4c565b60008060008060808587031215611e7957600080fd5b8451611e84816113da565b60208601516040870151606088015192965090945092506001600160401b03811115611eaf57600080fd5b611db287828801611e08565b60018060a01b0385168152836020820152826040820152608060608201526000611c996080830184611b93565b600082601f830112611ef957600080fd5b8151611f07611801826117bb565b818152846020838601011115611f1c57600080fd5b6102388260208301602087016115bb565b600080600080848603610140811215611f4557600080fd5b8551611f50816113da565b945060e0601f1982011215611f6457600080fd5b50611f6d6116de565b6020860151611f7b816113da565b81526040860151611f8b816113da565b60208201526060860151611f9e816113da565b60408201526080860151611fb1816113da565b606082015260a086810151608083015260c0808801519183019190915260e0870151908201526101008601519093506001600160401b0380821115611ff557600080fd5b61200188838901611ee8565b935061012087015191508082111561201857600080fd5b50611db287828801611ee8565b600061014060018060a01b03808816845280875116602085015280602088015116604085015280604088015116606085015280606088015116608085015250608086015160a084015260a086015160c084015260c086015160e08401528061010084015261209581840186611b2e565b90508281036101208401526108c48185611b2e565b600080600080600060a086880312156120c257600080fd5b85516120cd816113da565b60208701519095506120de816113da565b60408701516060880151608089015192965090945092506001600160401b0381111561210957600080fd5b61211588828901611e08565b9150509295509295909350565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906108c490830184611b93565b80820281158282048414176108d5576108d561152d565b60008261218257612182611517565b500490565b6020815260006102696020830184611b2e565b818103818111156108d5576108d561152d565b634e487b7160e01b600052603260045260246000fd5b808201808211156108d5576108d561152d565b6000600182016121e8576121e861152d565b5060010190565b80516113fd816113da565b600082601f83011261220b57600080fd5b8151602061221b61180183611838565b82815260059290921b8401810191818101908684111561223a57600080fd5b8286015b848110156118bf578051612251816113da565b835291830191830161223e565b600082601f83011261226f57600080fd5b8151602061227f61180183611838565b82815260059290921b8401810191818101908684111561229e57600080fd5b8286015b848110156118bf5780516001600160401b038111156122c15760008081fd5b6122cf8986838b0101611ee8565b8452509183019183016122a2565b6000602082840312156122ef57600080fd5b81516001600160401b038082111561230657600080fd5b9083019060a0828603121561231a57600080fd5b6123226116bc565b82518281111561233157600080fd5b61233d878286016121fa565b82525060208301518281111561235257600080fd5b61235e87828601611e08565b60208301525060408301518281111561237657600080fd5b6123828782860161225e565b604083015250606083015160608201526080830151828111156123a457600080fd5b611b1f87828601611ee8565b60006020808352835160a0828501526123cc60c0850182611b5a565b905081850151601f19808684030160408701526123e98383611b93565b60408801518782038301606089015280518083529194508501925084840190600581901b8501860160005b82811015612440578487830301845261242e828751611b2e565b95880195938801939150600101612414565b5060608a015160808a015260808a01519650838982030160a08a01526124668188611b2e565b9a9950505050505050505050565b600082601f83011261248557600080fd5b815161249361180182611838565b808282526020820191508560208460051b87010111156124b257600080fd5b602085015b60208460051b8701018110156125df5780516001600160401b038111156124dd57600080fd5b8601603f810188136124ee57600080fd5b60208101516124ff61180182611838565b808282526020820191508a60408460051b860101111561251e57600080fd5b604084015b60408460051b8601018110156125c95780516001600160401b0381111561254957600080fd5b60408682018e03603f1901121561255f57600080fd5b612567611700565b868201604001516001600160401b0381111561258257600080fd5b6125938f604083868c010101611ee8565b82525090860160600151906001600160e01b0319821682146125b457600080fd5b60208181019290925284529283019201612523565b50865250506020938401939190910190506124b7565b5095945050505050565b6000602082840312156125fb57600080fd5b81516001600160401b038082111561261257600080fd5b9083019060e0828603121561262657600080fd5b61262e6116de565b82518281111561263d57600080fd5b61264987828601612474565b825250612658602084016121ef565b6020820152612669604084016121ef565b604082015260608301516060820152612684608084016121ef565b608082015260a083015160a082015260c0830151828111156126a557600080fd5b6126b187828601611ee8565b60c08301525095945050505050565b6020808252602a908201527f496e7075745363616c696e6748656c7065723a2043616e206e6f74207363616c6040820152690652052465120737761760b41b606082015260800190565b6020808252825160e0838301528051610100840181905260009291600582811b860161012090810193928501929087019186805b838110156127d25789870361011f1901855285518051808952908901908989019080861b8a018b01855b828110156127bc57601f198c830301845284516040815181855261278e82860182611b2e565b91505063ffffffff60e01b8f830151168f85015280935050508c850194508c84019350600181019050612768565b509950505095880195509387019360010161273e565b5050505050508185015191506127eb6040850183611569565b604085015191506127ff6060850183611569565b606085015160808501526080850151915061281d60a0850183611569565b60a085015160c085015260c08501519150601f198482030160e0850152611d1b8183611b2e565b805163ffffffff811681146113fd57600080fd5b6000610120828403121561286b57600080fd5b612873611722565b61287c836121ef565b815261288a602084016121ef565b602082015261289b604084016121ef565b60408201526128ac606084016121ef565b60608201526080830151608082015260a083015160a08201526128d160c08401612844565b60c08201526128e260e08401612844565b60e08201526101006128f5818501612844565b908201529392505050565b81516001600160a01b0390811682526020808401519091169082015260408083015161012083019161293490840182611569565b5060608301516129476060840182611569565b506080830151608083015260a083015160a083015260c083015161297360c084018263ffffffff169052565b5060e083015161298b60e084018263ffffffff169052565b506101008381015163ffffffff811684830152611675565b805160ff811681146113fd57600080fd5b600061014082840312156129c757600080fd5b6129cf611745565b6129d8836121ef565b81526129e6602084016121ef565b60208201526129f7604084016121ef565b6040820152612a08606084016129a3565b6060820152612a19608084016129a3565b608082015260a083015160a082015260c083015160c082015260e083015160e0820152610100612a4a8185016121ef565b908201526101206128f58482016115fb565b600061014082019050612a70828451611569565b6020830151612a826020840182611569565b506040830151612a956040840182611569565b506060830151612aaa606084018260ff169052565b506080830151612abf608084018260ff169052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151612af182850182611569565b50506101208381015180151584830152611675565b8051600f81900b81146113fd57600080fd5b60006101208284031215612b2b57600080fd5b612b33611722565b612b3c836121ef565b8152612b4a602084016121ef565b6020820152612b5b604084016121ef565b6040820152612b6c60608401612b06565b6060820152612b7d60808401612b06565b608082015260a083015160a082015260c083015160c0820152612ba260e084016115fb565b60e08201526101006128f58185016115fb565b81516001600160a01b03908116825260208084015190911690820152604080830151610120830191612be990840182611569565b506060830151612bfe6060840182600f0b9052565b506080830151612c136080840182600f0b9052565b5060a083015160a083015260c083015160c083015260e0830151612c3b60e084018215159052565b506101008381015180151584830152611675565b60006101008284031215612c6257600080fd5b612c6a611768565b8251612c75816113da565b81526020830151612c85816113da565b6020820152612c96604084016121ef565b6040820152612ca7606084016121ef565b60608201526080830151608082015260a083015160a0820152612ccc60c084016121ef565b60c0820152612cdd60e084016115fb565b60e08201529392505050565b600060c08284031215612cfb57600080fd5b60405160c081016001600160401b0381118282101715612d1d57612d1d61167d565b6040528251612d2b816113da565b8152602083810151908201526040830151612d45816113da565b60408201526060830151612d58816113da565b60608201526080838101519082015260a0928301519281019290925250919050565b60006101208284031215612d8d57600080fd5b612d95611722565b612d9e836121ef565b8152612dac602084016121ef565b6020820152612dbd604084016121ef565b6040820152612dce606084016121ef565b60608201526080830151608082015260a083015160a0820152612df360c084016121ef565b60c0820152612ba260e084016115fb565b81516001600160a01b03908116825260208084015190911690820152604080830151610120830191612e3890840182611569565b506060830151612e4b6060840182611569565b506080830151608083015260a083015160a083015260c0830151612e7260c0840182611569565b5060e0830151612c3b60e084018215159052565b600060608284031215612e9857600080fd5b604051606081016001600160401b0381118282101715612eba57612eba61167d565b6040528251612ec8816113da565b8152602083810151908201526040830151612ee28161147e565b60408201529392505050565b60006101008284031215612f0157600080fd5b612f09611768565b8251612f14816113da565b81526020830151612f24816113da565b6020820152612f35604084016121ef565b6040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c0820152612cdd60e084016115fb565b600060a08284031215612f8057600080fd5b60405160a081016001600160401b0381118282101715612fa257612fa261167d565b6040528251612fb0816113da565b81526020830151612fc0816113da565b60208201526040830151612fd3816113da565b6040820152606083810151908201526080830151612ff0816113da565b6080820152939250505056fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564a264697066735822122043315a7481b2293598092d73704bb17a4b6bb6f08ad761b390aab3daeda7469a64736f6c63430008110033",
74
74
  "linkReferences": {},
75
75
  "deployedLinkReferences": {}
76
76
  }
@@ -0,0 +1,166 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.17;
3
+
4
+ import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
5
+ import "@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol";
6
+ import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol";
7
+ import "../../core/libraries/BoringOwnableUpgradeable.sol";
8
+ import "../../core/libraries/TokenHelper.sol";
9
+ import "../../core/libraries/Errors.sol";
10
+ import "../../interfaces/IPFeeDistributorV2.sol";
11
+
12
+ contract PendleFeeDistributorV2 is
13
+ UUPSUpgradeable,
14
+ BoringOwnableUpgradeable,
15
+ IPFeeDistributorV2,
16
+ TokenHelper
17
+ {
18
+ bytes32 public merkleRoot;
19
+
20
+ struct ProtocolData {
21
+ mapping(address => uint256) claimable;
22
+ uint256 totalAccrued;
23
+ }
24
+
25
+ mapping(address => uint256) public claimed;
26
+
27
+ mapping(address => ProtocolData) internal protocol;
28
+
29
+ constructor() initializer {}
30
+
31
+ receive() external payable {}
32
+
33
+ function initialize() external initializer {
34
+ __BoringOwnable_init();
35
+ }
36
+
37
+ function claimRetail(
38
+ address receiver,
39
+ uint256 totalAccrued,
40
+ bytes32[] calldata proof
41
+ ) external returns (uint256 amountOut) {
42
+ address user = msg.sender;
43
+ if (!_verifyMerkleData(user, totalAccrued, proof)) revert Errors.InvalidMerkleProof();
44
+
45
+ amountOut = totalAccrued - claimed[user];
46
+ claimed[user] = totalAccrued;
47
+
48
+ // assert(claimed[user] <= totalAccrued); // important invariant, obviously true
49
+
50
+ // transfer ETH last
51
+ _transferOut(NATIVE, receiver, amountOut);
52
+ emit Claimed(user, amountOut);
53
+ }
54
+
55
+ function claimProtocol(address receiver, address[] calldata pools)
56
+ external
57
+ returns (uint256 totalAmountOut, uint256[] memory amountsOut)
58
+ {
59
+ unchecked {
60
+ address user = msg.sender;
61
+
62
+ uint256 nPools = pools.length;
63
+ amountsOut = new uint256[](nPools);
64
+
65
+ for (uint256 i = 0; i < nPools; i++) {
66
+ amountsOut[i] = protocol[user].claimable[pools[i]];
67
+ if (amountsOut[i] == 0) continue;
68
+
69
+ amountsOut[i]--;
70
+ totalAmountOut += amountsOut[i];
71
+
72
+ protocol[user].claimable[pools[i]] = 1;
73
+ }
74
+
75
+ claimed[user] += totalAmountOut;
76
+ assert(claimed[user] <= protocol[user].totalAccrued); // important invariant, must always hold regardless of claimable mapping
77
+
78
+ // transfer ETH last
79
+ _transferOut(NATIVE, receiver, totalAmountOut);
80
+ emit Claimed(user, totalAmountOut);
81
+ }
82
+ }
83
+
84
+ function getProtocolClaimables(address user, address[] calldata pools)
85
+ external
86
+ view
87
+ returns (uint256[] memory claimables)
88
+ {
89
+ unchecked {
90
+ uint256 nPools = pools.length;
91
+ claimables = new uint256[](nPools);
92
+
93
+ for (uint256 i = 0; i < nPools; i++) {
94
+ claimables[i] = protocol[user].claimable[pools[i]];
95
+ if (claimables[i] == 0) continue;
96
+
97
+ claimables[i]--;
98
+ }
99
+ }
100
+ }
101
+
102
+ function getProtocolTotalAccrued(address user) external view returns (uint256) {
103
+ return protocol[user].totalAccrued;
104
+ }
105
+
106
+ function _verifyMerkleData(
107
+ address user,
108
+ uint256 amount,
109
+ bytes32[] calldata proof
110
+ ) internal view returns (bool) {
111
+ bytes32 leaf = keccak256(abi.encodePacked(user, amount));
112
+ return MerkleProof.verify(proof, merkleRoot, leaf);
113
+ }
114
+
115
+ // ----------------- owner logic -----------------
116
+ function setMerkleRootAndFund(bytes32 newMerkleRoot, uint256 amountToFund)
117
+ external
118
+ payable
119
+ onlyOwner
120
+ {
121
+ _transferIn(NATIVE, msg.sender, amountToFund);
122
+ merkleRoot = newMerkleRoot;
123
+ emit SetMerkleRootAndFund(newMerkleRoot, amountToFund);
124
+ }
125
+
126
+ /// @dev no onlyOwner, only calls an onlyOwner function
127
+ function updateProtocolClaimables(UpdateProtocolStruct[] calldata arr) external {
128
+ unchecked {
129
+ for (uint256 i = 0; i < arr.length; i++) {
130
+ updateProtocolClaimable(arr[i]);
131
+ }
132
+ }
133
+ }
134
+
135
+ function updateProtocolClaimable(UpdateProtocolStruct calldata ele) public onlyOwner {
136
+ unchecked {
137
+ (
138
+ address user,
139
+ uint256[] calldata topUps,
140
+ address[] calldata pools,
141
+ bytes32[] calldata proof
142
+ ) = (ele.user, ele.topUps, ele.pools, ele.proof);
143
+
144
+ uint256 nPools = pools.length;
145
+ if (nPools != topUps.length) revert Errors.ArrayLengthMismatch();
146
+
147
+ uint256 sumTopUps;
148
+
149
+ for (uint256 i = 0; i < nPools; i++) {
150
+ protocol[user].claimable[ele.pools[i]] += topUps[i];
151
+ sumTopUps += topUps[i];
152
+ }
153
+
154
+ uint256 newTotalAccrued = protocol[user].totalAccrued + sumTopUps;
155
+ if (!_verifyMerkleData(user, newTotalAccrued, proof))
156
+ revert Errors.InvalidMerkleProof();
157
+
158
+ protocol[user].totalAccrued = newTotalAccrued;
159
+ emit UpdateProtocolClaimable(user, sumTopUps);
160
+ }
161
+ }
162
+
163
+ // ----------------- upgrade-related -----------------
164
+
165
+ function _authorizeUpgrade(address) internal override onlyOwner {}
166
+ }
@@ -167,6 +167,7 @@ library Errors {
167
167
  error ArrayOutOfBounds();
168
168
  error ZeroAddress();
169
169
  error FailedToSendEther();
170
+ error InvalidMerkleProof();
170
171
 
171
172
  error OnlyLayerZeroEndpoint();
172
173
  error OnlyYT();
@@ -13,10 +13,9 @@ interface IPFeeDistributor {
13
13
  uint128 iter;
14
14
  }
15
15
 
16
- function claimReward(
17
- address user,
18
- address[] calldata pools
19
- ) external returns (uint256[] memory amountRewardOut);
16
+ function claimReward(address user, address[] calldata pools)
17
+ external
18
+ returns (uint256[] memory amountRewardOut);
20
19
 
21
20
  function getAllPools() external view returns (address[] memory);
22
21
  }
@@ -0,0 +1,46 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.17;
3
+
4
+ interface IPFeeDistributorV2 {
5
+ event SetMerkleRootAndFund(bytes32 indexed merkleRoot, uint256 amountFunded);
6
+
7
+ event Claimed(address indexed user, uint256 amountOut);
8
+
9
+ event UpdateProtocolClaimable(address indexed user, uint256 sumTopUp);
10
+
11
+ struct UpdateProtocolStruct {
12
+ address user;
13
+ bytes32[] proof;
14
+ address[] pools;
15
+ uint256[] topUps;
16
+ }
17
+
18
+ /**
19
+ * @notice submit total ETH accrued & proof to claim the outstanding amount. Intended to be
20
+ used by retail users
21
+ */
22
+ function claimRetail(
23
+ address receiver,
24
+ uint256 totalAccrued,
25
+ bytes32[] calldata proof
26
+ ) external returns (uint256 amountOut);
27
+
28
+ /**
29
+ * @notice Protocols that require the use of this function & feeData should contact the Pendle team.
30
+ * @notice Protocols should NOT EVER use claimRetail. Using it will make getProtocolFeeData unreliable.
31
+ */
32
+ function claimProtocol(address receiver, address[] calldata pools)
33
+ external
34
+ returns (uint256 totalAmountOut, uint256[] memory amountsOut);
35
+
36
+ /**
37
+ * @notice returns the claimable fees per pool. Only available if the Pendle team has specifically
38
+ set up the data
39
+ */
40
+ function getProtocolClaimables(address user, address[] calldata pools)
41
+ external
42
+ view
43
+ returns (uint256[] memory claimables);
44
+
45
+ function getProtocolTotalAccrued(address user) external view returns (uint256);
46
+ }
@@ -0,0 +1,16 @@
1
+ // SPDX-License-Identifier: MIT
2
+
3
+ pragma solidity 0.8.17;
4
+ import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
5
+ import "@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol";
6
+ import "../core/libraries/BoringOwnableUpgradeable.sol";
7
+
8
+ contract EmptyUUPS is Initializable, UUPSUpgradeable, BoringOwnableUpgradeable {
9
+ constructor() initializer {}
10
+
11
+ function initialize() external initializer {
12
+ __BoringOwnable_init();
13
+ }
14
+
15
+ function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}
16
+ }
@@ -44,7 +44,7 @@ contract PendlePtGlpOracle {
44
44
  // using library directly to save 1 external call (gas optimization)
45
45
  uint256 ptRate = IPMarket(market).getPtToAssetRate(twapDuration);
46
46
  uint256 assetPrice = IGlpManager(glpManager).getPrice(true);
47
- return (assetPrice * ptRate) / Math.ONE;
47
+ return (assetPrice * ptRate) / (10 ** 30);
48
48
  }
49
49
 
50
50
  function decimals() external pure virtual returns (uint8) {
@@ -29,5 +29,6 @@
29
29
  "senderEndpoint": "0x07b1014c88f14C9E910092526db57A20052E989F",
30
30
  "votingController": "0x44087E105137a5095c008AaB6a6530182821F2F0",
31
31
  "gaugeController": "0x47D74516B33eD5D70ddE7119A40839f6Fcc24e57",
32
- "feeDistributor": "0xd7b34a6fDCb2A7ceD2115FF7f5fdD72aa6aA4dE2"
32
+ "feeDistributor": "0xd7b34a6fDCb2A7ceD2115FF7f5fdD72aa6aA4dE2",
33
+ "feeDistributorV2": "0x8C237520a8E14D658170A633D96F8e80764433b9"
33
34
  }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@pendle/core-v2",
3
3
  "description": "Core smart contracts of Pendle Protocol.",
4
4
  "license": "BUSL-1.1",
5
- "version": "2.9.0-mainnet",
5
+ "version": "2.10.1-mainnet",
6
6
  "homepage": "https://pendle.finance",
7
7
  "keywords": [
8
8
  "pendle",