@pendle/core-v2 5.4.4 → 5.6.0

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 (174) hide show
  1. package/build/artifacts/contracts/core/Market/v3/PendleMarketFactoryV3.sol/PendleMarketFactoryV3.dbg.json +1 -1
  2. package/build/artifacts/contracts/core/Market/v3/PendleMarketFactoryV3.sol/PendleMarketFactoryV3.json +2 -2
  3. package/build/artifacts/contracts/core/Market/v3/PendleMarketV3.sol/PendleMarketV3.dbg.json +1 -1
  4. package/build/artifacts/contracts/core/Market/v3/PendleMarketV3.sol/PendleMarketV3.json +2 -2
  5. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiqV3.sol/IPActionAddRemoveLiqV3.dbg.json +1 -1
  6. package/build/artifacts/contracts/interfaces/IPActionCallbackV3.sol/IPActionCallbackV3.dbg.json +1 -1
  7. package/build/artifacts/contracts/interfaces/IPActionMarketAuxStatic.sol/IPActionMarketAuxStatic.dbg.json +1 -1
  8. package/build/artifacts/contracts/interfaces/IPActionMiscV3.sol/IPActionMiscV3.dbg.json +1 -1
  9. package/build/artifacts/contracts/interfaces/IPActionSimple.sol/IPActionSimple.dbg.json +1 -1
  10. package/build/artifacts/contracts/interfaces/IPActionStorageStatic.sol/IPActionStorageStatic.dbg.json +1 -1
  11. package/build/artifacts/contracts/interfaces/IPActionStorageV4.sol/IPActionStorageV4.dbg.json +1 -1
  12. package/build/artifacts/contracts/interfaces/IPActionSwapPTV3.sol/IPActionSwapPTV3.dbg.json +1 -1
  13. package/build/artifacts/contracts/interfaces/IPActionSwapYTV3.sol/IPActionSwapYTV3.dbg.json +1 -1
  14. package/build/artifacts/contracts/interfaces/IPAllActionV3.sol/IPAllActionV3.dbg.json +1 -1
  15. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionAddRemoveLiqV3Events.dbg.json +1 -1
  16. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionMiscV3Events.dbg.json +1 -1
  17. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionStorageEvents.dbg.json +1 -1
  18. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionSwapPTV3Events.dbg.json +1 -1
  19. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionSwapYTV3Events.dbg.json +1 -1
  20. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPAllEventsV3.dbg.json +1 -1
  21. package/build/artifacts/contracts/interfaces/IPGovernanceProxy.sol/IPGovernanceProxy.dbg.json +1 -1
  22. package/build/artifacts/contracts/interfaces/IPGovernanceProxy.sol/IPGovernanceProxy.json +77 -0
  23. package/build/artifacts/contracts/interfaces/IPLimitRouter.sol/IPLimitOrderType.dbg.json +1 -1
  24. package/build/artifacts/contracts/interfaces/IPLimitRouter.sol/IPLimitRouter.dbg.json +1 -1
  25. package/build/artifacts/contracts/interfaces/IPLimitRouter.sol/IPLimitRouter.json +32 -0
  26. package/build/artifacts/contracts/interfaces/IPLimitRouter.sol/IPLimitRouterCallback.dbg.json +1 -1
  27. package/build/artifacts/contracts/interfaces/IPMarketFactoryV3.sol/IPMarketFactoryV3.dbg.json +1 -1
  28. package/build/artifacts/contracts/interfaces/IPMarketFactoryV3.sol/IPMarketFactoryV3.json +23 -0
  29. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
  30. package/build/artifacts/contracts/limit/LimitMathCore.sol/LimitMathCore.dbg.json +1 -1
  31. package/build/artifacts/contracts/limit/LimitMathCore.sol/LimitMathCore.json +2 -2
  32. package/build/artifacts/contracts/limit/LimitRouterBase.sol/LimitRouterBase.dbg.json +1 -1
  33. package/build/artifacts/contracts/limit/LimitRouterBase.sol/LimitRouterBase.json +32 -0
  34. package/build/artifacts/contracts/limit/PendleLimitRouter.sol/PendleLimitRouter.dbg.json +1 -1
  35. package/build/artifacts/contracts/limit/PendleLimitRouter.sol/PendleLimitRouter.json +34 -2
  36. package/build/artifacts/contracts/offchain-helpers/LimitBackendHelper.sol/LimitBackendHelper.dbg.json +1 -1
  37. package/build/artifacts/contracts/offchain-helpers/LimitBackendHelper.sol/LimitBackendHelper.json +2 -2
  38. package/build/artifacts/contracts/offchain-helpers/PendleGovernanceProxy.sol/PendleGovernanceProxy.dbg.json +1 -1
  39. package/build/artifacts/contracts/offchain-helpers/PendleGovernanceProxy.sol/PendleGovernanceProxy.json +98 -3
  40. package/build/artifacts/contracts/offchain-helpers/PendlePoolDeployHelper.sol/PendlePoolDeployHelper.dbg.json +1 -1
  41. package/build/artifacts/contracts/offchain-helpers/PendlePoolDeployHelper.sol/PendlePoolDeployHelper.json +2 -2
  42. package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.dbg.json +1 -1
  43. package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.json +2 -2
  44. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.dbg.json +1 -1
  45. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.json +2 -2
  46. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.dbg.json +1 -1
  47. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.json +2 -2
  48. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.dbg.json +1 -1
  49. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.json +2 -2
  50. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.dbg.json +1 -1
  51. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.json +2 -2
  52. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.dbg.json +1 -1
  53. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.json +2 -2
  54. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.dbg.json +1 -1
  55. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.json +2 -2
  56. package/build/artifacts/contracts/offchain-helpers/router-static/base/MarketApproxLibV1.sol/MarketApproxPtInLibV1.dbg.json +1 -1
  57. package/build/artifacts/contracts/offchain-helpers/router-static/base/MarketApproxLibV1.sol/MarketApproxPtInLibV1.json +2 -2
  58. package/build/artifacts/contracts/offchain-helpers/router-static/base/MarketApproxLibV1.sol/MarketApproxPtOutLibV1.dbg.json +1 -1
  59. package/build/artifacts/contracts/offchain-helpers/router-static/base/MarketApproxLibV1.sol/MarketApproxPtOutLibV1.json +2 -2
  60. package/build/artifacts/contracts/offchain-helpers/router-static/base/StorageLayout.sol/StorageLayout.dbg.json +1 -1
  61. package/build/artifacts/contracts/router/ActionAddRemoveLiqV3.sol/ActionAddRemoveLiqV3.dbg.json +1 -1
  62. package/build/artifacts/contracts/router/ActionAddRemoveLiqV3.sol/ActionAddRemoveLiqV3.json +2 -2
  63. package/build/artifacts/contracts/router/ActionCallbackV3.sol/ActionCallbackV3.dbg.json +1 -1
  64. package/build/artifacts/contracts/router/ActionCallbackV3.sol/ActionCallbackV3.json +2 -2
  65. package/build/artifacts/contracts/router/ActionMiscV3.sol/ActionMiscV3.dbg.json +1 -1
  66. package/build/artifacts/contracts/router/ActionMiscV3.sol/ActionMiscV3.json +2 -2
  67. package/build/artifacts/contracts/router/ActionSimple.sol/ActionSimple.dbg.json +1 -1
  68. package/build/artifacts/contracts/router/ActionSimple.sol/ActionSimple.json +2 -2
  69. package/build/artifacts/contracts/router/ActionStorageV4.sol/ActionStorageV4.dbg.json +1 -1
  70. package/build/artifacts/contracts/router/ActionStorageV4.sol/ActionStorageV4.json +2 -2
  71. package/build/artifacts/contracts/router/ActionSwapPTV3.sol/ActionSwapPTV3.dbg.json +1 -1
  72. package/build/artifacts/contracts/router/ActionSwapPTV3.sol/ActionSwapPTV3.json +2 -2
  73. package/build/artifacts/contracts/router/ActionSwapYTV3.sol/ActionSwapYTV3.dbg.json +1 -1
  74. package/build/artifacts/contracts/router/ActionSwapYTV3.sol/ActionSwapYTV3.json +2 -2
  75. package/build/artifacts/contracts/router/PendleRouterV4.sol/PendleRouterV4.dbg.json +1 -1
  76. package/build/artifacts/contracts/router/PendleRouterV4.sol/PendleRouterV4.json +2 -2
  77. package/build/artifacts/contracts/router/Reflector.sol/Reflector.dbg.json +1 -1
  78. package/build/artifacts/contracts/router/Reflector.sol/Reflector.json +2 -2
  79. package/build/artifacts/contracts/router/base/ActionBase.sol/ActionBase.dbg.json +1 -1
  80. package/build/artifacts/contracts/router/base/ActionDelegateBase.sol/ActionDelegateBase.dbg.json +1 -1
  81. package/build/artifacts/contracts/router/base/ActionDelegateBase.sol/ActionDelegateBase.json +2 -2
  82. package/build/artifacts/contracts/router/math/ApproxStateLib.sol/ApproxStateLib.dbg.json +1 -1
  83. package/build/artifacts/contracts/router/math/ApproxStateLib.sol/ApproxStateLib.json +2 -2
  84. package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtInLibOnchain.dbg.json +1 -1
  85. package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtInLibOnchain.json +2 -2
  86. package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtOutLibOnchain.dbg.json +1 -1
  87. package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtOutLibOnchain.json +2 -2
  88. package/build/artifacts/contracts/router/math/MarketApproxLibV2.sol/MarketApproxPtInLibV2.dbg.json +1 -1
  89. package/build/artifacts/contracts/router/math/MarketApproxLibV2.sol/MarketApproxPtInLibV2.json +2 -2
  90. package/build/artifacts/contracts/router/math/MarketApproxLibV2.sol/MarketApproxPtOutLibV2.dbg.json +1 -1
  91. package/build/artifacts/contracts/router/math/MarketApproxLibV2.sol/MarketApproxPtOutLibV2.json +2 -2
  92. package/build/artifacts/contracts/router/swap-aggregator/IPSwapAggregator.sol/IPSwapAggregator.dbg.json +1 -1
  93. package/build/artifacts/contracts/router/swap-aggregator/IPSwapAggregator.sol/IPSwapAggregator.json +0 -40
  94. package/build/artifacts/contracts/router/swap-aggregator/OKXScaleHelper.sol/IOKXDexRouter.dbg.json +4 -0
  95. package/build/artifacts/contracts/router/swap-aggregator/OKXScaleHelper.sol/IOKXDexRouter.json +407 -0
  96. package/build/artifacts/contracts/router/swap-aggregator/OKXScaleHelper.sol/OKXScaleHelper.dbg.json +4 -0
  97. package/build/artifacts/contracts/router/swap-aggregator/OKXScaleHelper.sol/OKXScaleHelper.json +10 -0
  98. package/build/artifacts/contracts/router/swap-aggregator/OneInchScaleHelper.sol/I1inchAggregationRouterV6.dbg.json +4 -0
  99. package/build/artifacts/contracts/router/swap-aggregator/OneInchScaleHelper.sol/I1inchAggregationRouterV6.json +214 -0
  100. package/build/artifacts/contracts/router/swap-aggregator/OneInchScaleHelper.sol/I1inchCommonType.dbg.json +4 -0
  101. package/build/artifacts/contracts/router/swap-aggregator/OneInchScaleHelper.sol/I1inchCommonType.json +10 -0
  102. package/build/artifacts/contracts/router/swap-aggregator/OneInchScaleHelper.sol/OneInchScaleHelper.dbg.json +4 -0
  103. package/build/artifacts/contracts/router/swap-aggregator/OneInchScaleHelper.sol/OneInchScaleHelper.json +10 -0
  104. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/IKyberScalingHelper.dbg.json +1 -1
  105. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/IOdosRouterV2.dbg.json +1 -1
  106. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwap.dbg.json +1 -1
  107. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwap.json +2 -55
  108. package/contracts/interfaces/IPGovernanceProxy.sol +10 -0
  109. package/contracts/interfaces/IPLimitRouter.sol +5 -0
  110. package/contracts/interfaces/IPMarketFactoryV3.sol +2 -0
  111. package/contracts/limit/LimitRouterBase.sol +6 -10
  112. package/contracts/offchain-helpers/PendleGovernanceProxy.sol +41 -10
  113. package/contracts/router/swap-aggregator/IPSwapAggregator.sol +0 -2
  114. package/contracts/router/swap-aggregator/OKXScaleHelper.sol +215 -0
  115. package/contracts/router/swap-aggregator/OneInchScaleHelper.sol +120 -0
  116. package/contracts/router/swap-aggregator/PendleSwap.sol +24 -7
  117. package/deployments/1-core.json +3 -2
  118. package/deployments/10-core.json +3 -2
  119. package/deployments/42161-core.json +3 -2
  120. package/deployments/5000-core.json +3 -2
  121. package/deployments/56-core.json +3 -2
  122. package/deployments/8453-core.json +3 -2
  123. package/deployments/merkle-distribution/2024-12-26.json +25555 -0
  124. package/deployments/merkle-distribution/2024-12-31-snapshot.json +65767 -0
  125. package/deployments/merkle-distribution/2025-01-30.json +28060 -0
  126. package/package.json +1 -1
  127. package/typechain-types/ActionCallbackV3.ts +164 -0
  128. package/typechain-types/I1inchAggregationRouterV6.ts +337 -0
  129. package/typechain-types/IPActionCallbackV3.ts +164 -0
  130. package/typechain-types/IPGovernanceProxy.ts +236 -0
  131. package/typechain-types/IPLimitRouter.ts +633 -0
  132. package/typechain-types/IPLimitRouterCallback.ts +120 -0
  133. package/typechain-types/IPMarketFactoryV3.ts +321 -0
  134. package/typechain-types/IPSwapAggregator.ts +0 -39
  135. package/typechain-types/LimitBackendHelper.ts +287 -0
  136. package/typechain-types/LimitRouterBase.ts +1138 -0
  137. package/typechain-types/PendleGovernanceProxy.ts +128 -0
  138. package/typechain-types/PendleLimitRouter.ts +1138 -0
  139. package/typechain-types/PendleMarketFactoryV3.ts +719 -0
  140. package/typechain-types/PendleMarketV3.ts +1195 -0
  141. package/typechain-types/PendleSwap.ts +0 -60
  142. package/typechain-types/factories/ActionAddRemoveLiqV3__factory.ts +1 -1
  143. package/typechain-types/factories/ActionCallbackV3__factory.ts +121 -0
  144. package/typechain-types/factories/ActionInfoStatic__factory.ts +1 -1
  145. package/typechain-types/factories/ActionMarketAuxStatic__factory.ts +1 -1
  146. package/typechain-types/factories/ActionMarketCoreStatic__factory.ts +1 -1
  147. package/typechain-types/factories/ActionMintRedeemStatic__factory.ts +1 -1
  148. package/typechain-types/factories/ActionMiscV3__factory.ts +1 -1
  149. package/typechain-types/factories/ActionSimple__factory.ts +1 -1
  150. package/typechain-types/factories/ActionStorageStatic__factory.ts +1 -1
  151. package/typechain-types/factories/ActionStorageV4__factory.ts +1 -1
  152. package/typechain-types/factories/ActionSwapPTV3__factory.ts +1 -1
  153. package/typechain-types/factories/ActionSwapYTV3__factory.ts +1 -1
  154. package/typechain-types/factories/ActionVePendleStatic__factory.ts +1 -1
  155. package/typechain-types/factories/I1inchAggregationRouterV6__factory.ts +233 -0
  156. package/typechain-types/factories/IPActionCallbackV3__factory.ts +83 -0
  157. package/typechain-types/factories/IPGovernanceProxy__factory.ts +152 -0
  158. package/typechain-types/factories/IPLimitRouterCallback__factory.ts +64 -0
  159. package/typechain-types/factories/IPLimitRouter__factory.ts +748 -0
  160. package/typechain-types/factories/IPMarketFactoryV3__factory.ts +217 -0
  161. package/typechain-types/factories/IPSwapAggregator__factory.ts +0 -40
  162. package/typechain-types/factories/LimitBackendHelper__factory.ts +232 -0
  163. package/typechain-types/factories/LimitRouterBase__factory.ts +1069 -0
  164. package/typechain-types/factories/PendleGovernanceProxy__factory.ts +97 -2
  165. package/typechain-types/factories/PendleLimitRouter__factory.ts +1139 -0
  166. package/typechain-types/factories/PendleMarketFactoryV3__factory.ts +714 -0
  167. package/typechain-types/factories/PendleMarketV3__factory.ts +1211 -0
  168. package/typechain-types/factories/PendlePoolDeployHelper__factory.ts +1 -1
  169. package/typechain-types/factories/PendleRouterStatic__factory.ts +1 -1
  170. package/typechain-types/factories/PendleRouterV4__factory.ts +1 -1
  171. package/typechain-types/factories/PendleSwap__factory.ts +1 -54
  172. package/typechain-types/factories/Reflector__factory.ts +1 -1
  173. package/typechain-types/hardhat.d.ts +18 -0
  174. package/typechain-types/index.ts +4 -0
@@ -0,0 +1,214 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "I1inchAggregationRouterV6",
4
+ "sourceName": "contracts/router/swap-aggregator/OneInchScaleHelper.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "executor",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "components": [
15
+ {
16
+ "internalType": "contract IERC20",
17
+ "name": "srcToken",
18
+ "type": "address"
19
+ },
20
+ {
21
+ "internalType": "contract IERC20",
22
+ "name": "dstToken",
23
+ "type": "address"
24
+ },
25
+ {
26
+ "internalType": "address payable",
27
+ "name": "srcReceiver",
28
+ "type": "address"
29
+ },
30
+ {
31
+ "internalType": "address payable",
32
+ "name": "dstReceiver",
33
+ "type": "address"
34
+ },
35
+ {
36
+ "internalType": "uint256",
37
+ "name": "amount",
38
+ "type": "uint256"
39
+ },
40
+ {
41
+ "internalType": "uint256",
42
+ "name": "minReturnAmount",
43
+ "type": "uint256"
44
+ },
45
+ {
46
+ "internalType": "uint256",
47
+ "name": "flags",
48
+ "type": "uint256"
49
+ }
50
+ ],
51
+ "internalType": "struct I1inchAggregationRouterV6.SwapDescription",
52
+ "name": "desc",
53
+ "type": "tuple"
54
+ },
55
+ {
56
+ "internalType": "bytes",
57
+ "name": "data",
58
+ "type": "bytes"
59
+ }
60
+ ],
61
+ "name": "swap",
62
+ "outputs": [
63
+ {
64
+ "internalType": "uint256",
65
+ "name": "returnAmount",
66
+ "type": "uint256"
67
+ },
68
+ {
69
+ "internalType": "uint256",
70
+ "name": "spentAmount",
71
+ "type": "uint256"
72
+ }
73
+ ],
74
+ "stateMutability": "payable",
75
+ "type": "function"
76
+ },
77
+ {
78
+ "inputs": [
79
+ {
80
+ "internalType": "I1inchCommonType.Address256",
81
+ "name": "to",
82
+ "type": "uint256"
83
+ },
84
+ {
85
+ "internalType": "I1inchCommonType.Address256",
86
+ "name": "token",
87
+ "type": "uint256"
88
+ },
89
+ {
90
+ "internalType": "uint256",
91
+ "name": "amount",
92
+ "type": "uint256"
93
+ },
94
+ {
95
+ "internalType": "uint256",
96
+ "name": "minReturn",
97
+ "type": "uint256"
98
+ },
99
+ {
100
+ "internalType": "I1inchCommonType.Address256",
101
+ "name": "dex",
102
+ "type": "uint256"
103
+ }
104
+ ],
105
+ "name": "unoswapTo",
106
+ "outputs": [
107
+ {
108
+ "internalType": "uint256",
109
+ "name": "returnAmount",
110
+ "type": "uint256"
111
+ }
112
+ ],
113
+ "stateMutability": "nonpayable",
114
+ "type": "function"
115
+ },
116
+ {
117
+ "inputs": [
118
+ {
119
+ "internalType": "I1inchCommonType.Address256",
120
+ "name": "to",
121
+ "type": "uint256"
122
+ },
123
+ {
124
+ "internalType": "I1inchCommonType.Address256",
125
+ "name": "token",
126
+ "type": "uint256"
127
+ },
128
+ {
129
+ "internalType": "uint256",
130
+ "name": "amount",
131
+ "type": "uint256"
132
+ },
133
+ {
134
+ "internalType": "uint256",
135
+ "name": "minReturn",
136
+ "type": "uint256"
137
+ },
138
+ {
139
+ "internalType": "I1inchCommonType.Address256",
140
+ "name": "dex",
141
+ "type": "uint256"
142
+ },
143
+ {
144
+ "internalType": "I1inchCommonType.Address256",
145
+ "name": "dex2",
146
+ "type": "uint256"
147
+ }
148
+ ],
149
+ "name": "unoswapTo2",
150
+ "outputs": [
151
+ {
152
+ "internalType": "uint256",
153
+ "name": "returnAmount",
154
+ "type": "uint256"
155
+ }
156
+ ],
157
+ "stateMutability": "nonpayable",
158
+ "type": "function"
159
+ },
160
+ {
161
+ "inputs": [
162
+ {
163
+ "internalType": "I1inchCommonType.Address256",
164
+ "name": "to",
165
+ "type": "uint256"
166
+ },
167
+ {
168
+ "internalType": "I1inchCommonType.Address256",
169
+ "name": "token",
170
+ "type": "uint256"
171
+ },
172
+ {
173
+ "internalType": "uint256",
174
+ "name": "amount",
175
+ "type": "uint256"
176
+ },
177
+ {
178
+ "internalType": "uint256",
179
+ "name": "minReturn",
180
+ "type": "uint256"
181
+ },
182
+ {
183
+ "internalType": "I1inchCommonType.Address256",
184
+ "name": "dex",
185
+ "type": "uint256"
186
+ },
187
+ {
188
+ "internalType": "I1inchCommonType.Address256",
189
+ "name": "dex2",
190
+ "type": "uint256"
191
+ },
192
+ {
193
+ "internalType": "I1inchCommonType.Address256",
194
+ "name": "dex3",
195
+ "type": "uint256"
196
+ }
197
+ ],
198
+ "name": "unoswapTo3",
199
+ "outputs": [
200
+ {
201
+ "internalType": "uint256",
202
+ "name": "returnAmount",
203
+ "type": "uint256"
204
+ }
205
+ ],
206
+ "stateMutability": "nonpayable",
207
+ "type": "function"
208
+ }
209
+ ],
210
+ "bytecode": "0x",
211
+ "deployedBytecode": "0x",
212
+ "linkReferences": {},
213
+ "deployedLinkReferences": {}
214
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../../build-info/7fa579b181813c7af64ef3c7fee573ab.json"
4
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "I1inchCommonType",
4
+ "sourceName": "contracts/router/swap-aggregator/OneInchScaleHelper.sol",
5
+ "abi": [],
6
+ "bytecode": "0x",
7
+ "deployedBytecode": "0x",
8
+ "linkReferences": {},
9
+ "deployedLinkReferences": {}
10
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../../build-info/7fa579b181813c7af64ef3c7fee573ab.json"
4
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "OneInchScaleHelper",
4
+ "sourceName": "contracts/router/swap-aggregator/OneInchScaleHelper.sol",
5
+ "abi": [],
6
+ "bytecode": "0x",
7
+ "deployedBytecode": "0x",
8
+ "linkReferences": {},
9
+ "deployedLinkReferences": {}
10
+ }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/f3456968fbf18b477661658955d3543f.json"
3
+ "buildInfo": "../../../../build-info/7fa579b181813c7af64ef3c7fee573ab.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/f3456968fbf18b477661658955d3543f.json"
3
+ "buildInfo": "../../../../build-info/7fa579b181813c7af64ef3c7fee573ab.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/f3456968fbf18b477661658955d3543f.json"
3
+ "buildInfo": "../../../../build-info/7fa579b181813c7af64ef3c7fee573ab.json"
4
4
  }
@@ -28,19 +28,6 @@
28
28
  "name": "SwapSingle",
29
29
  "type": "event"
30
30
  },
31
- {
32
- "inputs": [],
33
- "name": "KYBER_SCALING_HELPER",
34
- "outputs": [
35
- {
36
- "internalType": "address",
37
- "name": "",
38
- "type": "address"
39
- }
40
- ],
41
- "stateMutability": "view",
42
- "type": "function"
43
- },
44
31
  {
45
32
  "inputs": [
46
33
  {
@@ -86,53 +73,13 @@
86
73
  "stateMutability": "payable",
87
74
  "type": "function"
88
75
  },
89
- {
90
- "inputs": [
91
- {
92
- "internalType": "address[]",
93
- "name": "tokensIn",
94
- "type": "address[]"
95
- },
96
- {
97
- "components": [
98
- {
99
- "internalType": "enum SwapType",
100
- "name": "swapType",
101
- "type": "uint8"
102
- },
103
- {
104
- "internalType": "address",
105
- "name": "extRouter",
106
- "type": "address"
107
- },
108
- {
109
- "internalType": "bytes",
110
- "name": "extCalldata",
111
- "type": "bytes"
112
- },
113
- {
114
- "internalType": "bool",
115
- "name": "needScale",
116
- "type": "bool"
117
- }
118
- ],
119
- "internalType": "struct SwapData",
120
- "name": "data",
121
- "type": "tuple"
122
- }
123
- ],
124
- "name": "swapMultiOdos",
125
- "outputs": [],
126
- "stateMutability": "payable",
127
- "type": "function"
128
- },
129
76
  {
130
77
  "stateMutability": "payable",
131
78
  "type": "receive"
132
79
  }
133
80
  ],
134
- "bytecode": "0x60a0604052732f577a41bec1be1152aeea12e73b7391d15f655d60805234801561002857600080fd5b50608051610fb161004a60003960008181607e01526103930152610fb16000f3fe6080604052600436106100385760003560e01c80632bdb823c14610044578063359be188146100595780638930af571461006c57600080fd5b3661003f57005b600080fd5b610057610052366004610895565b6100bc565b005b6100576100673660046108ed565b6101ef565b34801561007857600080fd5b506100a07f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b6100d5836100d06040840160208501610979565b61029a565b61018e6100e860808301606084016109ab565b610133576100f960408301836109c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061015692505050565b6101566101436020840184610a15565b61015060408501856109c8565b8661035e565b6001600160a01b0385161561016c57600061016e565b835b61017e6040850160208601610979565b6001600160a01b031691906104a8565b506001600160a01b0383166101a66020830183610a15565b600a8111156101b7576101b7610a36565b6040518481527f1d8c50a59805451ff93bb2e438559a86b75386bcac2a591d3181d79e7e8346fd9060200160405180910390a3505050565b60005b8281101561023c5761023484848381811061020f5761020f610a4c565b90506020020160208101906102249190610979565b6100d06040850160208601610979565b6001016101f2565b5061029461024d60408301836109c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525034925061017e9150506040850160208601610979565b50505050565b6001600160a01b0382166102ac575050565b6102be60026001600160601b03610a78565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526001600160601b03929092169184169063dd62ed3e90604401602060405180830381865afa158015610317573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033b9190610a9e565b101561035a5761034d828260006104ce565b61035a82826000196104ce565b5050565b6060600185600a81111561037457610374610a36565b0361046d5760405163726d379760e11b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e4da6f2e906103cc90889088908890600401610ab7565b600060405180830381865afa1580156103e9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104119190810190610ba9565b92509050806104675760405162461bcd60e51b815260206004820181905260248201527f50656e646c65537761703a204b79626572207363616c696e67206661696c656460448201526064015b60405180910390fd5b506104a0565b600285600a81111561048157610481610a36565b03610498576104918484846105d8565b90506104a0565b6104a0610c3a565b949350505050565b60606104a0848484604051806060016040528060298152602001610f53602991396106ec565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b179052915160009283929087169161052a9190610c50565b6000604051808303816000865af19150503d8060008114610567576040519150601f19603f3d011682016040523d82523d6000602084013e61056c565b606091505b50915091508180156105965750805115806105965750808060200190518101906105969190610c6c565b6105d15760405162461bcd60e51b815260206004820152600c60248201526b5361666520417070726f766560a01b604482015260640161045e565b5050505050565b606060006105e96004828688610c89565b6105f291610cb3565b9050366000610604866004818a610c89565b90925090506001600160e01b03198316630ed8d73960e21b1461062957610629610c3a565b600080808061063a85870187610d58565b935093509350935083602001518985608001516106579190610e3e565b6106619190610e69565b6080850152602084015160a085015161067b908b90610e3e565b6106859190610e69565b60a08501526020840189905260405187906106aa908690869086908690602401610ea9565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529750505050505050509392505050565b60608247101561074d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161045e565b600080866001600160a01b031685876040516107699190610c50565b60006040518083038185875af1925050503d80600081146107a6576040519150601f19603f3d011682016040523d82523d6000602084013e6107ab565b606091505b50915091506107bc878383876107c7565b979650505050505050565b6060831561083657825160000361082f576001600160a01b0385163b61082f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161045e565b50816104a0565b6104a0838381511561084b5781518083602001fd5b8060405162461bcd60e51b815260040161045e9190610f3f565b6001600160a01b038116811461087a57600080fd5b50565b60006080828403121561088f57600080fd5b50919050565b6000806000606084860312156108aa57600080fd5b83356108b581610865565b92506020840135915060408401356001600160401b038111156108d757600080fd5b6108e38682870161087d565b9150509250925092565b60008060006040848603121561090257600080fd5b83356001600160401b038082111561091957600080fd5b818601915086601f83011261092d57600080fd5b81358181111561093c57600080fd5b8760208260051b850101111561095157600080fd5b60209283019550935090850135908082111561096c57600080fd5b506108e38682870161087d565b60006020828403121561098b57600080fd5b813561099681610865565b9392505050565b801515811461087a57600080fd5b6000602082840312156109bd57600080fd5b81356109968161099d565b6000808335601e198436030181126109df57600080fd5b8301803591506001600160401b038211156109f957600080fd5b602001915036819003821315610a0e57600080fd5b9250929050565b600060208284031215610a2757600080fd5b8135600b811061099657600080fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60006001600160601b0383811680610a9257610a92610a62565b92169190910492915050565b600060208284031215610ab057600080fd5b5051919050565b604081528260408201528284606083013760006060848301015260006060601f19601f8601168301019050826020830152949350505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715610b2857610b28610af0565b60405290565b604051601f8201601f191681016001600160401b0381118282101715610b5657610b56610af0565b604052919050565b60006001600160401b03821115610b7757610b77610af0565b50601f01601f191660200190565b60005b83811015610ba0578181015183820152602001610b88565b50506000910152565b60008060408385031215610bbc57600080fd5b8251610bc78161099d565b60208401519092506001600160401b03811115610be357600080fd5b8301601f81018513610bf457600080fd5b8051610c07610c0282610b5e565b610b2e565b818152866020838501011115610c1c57600080fd5b610c2d826020830160208601610b85565b8093505050509250929050565b634e487b7160e01b600052600160045260246000fd5b60008251610c62818460208701610b85565b9190910192915050565b600060208284031215610c7e57600080fd5b81516109968161099d565b60008085851115610c9957600080fd5b83861115610ca657600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015610cdb5780818660040360031b1b83161692505b505092915050565b600082601f830112610cf457600080fd5b8135610d02610c0282610b5e565b818152846020838601011115610d1757600080fd5b816020850160208301376000918101602001919091529392505050565b8035610d3f81610865565b919050565b803563ffffffff81168114610d3f57600080fd5b600080600080848603610140811215610d7057600080fd5b60e0811215610d7e57600080fd5b50610d87610b06565b8535610d9281610865565b8152602086810135908201526040860135610dac81610865565b60408201526060860135610dbf81610865565b806060830152506080860135608082015260a086013560a082015260c0860135610de881610865565b60c0820152935060e08501356001600160401b03811115610e0857600080fd5b610e1487828801610ce3565b935050610e246101008601610d34565b9150610e336101208601610d44565b905092959194509250565b8082028115828204841417610e6357634e487b7160e01b600052601160045260246000fd5b92915050565b600082610e7857610e78610a62565b500490565b60008151808452610e95816020860160208601610b85565b601f01601f19169290920160200192915050565b600061014060018060a01b03808851168452602088015160208501528060408901511660408501528060608901511660608501526080880151608085015260a088015160a08501528060c08901511660c0850152508060e0840152610f1081840187610e7d565b915050610f296101008301856001600160a01b03169052565b63ffffffff831661012083015295945050505050565b6020815260006109966020830184610e7d56fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564a2646970667358221220fc93563c01604b5ea2952b8818a1695317ea61dbda41e43183be0ca6758fe67464736f6c63430008170033",
135
- "deployedBytecode": "0x6080604052600436106100385760003560e01c80632bdb823c14610044578063359be188146100595780638930af571461006c57600080fd5b3661003f57005b600080fd5b610057610052366004610895565b6100bc565b005b6100576100673660046108ed565b6101ef565b34801561007857600080fd5b506100a07f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b6100d5836100d06040840160208501610979565b61029a565b61018e6100e860808301606084016109ab565b610133576100f960408301836109c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061015692505050565b6101566101436020840184610a15565b61015060408501856109c8565b8661035e565b6001600160a01b0385161561016c57600061016e565b835b61017e6040850160208601610979565b6001600160a01b031691906104a8565b506001600160a01b0383166101a66020830183610a15565b600a8111156101b7576101b7610a36565b6040518481527f1d8c50a59805451ff93bb2e438559a86b75386bcac2a591d3181d79e7e8346fd9060200160405180910390a3505050565b60005b8281101561023c5761023484848381811061020f5761020f610a4c565b90506020020160208101906102249190610979565b6100d06040850160208601610979565b6001016101f2565b5061029461024d60408301836109c8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525034925061017e9150506040850160208601610979565b50505050565b6001600160a01b0382166102ac575050565b6102be60026001600160601b03610a78565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526001600160601b03929092169184169063dd62ed3e90604401602060405180830381865afa158015610317573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033b9190610a9e565b101561035a5761034d828260006104ce565b61035a82826000196104ce565b5050565b6060600185600a81111561037457610374610a36565b0361046d5760405163726d379760e11b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e4da6f2e906103cc90889088908890600401610ab7565b600060405180830381865afa1580156103e9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104119190810190610ba9565b92509050806104675760405162461bcd60e51b815260206004820181905260248201527f50656e646c65537761703a204b79626572207363616c696e67206661696c656460448201526064015b60405180910390fd5b506104a0565b600285600a81111561048157610481610a36565b03610498576104918484846105d8565b90506104a0565b6104a0610c3a565b949350505050565b60606104a0848484604051806060016040528060298152602001610f53602991396106ec565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b179052915160009283929087169161052a9190610c50565b6000604051808303816000865af19150503d8060008114610567576040519150601f19603f3d011682016040523d82523d6000602084013e61056c565b606091505b50915091508180156105965750805115806105965750808060200190518101906105969190610c6c565b6105d15760405162461bcd60e51b815260206004820152600c60248201526b5361666520417070726f766560a01b604482015260640161045e565b5050505050565b606060006105e96004828688610c89565b6105f291610cb3565b9050366000610604866004818a610c89565b90925090506001600160e01b03198316630ed8d73960e21b1461062957610629610c3a565b600080808061063a85870187610d58565b935093509350935083602001518985608001516106579190610e3e565b6106619190610e69565b6080850152602084015160a085015161067b908b90610e3e565b6106859190610e69565b60a08501526020840189905260405187906106aa908690869086908690602401610ea9565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529750505050505050509392505050565b60608247101561074d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161045e565b600080866001600160a01b031685876040516107699190610c50565b60006040518083038185875af1925050503d80600081146107a6576040519150601f19603f3d011682016040523d82523d6000602084013e6107ab565b606091505b50915091506107bc878383876107c7565b979650505050505050565b6060831561083657825160000361082f576001600160a01b0385163b61082f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161045e565b50816104a0565b6104a0838381511561084b5781518083602001fd5b8060405162461bcd60e51b815260040161045e9190610f3f565b6001600160a01b038116811461087a57600080fd5b50565b60006080828403121561088f57600080fd5b50919050565b6000806000606084860312156108aa57600080fd5b83356108b581610865565b92506020840135915060408401356001600160401b038111156108d757600080fd5b6108e38682870161087d565b9150509250925092565b60008060006040848603121561090257600080fd5b83356001600160401b038082111561091957600080fd5b818601915086601f83011261092d57600080fd5b81358181111561093c57600080fd5b8760208260051b850101111561095157600080fd5b60209283019550935090850135908082111561096c57600080fd5b506108e38682870161087d565b60006020828403121561098b57600080fd5b813561099681610865565b9392505050565b801515811461087a57600080fd5b6000602082840312156109bd57600080fd5b81356109968161099d565b6000808335601e198436030181126109df57600080fd5b8301803591506001600160401b038211156109f957600080fd5b602001915036819003821315610a0e57600080fd5b9250929050565b600060208284031215610a2757600080fd5b8135600b811061099657600080fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60006001600160601b0383811680610a9257610a92610a62565b92169190910492915050565b600060208284031215610ab057600080fd5b5051919050565b604081528260408201528284606083013760006060848301015260006060601f19601f8601168301019050826020830152949350505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715610b2857610b28610af0565b60405290565b604051601f8201601f191681016001600160401b0381118282101715610b5657610b56610af0565b604052919050565b60006001600160401b03821115610b7757610b77610af0565b50601f01601f191660200190565b60005b83811015610ba0578181015183820152602001610b88565b50506000910152565b60008060408385031215610bbc57600080fd5b8251610bc78161099d565b60208401519092506001600160401b03811115610be357600080fd5b8301601f81018513610bf457600080fd5b8051610c07610c0282610b5e565b610b2e565b818152866020838501011115610c1c57600080fd5b610c2d826020830160208601610b85565b8093505050509250929050565b634e487b7160e01b600052600160045260246000fd5b60008251610c62818460208701610b85565b9190910192915050565b600060208284031215610c7e57600080fd5b81516109968161099d565b60008085851115610c9957600080fd5b83861115610ca657600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015610cdb5780818660040360031b1b83161692505b505092915050565b600082601f830112610cf457600080fd5b8135610d02610c0282610b5e565b818152846020838601011115610d1757600080fd5b816020850160208301376000918101602001919091529392505050565b8035610d3f81610865565b919050565b803563ffffffff81168114610d3f57600080fd5b600080600080848603610140811215610d7057600080fd5b60e0811215610d7e57600080fd5b50610d87610b06565b8535610d9281610865565b8152602086810135908201526040860135610dac81610865565b60408201526060860135610dbf81610865565b806060830152506080860135608082015260a086013560a082015260c0860135610de881610865565b60c0820152935060e08501356001600160401b03811115610e0857600080fd5b610e1487828801610ce3565b935050610e246101008601610d34565b9150610e336101208601610d44565b905092959194509250565b8082028115828204841417610e6357634e487b7160e01b600052601160045260246000fd5b92915050565b600082610e7857610e78610a62565b500490565b60008151808452610e95816020860160208601610b85565b601f01601f19169290920160200192915050565b600061014060018060a01b03808851168452602088015160208501528060408901511660408501528060608901511660608501526080880151608085015260a088015160a08501528060c08901511660c0850152508060e0840152610f1081840187610e7d565b915050610f296101008301856001600160a01b03169052565b63ffffffff831661012083015295945050505050565b6020815260006109966020830184610e7d56fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564a2646970667358221220fc93563c01604b5ea2952b8818a1695317ea61dbda41e43183be0ca6758fe67464736f6c63430008170033",
81
+ "bytecode": "0x608060405234801561001057600080fd5b50612520806100206000396000f3fe6080604052600436106100225760003560e01c80632bdb823c1461002e57600080fd5b3661002957005b600080fd5b61004161003c366004611162565b610043565b005b61004d8382610167565b61010661006060808301606084016111da565b6100ab5761007160408301836111f7565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506100ce92505050565b6100ce6100bb6020840184611244565b6100c860408501856111f7565b866101c7565b6001600160a01b038516156100e45760006100e6565b835b6100f66040850160208601611265565b6001600160a01b03169190610344565b506001600160a01b03831661011e6020830183611244565b600a81111561012f5761012f611282565b6040518481527f1d8c50a59805451ff93bb2e438559a86b75386bcac2a591d3181d79e7e8346fd9060200160405180910390a3505050565b6001600160a01b038216610179575050565b60046101886020830183611244565b600a81111561019957610199611282565b036101b3576101af826101aa610374565b610493565b5050565b6101af826101aa6040840160208501611265565b6060600185600a8111156101dd576101dd611282565b036102c15760405163726d379760e11b8152600090732f577a41bec1be1152aeea12e73b7391d15f655d9063e4da6f2e9061022090889088908890600401611298565b600060405180830381865afa15801561023d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102659190810190611419565b92509050806102bb5760405162461bcd60e51b815260206004820181905260248201527f50656e646c65537761703a204b79626572207363616c696e67206661696c656460448201526064015b60405180910390fd5b5061033c565b600285600a8111156102d5576102d5611282565b036102ec576102e5848484610524565b905061033c565b600485600a81111561030057610300611282565b03610310576102e5848484610638565b600585600a81111561032457610324611282565b03610334576102e5848484610997565b61033c611469565b949350505050565b606061036a8484846040518060600160405280602981526020016124c260299139610cb8565b90505b9392505050565b60004660010361039757507340aa958dd87fc8305b97f2ba922cddca374bcd7f90565b46600a036103b857507368d6b739d2020067d1e2f713b999da97e4d5481290565b466038036103d95750732c34a2fb1d0b4f55de51e1d0bdefaddce6b7cdd690565b4661a4b1036103fb57507370cbb871e8f30fc8ce23609e9e0ea87b6b222f5890565b466121050361041d57507357df6092665eb6058de53939612413ff4b09114e90565b466113880361043f57507357df6092665eb6058de53939612413ff4b09114e90565b60405162461bcd60e51b815260206004820152602360248201527f50656e646c65537761703a204f4b5820436861696e206e6f7420737570706f726044820152621d195960ea1b60648201526084016102b2565b604051636eb1769f60e11b81523060048201526001600160a01b038281166024830152600019919084169063dd62ed3e90604401602060405180830381865afa1580156104e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610508919061148c565b10156101af576101af6001600160a01b03831682600019610d93565b6060600061053560048286886114a5565b61053e916114cf565b9050366000610550866004818a6114a5565b90925090506001600160e01b03198316630ed8d73960e21b1461057557610575611469565b600080808061058685870187611564565b935093509350935083602001518985608001516105a3919061164a565b6105ad919061166f565b6080850152602084015160a08501516105c7908b9061164a565b6105d1919061166f565b60a08501526020840189905260405187906105f69086908690869086906024016116bd565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529750505050505050509392505050565b6060600061064960048286886114a5565b610652916114cf565b9050366000610664866004818a6114a5565b909250905063f2a0f1c560e01b6001600160e01b031984160161070f576000808080610692858701876117d8565b93509350935093508289836106a7919061164a565b6106b1919061166f565b915088925086848484846040516024016106ce949392919061186d565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152975061036d9650505050505050565b63fc4781a160e01b6001600160e01b03198416016107e1576000808080808061073a87890189611cdb565b955095509550955095509550610755838c8660400151610e4d565b925083604001518b856060015161076c919061164a565b610776919061166f565b606085015260408085018c905251899061079e90889088908890889088908890602401612035565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152995061036d98505050505050505050565b637beb3a5360e11b6001600160e01b031984160161088d5760008080808061080b868801886120a2565b94509450945094509450838a84610822919061164a565b61082c919061166f565b925089935087858585858560405160240161084b95949392919061210e565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152985061036d975050505050505050565b6319e3841760e21b6001600160e01b03198416016108b6576000808080610692858701876117d8565b6347f3d0f760e01b6001600160e01b0319841601610940576000808080806108e086880188612141565b945094509450945094506108f9838b8660400151610e4d565b925083604001518a8560600151610910919061164a565b61091a919061166f565b606085015260408085018b905251889061084b90879087908790879087906024016121d9565b60405162461bcd60e51b815260206004820152602660248201527f50656e646c65537761703a204f4b582073656c6563746f72206e6f74207375706044820152651c1bdc9d195960d21b60648201526084016102b2565b606060006109a860048286886114a5565b6109b1916114cf565b905060006109c285600481896114a5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293505050506001600160e01b03198216630e9b51bf60e11b01610a8457600080600080600085806020019051810190610a2d9190612235565b94509450945094509450828983610a44919061164a565b610a4e919061166f565b6040516024810187905260448101869052606481018b90526084810182905260a481018390528a9450909250879060c4016106ce565b631589222160e01b6001600160e01b0319831601610b195760008060008060008086806020019051810190610ab99190612275565b955095509550955095509550838a84610ad2919061164a565b610adc919061166f565b6040516024810188905260448101879052606481018c90526084810182905260a4810184905260c481018390528b9550909350889060e40161084b565b63042c7fd560e11b6001600160e01b0319831601610bba57600080600080600080600087806020019051810190610b5091906122bf565b9650965096509650965096509650848b85610b6b919061164a565b610b75919061166f565b6040516024810189905260448101889052606481018d90526084810182905260a4810185905260c4810184905260e481018390528c965090945089906101040161079e565b63f812dc8760e01b6001600160e01b0319831601610c7257600080600083806020019051810190610beb9190612313565b9250925092508160800151878360a00151610c06919061164a565b610c10919061166f565b60a0830152608082018790526040518590610c33908590859085906024016123ef565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152955061036d945050505050565b60405162461bcd60e51b815260206004820152601b60248201527a18b4b731b41d103ab739bab83837b93a32b21039b2b632b1ba37b960291b60448201526064016102b2565b606082471015610d195760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016102b2565b600080866001600160a01b03168587604051610d35919061245f565b60006040518083038185875af1925050503d8060008114610d72576040519150601f19603f3d011682016040523d82523d6000602084013e610d77565b606091505b5091509150610d8887838387610efd565b979650505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052610de48482610f74565b610e4757604080516001600160a01b038516602482015260006044808301919091528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052610e3d908590611018565b610e478482611018565b50505050565b606083516001600160401b03811115610e6857610e686112d1565b604051908082528060200260200182016040528015610e91578160200160208202803683370190505b50905060005b8451811015610ef5578284868381518110610eb457610eb461247b565b6020026020010151610ec6919061164a565b610ed0919061166f565b828281518110610ee257610ee261247b565b6020908102919091010152600101610e97565b509392505050565b60608315610f6a578251600003610f6357610f17856110f2565b610f635760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102b2565b508161033c565b61033c8383611101565b6000806000846001600160a01b031684604051610f91919061245f565b6000604051808303816000865af19150503d8060008114610fce576040519150601f19603f3d011682016040523d82523d6000602084013e610fd3565b606091505b5091509150818015610ffd575080511580610ffd575080806020019051810190610ffd9190612491565b801561100d575061100d856110f2565b925050505b92915050565b600061106d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661112b9092919063ffffffff16565b905080516000148061108e57508080602001905181019061108e9190612491565b6110ed5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102b2565b505050565b6001600160a01b03163b151590565b8151156111115781518083602001fd5b8060405162461bcd60e51b81526004016102b291906124ae565b606061036a8484600085610cb8565b6001600160a01b038116811461114f57600080fd5b50565b803561115d8161113a565b919050565b60008060006060848603121561117757600080fd5b83356111828161113a565b92506020840135915060408401356001600160401b038111156111a457600080fd5b8401608081870312156111b657600080fd5b809150509250925092565b801515811461114f57600080fd5b803561115d816111c1565b6000602082840312156111ec57600080fd5b813561036d816111c1565b6000808335601e1984360301811261120e57600080fd5b8301803591506001600160401b0382111561122857600080fd5b60200191503681900382131561123d57600080fd5b9250929050565b60006020828403121561125657600080fd5b8135600b811061036d57600080fd5b60006020828403121561127757600080fd5b813561036d8161113a565b634e487b7160e01b600052602160045260246000fd5b604081528260408201528284606083013760006060848301015260006060601f19601f8601168301019050826020830152949350505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715611309576113096112d1565b60405290565b60405160a081016001600160401b0381118282101715611309576113096112d1565b60405161014081016001600160401b0381118282101715611309576113096112d1565b604051601f8201601f191681016001600160401b038111828210171561137c5761137c6112d1565b604052919050565b60006001600160401b0382111561139d5761139d6112d1565b50601f01601f191660200190565b60005b838110156113c65781810151838201526020016113ae565b50506000910152565b600082601f8301126113e057600080fd5b81516113f36113ee82611384565b611354565b81815284602083860101111561140857600080fd5b61033c8260208301602087016113ab565b6000806040838503121561142c57600080fd5b8251611437816111c1565b60208401519092506001600160401b0381111561145357600080fd5b61145f858286016113cf565b9150509250929050565b634e487b7160e01b600052600160045260246000fd5b6001600160a01b03169052565b60006020828403121561149e57600080fd5b5051919050565b600080858511156114b557600080fd5b838611156114c257600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156114f75780818660040360031b1b83161692505b505092915050565b600082601f83011261151057600080fd5b813561151e6113ee82611384565b81815284602083860101111561153357600080fd5b816020850160208301376000918101602001919091529392505050565b803563ffffffff8116811461115d57600080fd5b60008060008084860361014081121561157c57600080fd5b60e081121561158a57600080fd5b506115936112e7565b853561159e8161113a565b81526020868101359082015260408601356115b88161113a565b604082015260608601356115cb8161113a565b806060830152506080860135608082015260a086013560a082015260c08601356115f48161113a565b60c0820152935060e08501356001600160401b0381111561161457600080fd5b611620878288016114ff565b9350506116306101008601611152565b915061163f6101208601611550565b905092959194509250565b808202811582820484141761101257634e487b7160e01b600052601160045260246000fd5b60008261168c57634e487b7160e01b600052601260045260246000fd5b500490565b600081518084526116a98160208601602086016113ab565b601f01601f19169290920160200192915050565b600061014060018060a01b03808851168452602088015160208501528060408901511660408501528060608901511660608501526080880151608085015260a088015160a08501528060c08901511660c0850152508060e084015261172481840187611691565b91505061173561010083018561147f565b63ffffffff831661012083015295945050505050565b60006001600160401b03821115611764576117646112d1565b5060051b60200190565b600082601f83011261177f57600080fd5b8135602061178f6113ee8361174b565b8083825260208201915060208460051b8701019350868411156117b157600080fd5b602086015b848110156117cd57803583529183019183016117b6565b509695505050505050565b600080600080608085870312156117ee57600080fd5b84359350602085013592506040850135915060608501356001600160401b0381111561181957600080fd5b6118258782880161176e565b91505092959194509250565b60008151808452602080850194506020840160005b8381101561186257815187529582019590820190600101611846565b509495945050505050565b8481528360208201528260408201526080606082015260006118926080830184611831565b9695505050505050565b600060a082840312156118ae57600080fd5b6118b661130f565b90508135815260208201356118ca8161113a565b8060208301525060408201356040820152606082013560608201526080820135608082015292915050565b600082601f83011261190657600080fd5b813560206119166113ee8361174b565b8083825260208201915060208460051b87010193508684111561193857600080fd5b602086015b848110156117cd5780356119508161113a565b835291830191830161193d565b600082601f83011261196e57600080fd5b8135602061197e6113ee8361174b565b82815260059290921b8401810191818101908684111561199d57600080fd5b8286015b848110156117cd5780356001600160401b038111156119c05760008081fd5b6119ce8986838b01016114ff565b8452509183019183016119a1565b600082601f8301126119ed57600080fd5b6119fa6113ee833561174b565b82358082526020808301929160051b850101851015611a1857600080fd5b602084015b6020853560051b860101811015611b96576001600160401b038135811015611a4457600080fd5b8135860187603f820112611a5757600080fd5b611a676113ee602083013561174b565b602082810135808352908201919060051b83016040018a811115611a8a57600080fd5b604084015b81811015611b7f578581351115611aa557600080fd5b8035850160a0818e03603f19011215611abd57600080fd5b611ac561130f565b8760408301351115611ad657600080fd5b611ae88e6040808501358501016118f5565b81528760608301351115611afb57600080fd5b611b0e8e604060608501358501016118f5565b60208201528760808301351115611b2457600080fd5b611b378e6040608085013585010161176e565b60408201528760a08301351115611b4d57600080fd5b611b608e604060a085013585010161195d565b606082015260c091909101356080820152845260209384019301611a8f565b505086525050602093840193919091019050611a1d565b50949350505050565b600082601f830112611bb057600080fd5b81356020611bc06113ee8361174b565b82815260059290921b84018101918181019086841115611bdf57600080fd5b8286015b848110156117cd5780356001600160401b0380821115611c035760008081fd5b90880190610140828b03601f1901811315611c1e5760008081fd5b611c26611331565b8784013581526040611c39818601611152565b898301526060611c4a818701611152565b8284015260809150611c5d828701611152565b818401525060a0808601358284015260c0915081860135818401525060e080860135828401526101009150818601358184015250610120611c9f8187016111cf565b83830152928501359284841115611cb857600091508182fd5b611cc68e8b868901016114ff565b90830152508652505050918301918301611be3565b6000806000806000806101408789031215611cf557600080fd5b863595506020870135611d078161113a565b9450611d16886040890161189c565b935060e08701356001600160401b0380821115611d3257600080fd5b611d3e8a838b0161176e565b9450610100890135915080821115611d5557600080fd5b611d618a838b016119dc565b9350610120890135915080821115611d7857600080fd5b50611d8589828a01611b9f565b9150509295509295509295565b805182526020808201516001600160a01b0316908301526040808201519083015260608082015190830152608090810151910152565b60008151808452602080850194506020840160005b838110156118625781516001600160a01b031687529582019590820190600101611ddd565b600082825180855260208501945060208160051b8301016020850160005b83811015611f4a57601f1985840381018952825180518086526020918201918087019190600582901b88010160005b82811015611f2a57858983030184528451805160a08452611e7360a0850182611dc8565b905060208201518482036020860152611e8c8282611dc8565b91505060408201518482036040860152611ea68282611831565b9150506060820151848203606086015281815180845260208401915060208160051b85010160208401935060005b82811015611f03578c868303018452611eee828651611691565b60209586019594909401939150600101611ed4565b50608095860151979095019690965250505060209586019594909401939150600101611e4f565b508097505050505050602082019150602088019750600181019050611e20565b50909695505050505050565b600082825180855260208086019550808260051b84010181860160005b8481101561202857601f1986840301895281516101408151855285820151611f9d8787018261147f565b50604080830151611fb08288018261147f565b5050606080830151611fc48288018261147f565b50506080828101519086015260a0808301519086015260c0808301519086015260e08083015190860152610100808301511515908601526101209182015191850181905261201481860183611691565b9a86019a9450505090830190600101611f73565b5090979650505050505050565b8681526001600160a01b038616602082015260006101406120596040840188611d92565b8060e084015261206b81840187611831565b90508281036101008401526120808186611e02565b90508281036101208401526120958185611f56565b9998505050505050505050565b600080600080600060a086880312156120ba57600080fd5b85359450602086013593506040860135925060608601356120da8161113a565b915060808601356001600160401b038111156120f557600080fd5b6121018882890161176e565b9150509295509295909350565b85815284602082015283604082015260018060a01b038316606082015260a060808201526000610d8860a0830184611831565b6000806000806000610120868803121561215a57600080fd5b8535945061216b876020880161189c565b935060c08601356001600160401b038082111561218757600080fd5b61219389838a0161176e565b945060e08801359150808211156121a957600080fd5b6121b589838a016119dc565b93506101008801359150808211156121cc57600080fd5b5061210188828901611b9f565b60006101208783526121ee6020840188611d92565b8060c084015261220081840187611831565b905082810360e08401526122148186611e02565b90508281036101008401526122298185611f56565b98975050505050505050565b600080600080600060a0868803121561224d57600080fd5b5050835160208501516040860151606087015160809097015192989197509594509092509050565b60008060008060008060c0878903121561228e57600080fd5b865195506020870151945060408701519350606087015192506080870151915060a087015190509295509295509295565b600080600080600080600060e0888a0312156122da57600080fd5b5050855160208701516040880151606089015160808a015160a08b015160c0909b0151949c939b50919990985090965094509092509050565b600080600083850361012081121561232a57600080fd5b84516123358161113a565b935060e0601f198201121561234957600080fd5b506123526112e7565b60208501516123608161113a565b815260408501516123708161113a565b602082015260608501516123838161113a565b604082015260808501516123968161113a565b606082015260a085810151608083015260c0808701519183019190915260e0860151908201526101008501519092506001600160401b038111156123d957600080fd5b6123e5868287016113cf565b9150509250925092565b600061012060018060a01b03808716845280865116602085015280602087015116604085015280604087015116606085015280606087015116608085015250608085015160a084015260a085015160c084015260c085015160e08401528061010084015261189281840185611691565b600082516124718184602087016113ab565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156124a357600080fd5b815161036d816111c1565b60208152600061036d602083018461169156fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564a2646970667358221220ac7a7580d75cd9ec6e0d8c9f1d5a987cd730e2b27c863ea80fdb12a97a6f581f64736f6c63430008170033",
82
+ "deployedBytecode": "0x6080604052600436106100225760003560e01c80632bdb823c1461002e57600080fd5b3661002957005b600080fd5b61004161003c366004611162565b610043565b005b61004d8382610167565b61010661006060808301606084016111da565b6100ab5761007160408301836111f7565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506100ce92505050565b6100ce6100bb6020840184611244565b6100c860408501856111f7565b866101c7565b6001600160a01b038516156100e45760006100e6565b835b6100f66040850160208601611265565b6001600160a01b03169190610344565b506001600160a01b03831661011e6020830183611244565b600a81111561012f5761012f611282565b6040518481527f1d8c50a59805451ff93bb2e438559a86b75386bcac2a591d3181d79e7e8346fd9060200160405180910390a3505050565b6001600160a01b038216610179575050565b60046101886020830183611244565b600a81111561019957610199611282565b036101b3576101af826101aa610374565b610493565b5050565b6101af826101aa6040840160208501611265565b6060600185600a8111156101dd576101dd611282565b036102c15760405163726d379760e11b8152600090732f577a41bec1be1152aeea12e73b7391d15f655d9063e4da6f2e9061022090889088908890600401611298565b600060405180830381865afa15801561023d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102659190810190611419565b92509050806102bb5760405162461bcd60e51b815260206004820181905260248201527f50656e646c65537761703a204b79626572207363616c696e67206661696c656460448201526064015b60405180910390fd5b5061033c565b600285600a8111156102d5576102d5611282565b036102ec576102e5848484610524565b905061033c565b600485600a81111561030057610300611282565b03610310576102e5848484610638565b600585600a81111561032457610324611282565b03610334576102e5848484610997565b61033c611469565b949350505050565b606061036a8484846040518060600160405280602981526020016124c260299139610cb8565b90505b9392505050565b60004660010361039757507340aa958dd87fc8305b97f2ba922cddca374bcd7f90565b46600a036103b857507368d6b739d2020067d1e2f713b999da97e4d5481290565b466038036103d95750732c34a2fb1d0b4f55de51e1d0bdefaddce6b7cdd690565b4661a4b1036103fb57507370cbb871e8f30fc8ce23609e9e0ea87b6b222f5890565b466121050361041d57507357df6092665eb6058de53939612413ff4b09114e90565b466113880361043f57507357df6092665eb6058de53939612413ff4b09114e90565b60405162461bcd60e51b815260206004820152602360248201527f50656e646c65537761703a204f4b5820436861696e206e6f7420737570706f726044820152621d195960ea1b60648201526084016102b2565b604051636eb1769f60e11b81523060048201526001600160a01b038281166024830152600019919084169063dd62ed3e90604401602060405180830381865afa1580156104e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610508919061148c565b10156101af576101af6001600160a01b03831682600019610d93565b6060600061053560048286886114a5565b61053e916114cf565b9050366000610550866004818a6114a5565b90925090506001600160e01b03198316630ed8d73960e21b1461057557610575611469565b600080808061058685870187611564565b935093509350935083602001518985608001516105a3919061164a565b6105ad919061166f565b6080850152602084015160a08501516105c7908b9061164a565b6105d1919061166f565b60a08501526020840189905260405187906105f69086908690869086906024016116bd565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529750505050505050509392505050565b6060600061064960048286886114a5565b610652916114cf565b9050366000610664866004818a6114a5565b909250905063f2a0f1c560e01b6001600160e01b031984160161070f576000808080610692858701876117d8565b93509350935093508289836106a7919061164a565b6106b1919061166f565b915088925086848484846040516024016106ce949392919061186d565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152975061036d9650505050505050565b63fc4781a160e01b6001600160e01b03198416016107e1576000808080808061073a87890189611cdb565b955095509550955095509550610755838c8660400151610e4d565b925083604001518b856060015161076c919061164a565b610776919061166f565b606085015260408085018c905251899061079e90889088908890889088908890602401612035565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152995061036d98505050505050505050565b637beb3a5360e11b6001600160e01b031984160161088d5760008080808061080b868801886120a2565b94509450945094509450838a84610822919061164a565b61082c919061166f565b925089935087858585858560405160240161084b95949392919061210e565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152985061036d975050505050505050565b6319e3841760e21b6001600160e01b03198416016108b6576000808080610692858701876117d8565b6347f3d0f760e01b6001600160e01b0319841601610940576000808080806108e086880188612141565b945094509450945094506108f9838b8660400151610e4d565b925083604001518a8560600151610910919061164a565b61091a919061166f565b606085015260408085018b905251889061084b90879087908790879087906024016121d9565b60405162461bcd60e51b815260206004820152602660248201527f50656e646c65537761703a204f4b582073656c6563746f72206e6f74207375706044820152651c1bdc9d195960d21b60648201526084016102b2565b606060006109a860048286886114a5565b6109b1916114cf565b905060006109c285600481896114a5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293505050506001600160e01b03198216630e9b51bf60e11b01610a8457600080600080600085806020019051810190610a2d9190612235565b94509450945094509450828983610a44919061164a565b610a4e919061166f565b6040516024810187905260448101869052606481018b90526084810182905260a481018390528a9450909250879060c4016106ce565b631589222160e01b6001600160e01b0319831601610b195760008060008060008086806020019051810190610ab99190612275565b955095509550955095509550838a84610ad2919061164a565b610adc919061166f565b6040516024810188905260448101879052606481018c90526084810182905260a4810184905260c481018390528b9550909350889060e40161084b565b63042c7fd560e11b6001600160e01b0319831601610bba57600080600080600080600087806020019051810190610b5091906122bf565b9650965096509650965096509650848b85610b6b919061164a565b610b75919061166f565b6040516024810189905260448101889052606481018d90526084810182905260a4810185905260c4810184905260e481018390528c965090945089906101040161079e565b63f812dc8760e01b6001600160e01b0319831601610c7257600080600083806020019051810190610beb9190612313565b9250925092508160800151878360a00151610c06919061164a565b610c10919061166f565b60a0830152608082018790526040518590610c33908590859085906024016123ef565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152955061036d945050505050565b60405162461bcd60e51b815260206004820152601b60248201527a18b4b731b41d103ab739bab83837b93a32b21039b2b632b1ba37b960291b60448201526064016102b2565b606082471015610d195760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016102b2565b600080866001600160a01b03168587604051610d35919061245f565b60006040518083038185875af1925050503d8060008114610d72576040519150601f19603f3d011682016040523d82523d6000602084013e610d77565b606091505b5091509150610d8887838387610efd565b979650505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052610de48482610f74565b610e4757604080516001600160a01b038516602482015260006044808301919091528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052610e3d908590611018565b610e478482611018565b50505050565b606083516001600160401b03811115610e6857610e686112d1565b604051908082528060200260200182016040528015610e91578160200160208202803683370190505b50905060005b8451811015610ef5578284868381518110610eb457610eb461247b565b6020026020010151610ec6919061164a565b610ed0919061166f565b828281518110610ee257610ee261247b565b6020908102919091010152600101610e97565b509392505050565b60608315610f6a578251600003610f6357610f17856110f2565b610f635760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102b2565b508161033c565b61033c8383611101565b6000806000846001600160a01b031684604051610f91919061245f565b6000604051808303816000865af19150503d8060008114610fce576040519150601f19603f3d011682016040523d82523d6000602084013e610fd3565b606091505b5091509150818015610ffd575080511580610ffd575080806020019051810190610ffd9190612491565b801561100d575061100d856110f2565b925050505b92915050565b600061106d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661112b9092919063ffffffff16565b905080516000148061108e57508080602001905181019061108e9190612491565b6110ed5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102b2565b505050565b6001600160a01b03163b151590565b8151156111115781518083602001fd5b8060405162461bcd60e51b81526004016102b291906124ae565b606061036a8484600085610cb8565b6001600160a01b038116811461114f57600080fd5b50565b803561115d8161113a565b919050565b60008060006060848603121561117757600080fd5b83356111828161113a565b92506020840135915060408401356001600160401b038111156111a457600080fd5b8401608081870312156111b657600080fd5b809150509250925092565b801515811461114f57600080fd5b803561115d816111c1565b6000602082840312156111ec57600080fd5b813561036d816111c1565b6000808335601e1984360301811261120e57600080fd5b8301803591506001600160401b0382111561122857600080fd5b60200191503681900382131561123d57600080fd5b9250929050565b60006020828403121561125657600080fd5b8135600b811061036d57600080fd5b60006020828403121561127757600080fd5b813561036d8161113a565b634e487b7160e01b600052602160045260246000fd5b604081528260408201528284606083013760006060848301015260006060601f19601f8601168301019050826020830152949350505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715611309576113096112d1565b60405290565b60405160a081016001600160401b0381118282101715611309576113096112d1565b60405161014081016001600160401b0381118282101715611309576113096112d1565b604051601f8201601f191681016001600160401b038111828210171561137c5761137c6112d1565b604052919050565b60006001600160401b0382111561139d5761139d6112d1565b50601f01601f191660200190565b60005b838110156113c65781810151838201526020016113ae565b50506000910152565b600082601f8301126113e057600080fd5b81516113f36113ee82611384565b611354565b81815284602083860101111561140857600080fd5b61033c8260208301602087016113ab565b6000806040838503121561142c57600080fd5b8251611437816111c1565b60208401519092506001600160401b0381111561145357600080fd5b61145f858286016113cf565b9150509250929050565b634e487b7160e01b600052600160045260246000fd5b6001600160a01b03169052565b60006020828403121561149e57600080fd5b5051919050565b600080858511156114b557600080fd5b838611156114c257600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156114f75780818660040360031b1b83161692505b505092915050565b600082601f83011261151057600080fd5b813561151e6113ee82611384565b81815284602083860101111561153357600080fd5b816020850160208301376000918101602001919091529392505050565b803563ffffffff8116811461115d57600080fd5b60008060008084860361014081121561157c57600080fd5b60e081121561158a57600080fd5b506115936112e7565b853561159e8161113a565b81526020868101359082015260408601356115b88161113a565b604082015260608601356115cb8161113a565b806060830152506080860135608082015260a086013560a082015260c08601356115f48161113a565b60c0820152935060e08501356001600160401b0381111561161457600080fd5b611620878288016114ff565b9350506116306101008601611152565b915061163f6101208601611550565b905092959194509250565b808202811582820484141761101257634e487b7160e01b600052601160045260246000fd5b60008261168c57634e487b7160e01b600052601260045260246000fd5b500490565b600081518084526116a98160208601602086016113ab565b601f01601f19169290920160200192915050565b600061014060018060a01b03808851168452602088015160208501528060408901511660408501528060608901511660608501526080880151608085015260a088015160a08501528060c08901511660c0850152508060e084015261172481840187611691565b91505061173561010083018561147f565b63ffffffff831661012083015295945050505050565b60006001600160401b03821115611764576117646112d1565b5060051b60200190565b600082601f83011261177f57600080fd5b8135602061178f6113ee8361174b565b8083825260208201915060208460051b8701019350868411156117b157600080fd5b602086015b848110156117cd57803583529183019183016117b6565b509695505050505050565b600080600080608085870312156117ee57600080fd5b84359350602085013592506040850135915060608501356001600160401b0381111561181957600080fd5b6118258782880161176e565b91505092959194509250565b60008151808452602080850194506020840160005b8381101561186257815187529582019590820190600101611846565b509495945050505050565b8481528360208201528260408201526080606082015260006118926080830184611831565b9695505050505050565b600060a082840312156118ae57600080fd5b6118b661130f565b90508135815260208201356118ca8161113a565b8060208301525060408201356040820152606082013560608201526080820135608082015292915050565b600082601f83011261190657600080fd5b813560206119166113ee8361174b565b8083825260208201915060208460051b87010193508684111561193857600080fd5b602086015b848110156117cd5780356119508161113a565b835291830191830161193d565b600082601f83011261196e57600080fd5b8135602061197e6113ee8361174b565b82815260059290921b8401810191818101908684111561199d57600080fd5b8286015b848110156117cd5780356001600160401b038111156119c05760008081fd5b6119ce8986838b01016114ff565b8452509183019183016119a1565b600082601f8301126119ed57600080fd5b6119fa6113ee833561174b565b82358082526020808301929160051b850101851015611a1857600080fd5b602084015b6020853560051b860101811015611b96576001600160401b038135811015611a4457600080fd5b8135860187603f820112611a5757600080fd5b611a676113ee602083013561174b565b602082810135808352908201919060051b83016040018a811115611a8a57600080fd5b604084015b81811015611b7f578581351115611aa557600080fd5b8035850160a0818e03603f19011215611abd57600080fd5b611ac561130f565b8760408301351115611ad657600080fd5b611ae88e6040808501358501016118f5565b81528760608301351115611afb57600080fd5b611b0e8e604060608501358501016118f5565b60208201528760808301351115611b2457600080fd5b611b378e6040608085013585010161176e565b60408201528760a08301351115611b4d57600080fd5b611b608e604060a085013585010161195d565b606082015260c091909101356080820152845260209384019301611a8f565b505086525050602093840193919091019050611a1d565b50949350505050565b600082601f830112611bb057600080fd5b81356020611bc06113ee8361174b565b82815260059290921b84018101918181019086841115611bdf57600080fd5b8286015b848110156117cd5780356001600160401b0380821115611c035760008081fd5b90880190610140828b03601f1901811315611c1e5760008081fd5b611c26611331565b8784013581526040611c39818601611152565b898301526060611c4a818701611152565b8284015260809150611c5d828701611152565b818401525060a0808601358284015260c0915081860135818401525060e080860135828401526101009150818601358184015250610120611c9f8187016111cf565b83830152928501359284841115611cb857600091508182fd5b611cc68e8b868901016114ff565b90830152508652505050918301918301611be3565b6000806000806000806101408789031215611cf557600080fd5b863595506020870135611d078161113a565b9450611d16886040890161189c565b935060e08701356001600160401b0380821115611d3257600080fd5b611d3e8a838b0161176e565b9450610100890135915080821115611d5557600080fd5b611d618a838b016119dc565b9350610120890135915080821115611d7857600080fd5b50611d8589828a01611b9f565b9150509295509295509295565b805182526020808201516001600160a01b0316908301526040808201519083015260608082015190830152608090810151910152565b60008151808452602080850194506020840160005b838110156118625781516001600160a01b031687529582019590820190600101611ddd565b600082825180855260208501945060208160051b8301016020850160005b83811015611f4a57601f1985840381018952825180518086526020918201918087019190600582901b88010160005b82811015611f2a57858983030184528451805160a08452611e7360a0850182611dc8565b905060208201518482036020860152611e8c8282611dc8565b91505060408201518482036040860152611ea68282611831565b9150506060820151848203606086015281815180845260208401915060208160051b85010160208401935060005b82811015611f03578c868303018452611eee828651611691565b60209586019594909401939150600101611ed4565b50608095860151979095019690965250505060209586019594909401939150600101611e4f565b508097505050505050602082019150602088019750600181019050611e20565b50909695505050505050565b600082825180855260208086019550808260051b84010181860160005b8481101561202857601f1986840301895281516101408151855285820151611f9d8787018261147f565b50604080830151611fb08288018261147f565b5050606080830151611fc48288018261147f565b50506080828101519086015260a0808301519086015260c0808301519086015260e08083015190860152610100808301511515908601526101209182015191850181905261201481860183611691565b9a86019a9450505090830190600101611f73565b5090979650505050505050565b8681526001600160a01b038616602082015260006101406120596040840188611d92565b8060e084015261206b81840187611831565b90508281036101008401526120808186611e02565b90508281036101208401526120958185611f56565b9998505050505050505050565b600080600080600060a086880312156120ba57600080fd5b85359450602086013593506040860135925060608601356120da8161113a565b915060808601356001600160401b038111156120f557600080fd5b6121018882890161176e565b9150509295509295909350565b85815284602082015283604082015260018060a01b038316606082015260a060808201526000610d8860a0830184611831565b6000806000806000610120868803121561215a57600080fd5b8535945061216b876020880161189c565b935060c08601356001600160401b038082111561218757600080fd5b61219389838a0161176e565b945060e08801359150808211156121a957600080fd5b6121b589838a016119dc565b93506101008801359150808211156121cc57600080fd5b5061210188828901611b9f565b60006101208783526121ee6020840188611d92565b8060c084015261220081840187611831565b905082810360e08401526122148186611e02565b90508281036101008401526122298185611f56565b98975050505050505050565b600080600080600060a0868803121561224d57600080fd5b5050835160208501516040860151606087015160809097015192989197509594509092509050565b60008060008060008060c0878903121561228e57600080fd5b865195506020870151945060408701519350606087015192506080870151915060a087015190509295509295509295565b600080600080600080600060e0888a0312156122da57600080fd5b5050855160208701516040880151606089015160808a015160a08b015160c0909b0151949c939b50919990985090965094509092509050565b600080600083850361012081121561232a57600080fd5b84516123358161113a565b935060e0601f198201121561234957600080fd5b506123526112e7565b60208501516123608161113a565b815260408501516123708161113a565b602082015260608501516123838161113a565b604082015260808501516123968161113a565b606082015260a085810151608083015260c0808701519183019190915260e0860151908201526101008501519092506001600160401b038111156123d957600080fd5b6123e5868287016113cf565b9150509250925092565b600061012060018060a01b03808716845280865116602085015280602087015116604085015280604087015116606085015280606087015116608085015250608085015160a084015260a085015160c084015260c085015160e08401528061010084015261189281840185611691565b600082516124718184602087016113ab565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156124a357600080fd5b815161036d816111c1565b60208152600061036d602083018461169156fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564a2646970667358221220ac7a7580d75cd9ec6e0d8c9f1d5a987cd730e2b27c863ea80fdb12a97a6f581f64736f6c63430008170033",
136
83
  "linkReferences": {},
137
84
  "deployedLinkReferences": {}
138
85
  }
@@ -11,4 +11,14 @@ interface IPGovernanceProxy {
11
11
  function pause(address[] calldata addrs) external;
12
12
 
13
13
  function aggregate(Call[] calldata calls) external payable returns (bytes[] memory rtnData);
14
+
15
+ event SetAllowedSelectors(bytes4[] selectors, bytes32 indexed role);
16
+
17
+ function ALICE() external view returns (bytes32);
18
+
19
+ function BOB() external view returns (bytes32);
20
+
21
+ function CHARLIE() external view returns (bytes32);
22
+
23
+ function allowedSelectors(bytes4 selector) external view returns (bytes32);
14
24
  }
@@ -89,6 +89,9 @@ interface IPLimitRouter is IPLimitOrderType {
89
89
  address taker
90
90
  );
91
91
 
92
+ // event added on 2/1/2025
93
+ event LnFeeRateRootsSet(address[] YTs, uint256[] lnFeeRateRoots);
94
+
92
95
  // @dev actualMaking, actualTaking are in the SY form
93
96
  function fill(
94
97
  FillOrderParams[] memory params,
@@ -118,6 +121,8 @@ interface IPLimitRouter is IPLimitOrderType {
118
121
 
119
122
  function simulate(address target, bytes calldata data) external payable;
120
123
 
124
+ function WNATIVE() external view returns (address);
125
+
121
126
  function _checkSig(
122
127
  Order memory order,
123
128
  bytes memory signature
@@ -28,4 +28,6 @@ interface IPMarketFactoryV3 {
28
28
  int256 initialAnchor,
29
29
  uint80 lnFeeRateRoot
30
30
  ) external returns (address market);
31
+
32
+ function setOverriddenFee(address router, address market, uint80 newFee) external;
31
33
  }
@@ -30,6 +30,8 @@ abstract contract LimitRouterBase is
30
30
  uint128 internal constant _ORDER_DOES_NOT_EXIST = 0;
31
31
  uint128 internal constant _ORDER_FILLED = 1;
32
32
  uint256 internal constant NEW_PRIME = 12421;
33
+ uint256 internal constant MAX_LN_FEE_RATE_ROOT = 48790164169432003; // ln(1.05)
34
+
33
35
  bytes private constant EMPTY_BYTES = abi.encode();
34
36
 
35
37
  address public feeRecipient;
@@ -37,7 +39,7 @@ abstract contract LimitRouterBase is
37
39
  // YT => lnFeeRateRoot // not to be accessed directly
38
40
  mapping(address => uint256) internal __lnFeeRateRoot;
39
41
 
40
- address private immutable WNATIVE;
42
+ address public immutable WNATIVE;
41
43
 
42
44
  mapping(bytes32 => OrderStatus) internal _status;
43
45
 
@@ -486,19 +488,13 @@ abstract contract LimitRouterBase is
486
488
  uint256 len = YTs.length;
487
489
  require(len == lnFeeRateRoots.length, "LOP: length mismatch");
488
490
 
489
- if (msg.sender == ownerHelper) {
490
- _requireFeeNotSet(YTs);
491
- }
492
-
493
491
  for (uint256 i = 0; i < len; i++) {
494
492
  require(lnFeeRateRoots[i] > 0, "LOP: zero fee not allowed");
493
+ require(lnFeeRateRoots[i] <= MAX_LN_FEE_RATE_ROOT, "LOP: fee too high");
494
+
495
495
  __lnFeeRateRoot[YTs[i]] = lnFeeRateRoots[i];
496
496
  }
497
- }
498
497
 
499
- function _requireFeeNotSet(address[] memory YTs) internal view {
500
- for (uint256 i = 0; i < YTs.length; i++) {
501
- require(__lnFeeRateRoot[YTs[i]] == 0, "LOP: fee already set");
502
- }
498
+ emit LnFeeRateRootsSet(YTs, lnFeeRateRoots);
503
499
  }
504
500
  }
@@ -13,13 +13,30 @@ import "@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol";
13
13
  contract PendleGovernanceProxy is AccessControlUpgradeable, UUPSUpgradeable, IPGovernanceProxy {
14
14
  bytes32 public constant GUARDIAN = keccak256("GUARDIAN");
15
15
 
16
+ bytes32 public constant ALICE = keccak256("ALICE");
17
+ bytes32 public constant BOB = keccak256("BOB");
18
+ bytes32 public constant CHARLIE = keccak256("CHARLIE");
19
+
20
+ mapping(bytes4 => bytes32) public allowedSelectors;
21
+
16
22
  modifier onlyGuardian() {
17
- require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender) || hasRole(GUARDIAN, msg.sender), "not authorized");
23
+ require(hasRole(GUARDIAN, msg.sender) || hasRole(DEFAULT_ADMIN_ROLE, msg.sender), "n/a");
18
24
  _;
19
25
  }
20
26
 
21
27
  modifier onlyAdmin() {
22
- require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender), "not authorized");
28
+ require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender), "n/a");
29
+ _;
30
+ }
31
+
32
+ modifier onlyHaveSomeRole() {
33
+ require(
34
+ hasRole(ALICE, msg.sender) ||
35
+ hasRole(BOB, msg.sender) ||
36
+ hasRole(CHARLIE, msg.sender) ||
37
+ hasRole(DEFAULT_ADMIN_ROLE, msg.sender),
38
+ "n/a"
39
+ );
23
40
  _;
24
41
  }
25
42
 
@@ -27,6 +44,19 @@ contract PendleGovernanceProxy is AccessControlUpgradeable, UUPSUpgradeable, IPG
27
44
  _disableInitializers();
28
45
  }
29
46
 
47
+ function aggregate(Call[] calldata calls) external payable onlyHaveSomeRole returns (bytes[] memory) {
48
+ bool isAdmin = hasRole(DEFAULT_ADMIN_ROLE, msg.sender);
49
+
50
+ if (!isAdmin) {
51
+ for (uint256 i = 0; i < calls.length; i++) {
52
+ bytes4 selector = bytes4(calls[i].callData[:4]);
53
+ require(hasRole(allowedSelectors[selector], msg.sender), "n/a");
54
+ }
55
+ }
56
+
57
+ return _aggregate(calls);
58
+ }
59
+
30
60
  /*///////////////////////////////////////////////////////////////
31
61
  PAUSING
32
62
  //////////////////////////////////////////////////////////////*/
@@ -45,14 +75,19 @@ contract PendleGovernanceProxy is AccessControlUpgradeable, UUPSUpgradeable, IPG
45
75
  ADMIN CALL
46
76
  //////////////////////////////////////////////////////////////*/
47
77
 
48
- function aggregate(
49
- IPGovernanceProxy.Call[] calldata calls
50
- ) external payable onlyAdmin returns (bytes[] memory rtnData) {
78
+ function setAllowedSelectors(bytes4[] calldata selectors, bytes32 role) external onlyAdmin {
79
+ for (uint256 i = 0; i < selectors.length; i++) {
80
+ allowedSelectors[selectors[i]] = role;
81
+ }
82
+ emit SetAllowedSelectors(selectors, role);
83
+ }
84
+
85
+ function _aggregate(Call[] calldata calls) internal returns (bytes[] memory rtnData) {
51
86
  uint256 length = calls.length;
52
87
  rtnData = new bytes[](length);
53
88
 
54
89
  Call calldata call;
55
- for (uint256 i = 0; i < length; ) {
90
+ for (uint256 i = 0; i < length; i++) {
56
91
  call = calls[i];
57
92
 
58
93
  (bool success, bytes memory resp) = call.target.call{value: call.value}(call.callData);
@@ -63,10 +98,6 @@ contract PendleGovernanceProxy is AccessControlUpgradeable, UUPSUpgradeable, IPG
63
98
  }
64
99
 
65
100
  rtnData[i] = resp;
66
-
67
- unchecked {
68
- ++i;
69
- }
70
101
  }
71
102
  }
72
103
 
@@ -34,6 +34,4 @@ interface IPSwapAggregator {
34
34
  event SwapSingle(SwapType indexed swapType, address indexed tokenIn, uint256 amountIn);
35
35
 
36
36
  function swap(address tokenIn, uint256 amountIn, SwapData calldata swapData) external payable;
37
-
38
- function swapMultiOdos(address[] calldata tokensIn, SwapData calldata swapData) external payable;
39
37
  }