viem 0.0.1-alpha.24 → 0.0.1-alpha.26

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 (510) hide show
  1. package/contract/package.json +4 -0
  2. package/dist/call-3476b8ee.d.ts +22 -0
  3. package/dist/{chain-afa13f5a.d.ts → chain-42de87e5.d.ts} +20 -14
  4. package/dist/{chain-e33d019b.d.ts → chain-b0cfb141.d.ts} +1 -1
  5. package/dist/chains.d.ts +20 -8
  6. package/dist/chains.js +46 -46
  7. package/dist/chains.mjs +1 -1
  8. package/dist/{chunk-3ARWEJ3G.mjs → chunk-BSAB6UH4.mjs} +18 -2
  9. package/dist/chunk-BSAB6UH4.mjs.map +1 -0
  10. package/dist/{chunk-4D5XG6XB.js → chunk-DSQO3E4F.js} +367 -429
  11. package/dist/chunk-DSQO3E4F.js.map +1 -0
  12. package/dist/{chunk-A2HXAZXC.js → chunk-LINNE4N4.js} +199 -161
  13. package/dist/chunk-LINNE4N4.js.map +1 -0
  14. package/dist/{chunk-LQVMDX5I.mjs → chunk-PRG3BBPZ.mjs} +397 -459
  15. package/dist/chunk-PRG3BBPZ.mjs.map +1 -0
  16. package/dist/{chunk-YQUC52RL.mjs → chunk-QSIX64VZ.mjs} +136 -98
  17. package/dist/chunk-QSIX64VZ.mjs.map +1 -0
  18. package/dist/{chunk-ZYSXBTBB.js → chunk-YTG4YXMB.js} +30 -14
  19. package/dist/chunk-YTG4YXMB.js.map +1 -0
  20. package/dist/{contract-70f4ddbe.d.ts → contract-9dd2f98b.d.ts} +44 -31
  21. package/dist/contract.d.ts +129 -0
  22. package/dist/contract.js +55 -0
  23. package/dist/{clients/index.js.map → contract.js.map} +0 -0
  24. package/dist/contract.mjs +55 -0
  25. package/dist/{clients/index.mjs.map → contract.mjs.map} +0 -0
  26. package/dist/{createClient-60e3ab98.d.ts → createClient-6689596e.d.ts} +11 -5
  27. package/dist/{createPublicClient-d3d12dc3.d.ts → createPublicClient-fd558574.d.ts} +3 -3
  28. package/dist/{createTestClient-5f4532c4.d.ts → createTestClient-bc1d9028.d.ts} +3 -3
  29. package/dist/{createWalletClient-9ec3df4f.d.ts → createWalletClient-4df88244.d.ts} +3 -3
  30. package/dist/decodeErrorResult-ac835649.d.ts +16 -0
  31. package/dist/{eip1193-9317a312.d.ts → eip1193-617a05ae.d.ts} +2 -2
  32. package/dist/ens.d.ts +82 -1
  33. package/dist/ens.js +208 -3
  34. package/dist/ens.js.map +1 -1
  35. package/dist/ens.mjs +209 -4
  36. package/dist/ens.mjs.map +1 -1
  37. package/dist/getAbiItem-d2e8bd76.d.ts +97 -0
  38. package/dist/index.d.ts +113 -180
  39. package/dist/index.js +259 -279
  40. package/dist/index.js.map +1 -1
  41. package/dist/index.mjs +267 -287
  42. package/dist/index.mjs.map +1 -1
  43. package/dist/public.d.ts +353 -10
  44. package/dist/public.js +3 -4
  45. package/dist/public.mjs +6 -7
  46. package/dist/readContract-c460f23a.d.ts +10 -0
  47. package/dist/rpc-8c10fc98.d.ts +119 -0
  48. package/dist/{sendTransaction-54a0d509.d.ts → sendTransaction-7ce442c0.d.ts} +3 -3
  49. package/dist/test.d.ts +160 -5
  50. package/dist/test.js +222 -18
  51. package/dist/test.js.map +1 -1
  52. package/dist/test.mjs +233 -29
  53. package/dist/test.mjs.map +1 -1
  54. package/dist/transactionReceipt-44dbf122.d.ts +26 -0
  55. package/dist/{transactionRequest-bdf57f7d.d.ts → transactionRequest-f437b4ba.d.ts} +1 -1
  56. package/dist/utils/index.d.ts +228 -21
  57. package/dist/utils/index.js +2 -6
  58. package/dist/utils/index.mjs +3 -7
  59. package/dist/wallet.d.ts +41 -7
  60. package/dist/wallet.js +3 -3
  61. package/dist/wallet.mjs +2 -2
  62. package/dist/watchEvent-569c9976.d.ts +41 -0
  63. package/dist/window.d.ts +2 -2
  64. package/ens/package.json +4 -0
  65. package/package.json +16 -12
  66. package/public/package.json +4 -0
  67. package/test/package.json +4 -0
  68. package/wallet/package.json +4 -0
  69. package/clients/package.json +0 -4
  70. package/dist/chunk-3ARWEJ3G.mjs.map +0 -1
  71. package/dist/chunk-4D5XG6XB.js.map +0 -1
  72. package/dist/chunk-6QTEW2BE.mjs +0 -260
  73. package/dist/chunk-6QTEW2BE.mjs.map +0 -1
  74. package/dist/chunk-A2HXAZXC.js.map +0 -1
  75. package/dist/chunk-KRPS5CIB.mjs +0 -256
  76. package/dist/chunk-KRPS5CIB.mjs.map +0 -1
  77. package/dist/chunk-LQVMDX5I.mjs.map +0 -1
  78. package/dist/chunk-N3IOPT3R.js +0 -256
  79. package/dist/chunk-N3IOPT3R.js.map +0 -1
  80. package/dist/chunk-YQUC52RL.mjs.map +0 -1
  81. package/dist/chunk-ZSTVHQ6J.js +0 -260
  82. package/dist/chunk-ZSTVHQ6J.js.map +0 -1
  83. package/dist/chunk-ZYSXBTBB.js.map +0 -1
  84. package/dist/clients/index.d.ts +0 -9
  85. package/dist/clients/index.js +0 -24
  86. package/dist/clients/index.mjs +0 -24
  87. package/dist/normalize-ef9240c0.d.ts +0 -33
  88. package/dist/parseGwei-492ab7dd.d.ts +0 -355
  89. package/dist/rpc-26932bae.d.ts +0 -61
  90. package/dist/stopImpersonatingAccount-c1a4b7e5.d.ts +0 -156
  91. package/dist/watchAsset-d59d6e35.d.ts +0 -38
  92. package/dist/watchPendingTransactions-ea21b31d.d.ts +0 -373
  93. package/dist/webSocket-775b4037.d.ts +0 -83
  94. package/src/_test/abis.ts +0 -1420
  95. package/src/_test/bench.ts +0 -15
  96. package/src/_test/constants.ts +0 -61
  97. package/src/_test/globalSetup.ts +0 -11
  98. package/src/_test/index.ts +0 -25
  99. package/src/_test/setup.ts +0 -8
  100. package/src/_test/utils.ts +0 -150
  101. package/src/actions/index.test.ts +0 -81
  102. package/src/actions/index.ts +0 -182
  103. package/src/actions/public/call.bench.ts +0 -48
  104. package/src/actions/public/call.test.ts +0 -99
  105. package/src/actions/public/call.ts +0 -97
  106. package/src/actions/public/createBlockFilter.bench.ts +0 -11
  107. package/src/actions/public/createBlockFilter.test.ts +0 -9
  108. package/src/actions/public/createBlockFilter.ts +0 -14
  109. package/src/actions/public/createContractEventFilter.test.ts +0 -119
  110. package/src/actions/public/createContractEventFilter.ts +0 -69
  111. package/src/actions/public/createEventFilter.test.ts +0 -245
  112. package/src/actions/public/createEventFilter.ts +0 -76
  113. package/src/actions/public/createPendingTransactionFilter.bench.ts +0 -11
  114. package/src/actions/public/createPendingTransactionFilter.test.ts +0 -9
  115. package/src/actions/public/createPendingTransactionFilter.ts +0 -14
  116. package/src/actions/public/deployContract.test.ts +0 -56
  117. package/src/actions/public/deployContract.ts +0 -38
  118. package/src/actions/public/estimateGas.bench.ts +0 -46
  119. package/src/actions/public/estimateGas.test.ts +0 -92
  120. package/src/actions/public/estimateGas.ts +0 -61
  121. package/src/actions/public/getBalance.test.ts +0 -83
  122. package/src/actions/public/getBalance.ts +0 -37
  123. package/src/actions/public/getBlock.bench.ts +0 -28
  124. package/src/actions/public/getBlock.test.ts +0 -575
  125. package/src/actions/public/getBlock.ts +0 -65
  126. package/src/actions/public/getBlockNumber.bench.ts +0 -28
  127. package/src/actions/public/getBlockNumber.test.ts +0 -27
  128. package/src/actions/public/getBlockNumber.ts +0 -32
  129. package/src/actions/public/getBlockTransactionCount.bench.ts +0 -15
  130. package/src/actions/public/getBlockTransactionCount.test.ts +0 -57
  131. package/src/actions/public/getBlockTransactionCount.ts +0 -52
  132. package/src/actions/public/getBytecode.test.ts +0 -27
  133. package/src/actions/public/getBytecode.ts +0 -32
  134. package/src/actions/public/getChainId.bench.ts +0 -15
  135. package/src/actions/public/getChainId.test.ts +0 -8
  136. package/src/actions/public/getChainId.ts +0 -7
  137. package/src/actions/public/getFeeHistory.bench.ts +0 -18
  138. package/src/actions/public/getFeeHistory.test.ts +0 -137
  139. package/src/actions/public/getFeeHistory.ts +0 -44
  140. package/src/actions/public/getFilterChanges.bench.ts +0 -13
  141. package/src/actions/public/getFilterChanges.test.ts +0 -189
  142. package/src/actions/public/getFilterChanges.ts +0 -23
  143. package/src/actions/public/getFilterLogs.test.ts +0 -104
  144. package/src/actions/public/getFilterLogs.ts +0 -20
  145. package/src/actions/public/getGasPrice.bench.ts +0 -19
  146. package/src/actions/public/getGasPrice.test.ts +0 -8
  147. package/src/actions/public/getGasPrice.ts +0 -15
  148. package/src/actions/public/getLogs.test.ts +0 -107
  149. package/src/actions/public/getLogs.ts +0 -84
  150. package/src/actions/public/getStorageAt.test.ts +0 -34
  151. package/src/actions/public/getStorageAt.ts +0 -32
  152. package/src/actions/public/getTransaction.bench.ts +0 -33
  153. package/src/actions/public/getTransaction.test.ts +0 -311
  154. package/src/actions/public/getTransaction.ts +0 -95
  155. package/src/actions/public/getTransactionConfirmations.test.ts +0 -69
  156. package/src/actions/public/getTransactionConfirmations.ts +0 -38
  157. package/src/actions/public/getTransactionCount.test.ts +0 -56
  158. package/src/actions/public/getTransactionCount.ts +0 -34
  159. package/src/actions/public/getTransactionReceipt.bench.ts +0 -33
  160. package/src/actions/public/getTransactionReceipt.test.ts +0 -179
  161. package/src/actions/public/getTransactionReceipt.ts +0 -34
  162. package/src/actions/public/index.test.ts +0 -44
  163. package/src/actions/public/index.ts +0 -152
  164. package/src/actions/public/multicall.test.ts +0 -452
  165. package/src/actions/public/multicall.ts +0 -103
  166. package/src/actions/public/readContract.test.ts +0 -328
  167. package/src/actions/public/readContract.ts +0 -73
  168. package/src/actions/public/simulateContract.bench.ts +0 -41
  169. package/src/actions/public/simulateContract.test.ts +0 -410
  170. package/src/actions/public/simulateContract.ts +0 -94
  171. package/src/actions/public/uninstallFilter.bench.ts +0 -13
  172. package/src/actions/public/uninstallFilter.test.ts +0 -65
  173. package/src/actions/public/uninstallFilter.ts +0 -17
  174. package/src/actions/public/waitForTransactionReceipt.test.ts +0 -322
  175. package/src/actions/public/waitForTransactionReceipt.ts +0 -170
  176. package/src/actions/public/watchBlockNumber.test.ts +0 -166
  177. package/src/actions/public/watchBlockNumber.ts +0 -79
  178. package/src/actions/public/watchBlocks.test.ts +0 -210
  179. package/src/actions/public/watchBlocks.ts +0 -114
  180. package/src/actions/public/watchContractEvent.test.ts +0 -305
  181. package/src/actions/public/watchContractEvent.ts +0 -108
  182. package/src/actions/public/watchEvent.test.ts +0 -195
  183. package/src/actions/public/watchEvent.ts +0 -95
  184. package/src/actions/public/watchPendingTransactions.test.ts +0 -116
  185. package/src/actions/public/watchPendingTransactions.ts +0 -74
  186. package/src/actions/test/dropTransaction.test.ts +0 -34
  187. package/src/actions/test/dropTransaction.ts +0 -17
  188. package/src/actions/test/getAutomine.test.ts +0 -14
  189. package/src/actions/test/getAutomine.ts +0 -11
  190. package/src/actions/test/getTxpoolContent.test.ts +0 -45
  191. package/src/actions/test/getTxpoolContent.ts +0 -7
  192. package/src/actions/test/getTxpoolStatus.test.ts +0 -41
  193. package/src/actions/test/getTxpoolStatus.ts +0 -12
  194. package/src/actions/test/impersonateAccount.test.ts +0 -26
  195. package/src/actions/test/impersonateAccount.ts +0 -17
  196. package/src/actions/test/increaseTime.test.ts +0 -18
  197. package/src/actions/test/increaseTime.ts +0 -17
  198. package/src/actions/test/index.test.ts +0 -38
  199. package/src/actions/test/index.ts +0 -77
  200. package/src/actions/test/inspectTxpool.test.ts +0 -50
  201. package/src/actions/test/inspectTxpool.ts +0 -7
  202. package/src/actions/test/mine.test.ts +0 -20
  203. package/src/actions/test/mine.ts +0 -16
  204. package/src/actions/test/removeBlockTimestampInterval.test.ts +0 -23
  205. package/src/actions/test/removeBlockTimestampInterval.ts +0 -7
  206. package/src/actions/test/reset.test.ts +0 -19
  207. package/src/actions/test/reset.ts +0 -18
  208. package/src/actions/test/revert.test.ts +0 -39
  209. package/src/actions/test/revert.ts +0 -14
  210. package/src/actions/test/sendUnsignedTransaction.test.ts +0 -52
  211. package/src/actions/test/sendUnsignedTransaction.ts +0 -19
  212. package/src/actions/test/setAutomine.test.ts +0 -14
  213. package/src/actions/test/setAutomine.ts +0 -8
  214. package/src/actions/test/setBalance.test.ts +0 -29
  215. package/src/actions/test/setBalance.ts +0 -20
  216. package/src/actions/test/setBlockGasLimit.test.ts +0 -21
  217. package/src/actions/test/setBlockGasLimit.ts +0 -17
  218. package/src/actions/test/setBlockTimestampInterval.test.ts +0 -23
  219. package/src/actions/test/setBlockTimestampInterval.ts +0 -16
  220. package/src/actions/test/setCode.test.ts +0 -26
  221. package/src/actions/test/setCode.ts +0 -19
  222. package/src/actions/test/setCoinbase.test.ts +0 -11
  223. package/src/actions/test/setCoinbase.ts +0 -17
  224. package/src/actions/test/setIntervalMining.test.ts +0 -30
  225. package/src/actions/test/setIntervalMining.ts +0 -16
  226. package/src/actions/test/setLoggingEnabled.test.ts +0 -10
  227. package/src/actions/test/setLoggingEnabled.ts +0 -8
  228. package/src/actions/test/setMinGasPrice.test.ts +0 -22
  229. package/src/actions/test/setMinGasPrice.ts +0 -17
  230. package/src/actions/test/setNextBlockBaseFeePerGas.test.ts +0 -23
  231. package/src/actions/test/setNextBlockBaseFeePerGas.ts +0 -17
  232. package/src/actions/test/setNextBlockTimestamp.test.ts +0 -19
  233. package/src/actions/test/setNextBlockTimestamp.ts +0 -17
  234. package/src/actions/test/setNonce.test.ts +0 -28
  235. package/src/actions/test/setNonce.ts +0 -20
  236. package/src/actions/test/setRpcUrl.test.ts +0 -9
  237. package/src/actions/test/setRpcUrl.ts +0 -8
  238. package/src/actions/test/setStorageAt.test.ts +0 -36
  239. package/src/actions/test/setStorageAt.ts +0 -26
  240. package/src/actions/test/snapshot.test.ts +0 -18
  241. package/src/actions/test/snapshot.ts +0 -7
  242. package/src/actions/test/stopImpersonatingAccount.test.ts +0 -29
  243. package/src/actions/test/stopImpersonatingAccount.ts +0 -17
  244. package/src/actions/wallet/addChain.test.ts +0 -14
  245. package/src/actions/wallet/addChain.ts +0 -21
  246. package/src/actions/wallet/getAccounts.test.ts +0 -22
  247. package/src/actions/wallet/getAccounts.ts +0 -7
  248. package/src/actions/wallet/getPermissions.test.ts +0 -24
  249. package/src/actions/wallet/getPermissions.ts +0 -9
  250. package/src/actions/wallet/index.test.ts +0 -20
  251. package/src/actions/wallet/index.ts +0 -30
  252. package/src/actions/wallet/requestAccounts.test.ts +0 -13
  253. package/src/actions/wallet/requestAccounts.ts +0 -7
  254. package/src/actions/wallet/requestPermissions.test.ts +0 -26
  255. package/src/actions/wallet/requestPermissions.ts +0 -19
  256. package/src/actions/wallet/sendTransaction.bench.ts +0 -57
  257. package/src/actions/wallet/sendTransaction.test.ts +0 -440
  258. package/src/actions/wallet/sendTransaction.ts +0 -77
  259. package/src/actions/wallet/signMessage.test.ts +0 -61
  260. package/src/actions/wallet/signMessage.ts +0 -35
  261. package/src/actions/wallet/switchChain.test.ts +0 -21
  262. package/src/actions/wallet/switchChain.ts +0 -19
  263. package/src/actions/wallet/watchAsset.test.ts +0 -40
  264. package/src/actions/wallet/watchAsset.ts +0 -16
  265. package/src/actions/wallet/writeContract.test.ts +0 -84
  266. package/src/actions/wallet/writeContract.ts +0 -47
  267. package/src/chains.test.ts +0 -1912
  268. package/src/chains.ts +0 -99
  269. package/src/clients/createClient.test.ts +0 -295
  270. package/src/clients/createClient.ts +0 -81
  271. package/src/clients/createPublicClient.test.ts +0 -165
  272. package/src/clients/createPublicClient.ts +0 -49
  273. package/src/clients/createTestClient.test.ts +0 -145
  274. package/src/clients/createTestClient.ts +0 -72
  275. package/src/clients/createWalletClient.test.ts +0 -121
  276. package/src/clients/createWalletClient.ts +0 -54
  277. package/src/clients/index.test.ts +0 -19
  278. package/src/clients/index.ts +0 -31
  279. package/src/clients/transports/createTransport.test.ts +0 -58
  280. package/src/clients/transports/createTransport.ts +0 -48
  281. package/src/clients/transports/custom.test.ts +0 -98
  282. package/src/clients/transports/custom.ts +0 -34
  283. package/src/clients/transports/fallback.test.ts +0 -257
  284. package/src/clients/transports/fallback.ts +0 -50
  285. package/src/clients/transports/http.test.ts +0 -109
  286. package/src/clients/transports/http.ts +0 -51
  287. package/src/clients/transports/index.test.ts +0 -15
  288. package/src/clients/transports/index.ts +0 -17
  289. package/src/clients/transports/webSocket.test.ts +0 -163
  290. package/src/clients/transports/webSocket.ts +0 -117
  291. package/src/constants/abis.test.ts +0 -53
  292. package/src/constants/abis.ts +0 -44
  293. package/src/constants/index.test.ts +0 -14
  294. package/src/constants/index.ts +0 -3
  295. package/src/constants/solidity.test.ts +0 -41
  296. package/src/constants/solidity.ts +0 -35
  297. package/src/ens.ts +0 -5
  298. package/src/errors/abi.test.ts +0 -81
  299. package/src/errors/abi.ts +0 -238
  300. package/src/errors/address.test.ts +0 -14
  301. package/src/errors/address.ts +0 -9
  302. package/src/errors/base.test.ts +0 -114
  303. package/src/errors/base.ts +0 -57
  304. package/src/errors/block.test.ts +0 -24
  305. package/src/errors/block.ts +0 -18
  306. package/src/errors/contract.test.ts +0 -233
  307. package/src/errors/contract.ts +0 -178
  308. package/src/errors/data.ts +0 -20
  309. package/src/errors/encoding.ts +0 -60
  310. package/src/errors/index.ts +0 -79
  311. package/src/errors/log.ts +0 -8
  312. package/src/errors/request.test.ts +0 -330
  313. package/src/errors/request.ts +0 -163
  314. package/src/errors/rpc.test.ts +0 -87
  315. package/src/errors/rpc.ts +0 -113
  316. package/src/errors/transaction.test.ts +0 -83
  317. package/src/errors/transaction.ts +0 -54
  318. package/src/errors/transport.test.ts +0 -11
  319. package/src/errors/transport.ts +0 -12
  320. package/src/index.test.ts +0 -263
  321. package/src/index.ts +0 -389
  322. package/src/public.ts +0 -80
  323. package/src/test.ts +0 -51
  324. package/src/types/block.ts +0 -71
  325. package/src/types/chain.ts +0 -6
  326. package/src/types/contract.ts +0 -393
  327. package/src/types/eip1193.ts +0 -1041
  328. package/src/types/fee.ts +0 -47
  329. package/src/types/filter.ts +0 -8
  330. package/src/types/formatter.ts +0 -23
  331. package/src/types/index.ts +0 -83
  332. package/src/types/log.ts +0 -22
  333. package/src/types/misc.ts +0 -5
  334. package/src/types/multicall.ts +0 -82
  335. package/src/types/rpc.ts +0 -35
  336. package/src/types/transaction.ts +0 -145
  337. package/src/types/utils.ts +0 -67
  338. package/src/types/window.ts +0 -9
  339. package/src/utils/abi/decodeAbi.bench.ts +0 -135
  340. package/src/utils/abi/decodeAbi.test.ts +0 -1614
  341. package/src/utils/abi/decodeAbi.ts +0 -300
  342. package/src/utils/abi/decodeDeployData.test.ts +0 -151
  343. package/src/utils/abi/decodeDeployData.ts +0 -44
  344. package/src/utils/abi/decodeErrorResult.test.ts +0 -230
  345. package/src/utils/abi/decodeErrorResult.ts +0 -45
  346. package/src/utils/abi/decodeFunctionData.test.ts +0 -139
  347. package/src/utils/abi/decodeFunctionData.ts +0 -29
  348. package/src/utils/abi/decodeFunctionResult.test.ts +0 -333
  349. package/src/utils/abi/decodeFunctionResult.ts +0 -57
  350. package/src/utils/abi/encodeAbi.bench.ts +0 -163
  351. package/src/utils/abi/encodeAbi.test.ts +0 -1447
  352. package/src/utils/abi/encodeAbi.ts +0 -273
  353. package/src/utils/abi/encodeDeployData.test.ts +0 -124
  354. package/src/utils/abi/encodeDeployData.ts +0 -40
  355. package/src/utils/abi/encodeErrorResult.test.ts +0 -192
  356. package/src/utils/abi/encodeErrorResult.ts +0 -47
  357. package/src/utils/abi/encodeEventTopics.test.ts +0 -345
  358. package/src/utils/abi/encodeEventTopics.ts +0 -75
  359. package/src/utils/abi/encodeFunctionData.test.ts +0 -138
  360. package/src/utils/abi/encodeFunctionData.ts +0 -45
  361. package/src/utils/abi/encodeFunctionResult.test.ts +0 -279
  362. package/src/utils/abi/encodeFunctionResult.ts +0 -41
  363. package/src/utils/abi/formatAbiItem.test.ts +0 -335
  364. package/src/utils/abi/formatAbiItem.ts +0 -41
  365. package/src/utils/abi/formatAbiItemWithArgs.test.ts +0 -291
  366. package/src/utils/abi/formatAbiItemWithArgs.ts +0 -27
  367. package/src/utils/abi/getAbiItem.test.ts +0 -547
  368. package/src/utils/abi/getAbiItem.ts +0 -95
  369. package/src/utils/abi/index.test.ts +0 -23
  370. package/src/utils/abi/index.ts +0 -42
  371. package/src/utils/address/getAddress.bench.ts +0 -22
  372. package/src/utils/address/getAddress.test.ts +0 -46
  373. package/src/utils/address/getAddress.ts +0 -28
  374. package/src/utils/address/getContractAddress.bench.ts +0 -20
  375. package/src/utils/address/getContractAddress.test.ts +0 -78
  376. package/src/utils/address/getContractAddress.ts +0 -59
  377. package/src/utils/address/index.test.ts +0 -17
  378. package/src/utils/address/index.ts +0 -16
  379. package/src/utils/address/isAddress.test.ts +0 -10
  380. package/src/utils/address/isAddress.ts +0 -10
  381. package/src/utils/address/isAddressEqual.test.ts +0 -55
  382. package/src/utils/address/isAddressEqual.ts +0 -6
  383. package/src/utils/buildRequest.test.ts +0 -365
  384. package/src/utils/buildRequest.ts +0 -45
  385. package/src/utils/chain.test.ts +0 -43
  386. package/src/utils/chain.ts +0 -8
  387. package/src/utils/contract/extractFunctionParts.test.ts +0 -109
  388. package/src/utils/contract/extractFunctionParts.ts +0 -27
  389. package/src/utils/contract/getContractError.test.ts +0 -282
  390. package/src/utils/contract/getContractError.ts +0 -58
  391. package/src/utils/contract/index.test.ts +0 -15
  392. package/src/utils/contract/index.ts +0 -8
  393. package/src/utils/data/concat.test.ts +0 -35
  394. package/src/utils/data/concat.ts +0 -34
  395. package/src/utils/data/index.test.ts +0 -23
  396. package/src/utils/data/index.ts +0 -13
  397. package/src/utils/data/isBytes.test.ts +0 -9
  398. package/src/utils/data/isBytes.ts +0 -7
  399. package/src/utils/data/isHex.test.ts +0 -13
  400. package/src/utils/data/isHex.ts +0 -5
  401. package/src/utils/data/pad.bench.ts +0 -30
  402. package/src/utils/data/pad.test.ts +0 -367
  403. package/src/utils/data/pad.ts +0 -53
  404. package/src/utils/data/size.test.ts +0 -18
  405. package/src/utils/data/size.ts +0 -13
  406. package/src/utils/data/slice.test.ts +0 -203
  407. package/src/utils/data/slice.ts +0 -60
  408. package/src/utils/data/trim.bench.ts +0 -34
  409. package/src/utils/data/trim.test.ts +0 -175
  410. package/src/utils/data/trim.ts +0 -33
  411. package/src/utils/encoding/decodeBytes.bench.ts +0 -40
  412. package/src/utils/encoding/decodeBytes.test.ts +0 -144
  413. package/src/utils/encoding/decodeBytes.ts +0 -63
  414. package/src/utils/encoding/decodeHex.bench.ts +0 -24
  415. package/src/utils/encoding/decodeHex.test.ts +0 -167
  416. package/src/utils/encoding/decodeHex.ts +0 -76
  417. package/src/utils/encoding/decodeRlp.bench.ts +0 -34
  418. package/src/utils/encoding/decodeRlp.test.ts +0 -350
  419. package/src/utils/encoding/decodeRlp.ts +0 -121
  420. package/src/utils/encoding/encodeBytes.bench.ts +0 -29
  421. package/src/utils/encoding/encodeBytes.test.ts +0 -676
  422. package/src/utils/encoding/encodeBytes.ts +0 -59
  423. package/src/utils/encoding/encodeHex.bench.ts +0 -49
  424. package/src/utils/encoding/encodeHex.test.ts +0 -232
  425. package/src/utils/encoding/encodeHex.ts +0 -104
  426. package/src/utils/encoding/encodeRlp.bench.ts +0 -54
  427. package/src/utils/encoding/encodeRlp.test.ts +0 -254
  428. package/src/utils/encoding/encodeRlp.ts +0 -48
  429. package/src/utils/encoding/index.test.ts +0 -32
  430. package/src/utils/encoding/index.ts +0 -36
  431. package/src/utils/ens/index.test.ts +0 -13
  432. package/src/utils/ens/index.ts +0 -5
  433. package/src/utils/ens/labelhash.test.ts +0 -55
  434. package/src/utils/ens/labelhash.ts +0 -16
  435. package/src/utils/ens/namehash.test.ts +0 -65
  436. package/src/utils/ens/namehash.ts +0 -28
  437. package/src/utils/ens/normalize.bench.ts +0 -14
  438. package/src/utils/ens/normalize.test.ts +0 -35
  439. package/src/utils/ens/normalize.ts +0 -14
  440. package/src/utils/formatters/block.bench.ts +0 -51
  441. package/src/utils/formatters/block.test.ts +0 -115
  442. package/src/utils/formatters/block.ts +0 -37
  443. package/src/utils/formatters/extract.test.ts +0 -14
  444. package/src/utils/formatters/extract.ts +0 -18
  445. package/src/utils/formatters/feeHistory.test.ts +0 -66
  446. package/src/utils/formatters/feeHistory.ts +0 -12
  447. package/src/utils/formatters/format.test.ts +0 -93
  448. package/src/utils/formatters/format.ts +0 -90
  449. package/src/utils/formatters/index.test.ts +0 -27
  450. package/src/utils/formatters/index.ts +0 -34
  451. package/src/utils/formatters/log.test.ts +0 -79
  452. package/src/utils/formatters/log.ts +0 -12
  453. package/src/utils/formatters/transaction.test.ts +0 -271
  454. package/src/utils/formatters/transaction.ts +0 -63
  455. package/src/utils/formatters/transactionReceipt.bench.ts +0 -73
  456. package/src/utils/formatters/transactionReceipt.test.ts +0 -151
  457. package/src/utils/formatters/transactionReceipt.ts +0 -63
  458. package/src/utils/formatters/transactionRequest.bench.ts +0 -29
  459. package/src/utils/formatters/transactionRequest.test.ts +0 -237
  460. package/src/utils/formatters/transactionRequest.ts +0 -56
  461. package/src/utils/hash/getEventSignature.test.ts +0 -61
  462. package/src/utils/hash/getEventSignature.ts +0 -4
  463. package/src/utils/hash/getFunctionSignature.test.ts +0 -22
  464. package/src/utils/hash/getFunctionSignature.ts +0 -5
  465. package/src/utils/hash/hashFunction.test.ts +0 -65
  466. package/src/utils/hash/hashFunction.ts +0 -12
  467. package/src/utils/hash/index.test.ts +0 -13
  468. package/src/utils/hash/index.ts +0 -5
  469. package/src/utils/hash/keccak256.test.ts +0 -59
  470. package/src/utils/hash/keccak256.ts +0 -21
  471. package/src/utils/index.test.ts +0 -113
  472. package/src/utils/index.ts +0 -141
  473. package/src/utils/observe.test.ts +0 -176
  474. package/src/utils/observe.ts +0 -66
  475. package/src/utils/poll.test.ts +0 -127
  476. package/src/utils/poll.ts +0 -42
  477. package/src/utils/promise/index.test.ts +0 -14
  478. package/src/utils/promise/index.ts +0 -3
  479. package/src/utils/promise/withCache.test.ts +0 -97
  480. package/src/utils/promise/withCache.ts +0 -73
  481. package/src/utils/promise/withRetry.test.ts +0 -231
  482. package/src/utils/promise/withRetry.ts +0 -61
  483. package/src/utils/promise/withTimeout.test.ts +0 -37
  484. package/src/utils/promise/withTimeout.ts +0 -39
  485. package/src/utils/rpc.test.ts +0 -989
  486. package/src/utils/rpc.ts +0 -292
  487. package/src/utils/stringify.test.ts +0 -13
  488. package/src/utils/stringify.ts +0 -5
  489. package/src/utils/uid.ts +0 -14
  490. package/src/utils/unit/constants.test.ts +0 -22
  491. package/src/utils/unit/constants.ts +0 -12
  492. package/src/utils/unit/formatEther.test.ts +0 -75
  493. package/src/utils/unit/formatEther.ts +0 -6
  494. package/src/utils/unit/formatGwei.test.ts +0 -32
  495. package/src/utils/unit/formatGwei.ts +0 -6
  496. package/src/utils/unit/formatUnit.bench.ts +0 -21
  497. package/src/utils/unit/formatUnit.test.ts +0 -40
  498. package/src/utils/unit/formatUnit.ts +0 -16
  499. package/src/utils/unit/index.test.ts +0 -28
  500. package/src/utils/unit/index.ts +0 -7
  501. package/src/utils/unit/parseEther.test.ts +0 -126
  502. package/src/utils/unit/parseEther.ts +0 -6
  503. package/src/utils/unit/parseGwei.test.ts +0 -50
  504. package/src/utils/unit/parseGwei.ts +0 -6
  505. package/src/utils/unit/parseUnit.bench.ts +0 -21
  506. package/src/utils/unit/parseUnit.test.ts +0 -54
  507. package/src/utils/unit/parseUnit.ts +0 -27
  508. package/src/utils/wait.ts +0 -3
  509. package/src/wallet.ts +0 -23
  510. package/src/window.ts +0 -1
@@ -1,22 +0,0 @@
1
- import { bench, describe } from 'vitest'
2
- import { utils } from 'ethers'
3
-
4
- import Web3 from 'web3'
5
-
6
- import { getAddress } from './getAddress'
7
-
8
- describe('Get Address', () => {
9
- bench('viem: getAddress', () => {
10
- getAddress('0xa5cc3c03994DB5b0d9A5eEdD10CabaB0813678AC')
11
- })
12
-
13
- bench('ethers: getAddress', () => {
14
- utils.getAddress('0xa5cc3c03994DB5b0d9A5eEdD10CabaB0813678AC')
15
- })
16
-
17
- bench('web3.js: checkAddressChecksum', () => {
18
- Web3.utils.checkAddressChecksum(
19
- '0xa5cc3c03994DB5b0d9A5eEdD10CabaB0813678AC',
20
- )
21
- })
22
- })
@@ -1,46 +0,0 @@
1
- import { describe, expect, test } from 'vitest'
2
-
3
- import { getAddress } from './getAddress'
4
-
5
- test('checksums address', () => {
6
- expect(
7
- getAddress('0xa5cc3c03994db5b0d9a5eEdD10Cabab0813678ac'),
8
- ).toMatchInlineSnapshot('"0xa5cc3c03994DB5b0d9A5eEdD10CabaB0813678AC"')
9
- expect(
10
- getAddress('0xa0cf798816d4b9b9866b5330eea46a18382f251e'),
11
- ).toMatchInlineSnapshot('"0xA0Cf798816D4b9b9866b5330EEa46a18382f251e"')
12
- expect(
13
- getAddress('0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266'),
14
- ).toMatchInlineSnapshot('"0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"')
15
- expect(
16
- getAddress('0x70997970c51812dc3a010c7d01b50e0d17dc79c8'),
17
- ).toMatchInlineSnapshot('"0x70997970C51812dc3A010C7d01b50e0d17dc79C8"')
18
- expect(
19
- getAddress('0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc'),
20
- ).toMatchInlineSnapshot('"0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC"')
21
- expect(
22
- getAddress('0x90f79bf6eb2c4f870365e785982e1f101e93b906'),
23
- ).toMatchInlineSnapshot('"0x90F79bf6EB2c4f870365E785982E1f101E93b906"')
24
- expect(
25
- getAddress('0x15d34aaf54267db7d7c367839aaf71a00a2c6a65'),
26
- ).toMatchInlineSnapshot('"0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65"')
27
- })
28
-
29
- describe('errors', () => {
30
- test('invalid address', () => {
31
- expect(() =>
32
- getAddress('0xa5cc3c03994db5b0d9a5eEdD10Cabab0813678az'),
33
- ).toThrowErrorMatchingInlineSnapshot(`
34
- "Address \\"0xa5cc3c03994db5b0d9a5eEdD10Cabab0813678az\\" is invalid.
35
-
36
- Version: viem@1.0.2"
37
- `)
38
- expect(() =>
39
- getAddress('0xa5cc3c03994db5b0d9a5eEdD10Cabab0813678aff'),
40
- ).toThrowErrorMatchingInlineSnapshot(`
41
- "Address \\"0xa5cc3c03994db5b0d9a5eEdD10Cabab0813678aff\\" is invalid.
42
-
43
- Version: viem@1.0.2"
44
- `)
45
- })
46
- })
@@ -1,28 +0,0 @@
1
- import { InvalidAddressError } from '../../errors'
2
- import type { Address } from '../../types'
3
- import { stringToBytes } from '../encoding'
4
- import { keccak256 } from '../hash'
5
-
6
- const addressRegex = /^(0x)?[a-fA-F0-9]{40}$/
7
-
8
- export function checksumAddress(address_: Address): Address {
9
- const hexAddress = address_.substring(2).toLowerCase()
10
- const hash = keccak256(stringToBytes(hexAddress), 'bytes')
11
-
12
- let address = hexAddress.split('')
13
- for (let i = 0; i < 40; i += 2) {
14
- if (hash?.[i >> 1] >> 4 >= 8 && address[i]) {
15
- address[i] = address[i].toUpperCase()
16
- }
17
- if ((hash[i >> 1] & 0x0f) >= 8 && address[i + 1]) {
18
- address[i + 1] = address[i + 1].toUpperCase()
19
- }
20
- }
21
-
22
- return `0x${address.join('')}`
23
- }
24
-
25
- export function getAddress(address: Address) {
26
- if (!addressRegex.test(address)) throw new InvalidAddressError({ address })
27
- return checksumAddress(address)
28
- }
@@ -1,20 +0,0 @@
1
- import { bench, describe } from 'vitest'
2
- import { utils } from 'ethers'
3
-
4
- import { getContractAddress } from './getContractAddress'
5
-
6
- describe('Get Contract Address (CREATE)', () => {
7
- bench('viem: getContractAddress', () => {
8
- getContractAddress({
9
- from: '0xc961145a54C96E3aE9bAA048c4F4D6b04C13916b',
10
- nonce: 69420n,
11
- })
12
- })
13
-
14
- bench('ethers: getContractAddress', () => {
15
- utils.getContractAddress({
16
- from: '0xc961145a54C96E3aE9bAA048c4F4D6b04C13916b',
17
- nonce: 69420n,
18
- })
19
- })
20
- })
@@ -1,78 +0,0 @@
1
- import { expect, test } from 'vitest'
2
-
3
- import { encodeBytes, encodeHex } from '../encoding'
4
-
5
- import {
6
- getContractAddress,
7
- getCreate2Address,
8
- getCreateAddress,
9
- } from './getContractAddress'
10
-
11
- test('gets contract address (CREATE)', () => {
12
- expect(
13
- getContractAddress({
14
- from: '0x1a1e021a302c237453d3d45c7b82b19ceeb7e2e6',
15
- nonce: 0n,
16
- }),
17
- ).toMatchInlineSnapshot('"0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2"')
18
-
19
- expect(
20
- getContractAddress({
21
- from: '0xc961145a54C96E3aE9bAA048c4F4D6b04C13916b',
22
- nonce: 5n,
23
- }),
24
- ).toMatchInlineSnapshot('"0x30b3F7E5B61d6343Af9B4f98Ed92c003d8fc600F"')
25
-
26
- expect(
27
- getContractAddress({
28
- from: '0xc961145a54C96E3aE9bAA048c4F4D6b04C13916b',
29
- nonce: 69420n,
30
- }),
31
- ).toMatchInlineSnapshot('"0xDf2e056f7062790dF95A472f691670717Ae7b1B6"')
32
-
33
- expect(
34
- getCreateAddress({
35
- from: '0x1a1e021a302c237453d3d45c7b82b19ceeb7e2e6',
36
- nonce: 0n,
37
- }),
38
- ).toMatchInlineSnapshot('"0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2"')
39
- })
40
-
41
- test('gets contract address (CREATE2)', () => {
42
- expect(
43
- getContractAddress({
44
- from: '0x1a1e021a302c237453d3d45c7b82b19ceeb7e2e6',
45
- bytecode: '0x6394198df16000526103ff60206004601c335afa6040516060f3',
46
- salt: encodeBytes('hello world'),
47
- opcode: 'CREATE2',
48
- }),
49
- ).toMatchInlineSnapshot('"0x59fbB593ABe27Cb193b6ee5C5DC7bbde312290aB"')
50
- expect(
51
- getContractAddress({
52
- from: '0x1a1e021a302c237453d3d45c7b82b19ceeb7e2e6',
53
- bytecode: encodeBytes(
54
- '0x6394198df16000526103ff60206004601c335afa6040516060f3',
55
- ),
56
- salt: encodeBytes('hello world'),
57
- opcode: 'CREATE2',
58
- }),
59
- ).toMatchInlineSnapshot('"0x59fbB593ABe27Cb193b6ee5C5DC7bbde312290aB"')
60
- expect(
61
- getCreate2Address({
62
- from: '0x1a1e021a302c237453d3d45c7b82b19ceeb7e2e6',
63
- bytecode: encodeBytes(
64
- '0x6394198df16000526103ff60206004601c335afa6040516060f3',
65
- ),
66
- salt: encodeHex('hello world'),
67
- }),
68
- ).toMatchInlineSnapshot('"0x59fbB593ABe27Cb193b6ee5C5DC7bbde312290aB"')
69
- expect(
70
- getContractAddress({
71
- from: '0x1a1e021a302c237453d3d45c7b82b19ceeb7e2e6',
72
- bytecode:
73
- '0x60096102c0818152682bb0b93430b6b6b2b960b91b6102e0526080908152600c6103008181526b28bab0b93a32b939ba30b33360a11b6103205260a05260046103408181526313585d5b60e21b6103605260c052610380818152634d61636560e01b6103a05260e0526103c08181526321b63ab160e11b6103e052610100526006610400908152654b6174616e6160d01b61042052610120526008610440818152672330b631b434b7b760c11b61046052610140526104808181526729b1b4b6b4ba30b960c11b6104a05261016052600a6104c081815269131bdb99c814dddbdc9960b21b6104e05261018052600b6105009081526a14da1bdc9d0814dddbdc9960aa1b610520526101a0526105408181526911da1bdcdd0815d85b9960b21b610560526101c0526105809081526911dc985d994815d85b9960b21b6105a0526101e0526105c085815268109bdb994815d85b9960ba1b6105e052610200526106008281526315d85b9960e21b6106205261022052610640908152674772696d6f69726560c01b6106605261024052610680938452684368726f6e69636c6560b81b6106a052610260939093526106c083815263546f6d6560e01b6106e0526102805261074060405261070092835263426f6f6b60e01b610720526102a092909252620001ef9190601262001d24565b506040805161022081018252600b6101e082019081526a446976696e6520526f626560a81b61020083015281528151808301835260098082526853696c6b20526f626560b81b6020838101919091528084019290925283518085018552600a808252694c696e656e20526f626560b01b8285015284860191909152845180860186526004815263526f626560e01b81850152606085015284518086018652600581526414da1a5c9d60da1b818501526080850152845180860186528181526944656d6f6e204875736b60b01b8185015260a085015284518086018652601081526f223930b3b7b739b5b4b71020b936b7b960811b8185015260c085015284518086018652601581527f53747564646564204c6561746865722041726d6f7200000000000000000000008185015260e08501528451808601865260128152712430b932102632b0ba3432b91020b936b7b960711b8185015261010085015284518086018652600d8082526c2632b0ba3432b91020b936b7b960991b8286015261012086019190915285518087018752600f8082526e486f6c79204368657374706c61746560881b828701526101408701919091528651808801885260118152704f726e617465204368657374706c61746560781b818701526101608701528651808801885283815269141b185d194813585a5b60b21b81870152610180870152865180880188529283526910da185a5b8813585a5b60b21b838601526101a0860192909252855180870190965291855268149a5b99c813585a5b60ba1b928501929092526101c08301939093526200044892919062001d88565b50604051806101e001604052806040518060400160405280600c81526020016b416e6369656e742048656c6d60a01b81525081526020016040518060400160405280600b81526020016a4f726e6174652048656c6d60a81b81525081526020016040518060400160405280600a81526020016947726561742048656c6d60b01b81525081526020016040518060400160405280600981526020016846756c6c2048656c6d60b81b81525081526020016040518060400160405280600481526020016348656c6d60e01b81525081526020016040518060400160405280600b81526020016a2232b6b7b71021b937bbb760a91b81525081526020016040518060400160405280600e81526020016d223930b3b7b713b99021b937bbb760911b8152508152602001604051806040016040528060078152602001660576172204361760cc1b81525081526020016040518060400160405280600b81526020016a04c656174686572204361760ac1b81525081526020016040518060400160405280600381526020016204361760ec1b81525081526020016040518060400160405280600581526020016421b937bbb760d91b81525081526020016040518060400160405280600b81526020016a111a5d9a5b9948121bdbd960aa1b81525081526020016040518060400160405280600981526020016814da5b1ac8121bdbd960ba1b81525081526020016040518060400160405280600a815260200169131a5b995b88121bdbd960b21b815250815260200160405180604001604052806004815260200163121bdbd960e21b815250815250600e90600f620006aa92919062001d88565b506040805161022081018252600b6101e082018181526a13dc9b985d194810995b1d60aa1b610200840152825282518084018452600881526715d85c8810995b1d60c21b60208281019190915280840191909152835180850185529182526a141b185d19590810995b1d60aa1b82820152828401919091528251808401845260098082526813595cda0810995b1d60ba1b82840152606084019190915283518085018552600a808252691219585d9e4810995b1d60b21b82850152608085019190915284518086018652600e81526d11195b5bdb9a1a59194810995b1d60921b8185015260a085015284518086018652600f8082526e111c9859dbdb9cdada5b8810995b1d608a1b8286015260c086019190915285518087018752601481527f53747564646564204c6561746865722042656c740000000000000000000000008186015260e086015285518087018752601181527012185c99081319585d1a195c8810995b1d607a1b8186015261010086015285518087018752600c81526b1319585d1a195c8810995b1d60a21b81860152610120860152855180870187528181526e084e4d2ced0e8e6d2d8d640a6c2e6d608b1b8186015261014086015285518087018752838152680a6d2d8d640a6c2e6d60bb1b8186015261016086015285518087018752928352680aededed840a6c2e6d60bb1b838501526101808501929092528451808601865290815269098d2dccadc40a6c2e6d60b31b818401526101a0840152835180850190945260048452630a6c2e6d60e31b918401919091526101c08201929092526200090191908162001d88565b506040805161022081018252600c6101e082019081526b486f6c79204772656176657360a01b610200830152815281518083018352600e81526d4f726e617465204772656176657360901b602082810191909152808301919091528251808401845260078152664772656176657360c81b818301528284015282518084018452600b8082526a436861696e20426f6f747360a81b828401526060840191909152835180850185528181526a486561767920426f6f747360a81b81840152608084015283518085018552600f8082526e44656d6f6e6869646520426f6f747360881b8285015260a08501919091528451808601865260108082526f447261676f6e736b696e20426f6f747360801b8286015260c086019190915285518087018752601581527f53747564646564204c65617468657220426f6f747300000000000000000000008186015260e086015285518087018752601281527148617264204c65617468657220426f6f747360701b8186015261010086015285518087018752600d8082526c4c65617468657220426f6f747360981b82870152610120870191909152865180880188528381526e446976696e6520536c69707065727360881b81870152610140870152865180880188529081526c53696c6b20536c69707065727360981b8186015261016086015285518087018752600a815269576f6f6c2053686f657360b01b81860152610180860152855180870187529283526a4c696e656e2053686f657360a81b838501526101a08501929092528451808601909552600585526453686f657360d81b928501929092526101c083019390935262000b6b92919062001d88565b506040805161022081018252600e6101e082018181526d486f6c79204761756e746c65747360901b610200840152825282518084018452601081526f4f726e617465204761756e746c65747360801b602082810191909152808401919091528351808501855260098152684761756e746c65747360b81b818301528385015283518085018552600c8082526b436861696e20476c6f76657360a01b828401526060850191909152845180860186528181526b486561767920476c6f76657360a01b81840152608085015284518086018652600d8082526c44656d6f6e27732048616e647360981b8285015260a086019190915285518087018752601180825270447261676f6e736b696e20476c6f76657360781b8286015260c087019190915286518088018852601681527f53747564646564204c65617468657220476c6f766573000000000000000000008186015260e087015286518088018852601381527f48617264204c65617468657220476c6f7665730000000000000000000000000081860152610100870152865180880188529485526d4c65617468657220476c6f76657360901b85850152610120860194909452855180870187529081526c446976696e6520476c6f76657360981b8184015261014085015284518086018652600b8082526a53696c6b20476c6f76657360a81b82850152610160860191909152855180870187529081526a576f6f6c20476c6f76657360a81b81840152610180850152845180860186529081526b4c696e656e20476c6f76657360a01b818301526101a084015283518085019094526006845265476c6f76657360d01b908401526101c082019290925262000de49190600f62001d88565b506040518060600160405280604051806040016040528060088152602001674e65636b6c61636560c01b815250815260200160405180604001604052806006815260200165105b5d5b195d60d21b81525081526020016040518060400160405280600781526020016614195b99185b9d60ca1b815250815250601290600362000e6f92919062001dda565b506040805160e081018252600960a0820190815268476f6c642052696e6760b81b60c0830152815281518083018352600b8082526a53696c7665722052696e6760a81b60208381019190915280840192909252835180850185529081526a42726f6e7a652052696e6760a81b818301528284015282518084018452600d8082526c506c6174696e756d2052696e6760981b828401526060840191909152835180850190945283526c546974616e69756d2052696e6760981b90830152608081019190915262000f4390601390600562001e2c565b506040805161024081018252600861020082018181526737b3102837bbb2b960c11b6102208401528252825180840184526009808252686f66204769616e747360b81b6020838101919091528085019290925284518086018652908152686f6620546974616e7360b81b818301528385015283518085018552828152671bd98814dada5b1b60c21b81830152606084015283518085018552600d8082526c37b3102832b93332b1ba34b7b760991b828401526080850191909152845180860186528181526c6f66204272696c6c69616e636560981b8184015260a08501528451808601865260108082526f1bd988115b9b1a59da1d195b9b595b9d60821b8285015260c0860191909152855180870187528281526c37b310283937ba32b1ba34b7b760991b8185015260e0860152855180870187529384526737b31020b733b2b960c11b84840152610100850193909352845180860186526007808252666f66205261676560c81b8285015261012086019190915285518087018752908152666f66204675727960c81b8184015261014085015284518086018652600a808252691bd988159a5d1c9a5bdb60b21b8285015261016086019190915285518087018752908152690decc40e8d0ca408cdef60b31b8184015261018085015284518086018652600c8082526b37b3102232ba32b1ba34b7b760a11b828501526101a0860191909152855180870187529182526c37b3102932b33632b1ba34b7b760991b828401526101c0850191909152845180860190955284526b6f6620746865205477696e7360a01b908401526101e0820192909252620011a7916014919062001e7e565b50604080516108e08101825260056108a082018181526441676f6e7960d81b6108c0840152825282518084018452600a8082526941706f63616c7970736560b01b60208381019190915280850192909252845180860186528181526920b936b0b3b2b23237b760b11b818401528486015284518086018652838152641099585cdd60da1b81840152606085015284518086018652600880825267084cad0cadadee8d60c31b82850152608086019190915285518087018752600680825265109b1a59da1d60d21b8286015260a08701919091528651808801885285815264109b1bdbd960da1b8186015260c0870152865180880188526007808252664272616d626c6560c81b8287015260e0880191909152875180890189526009808252684272696d73746f6e6560b81b828801526101008901919091528851808a018a5287815264109c9bdbd960da1b818801526101208901528851808a018a528281526621b0b93934b7b760c91b818801526101408901528851808a018a528181526843617461636c79736d60b81b818801526101608901528851808a018a52848152674368696d6572696360c01b818801526101808901528851808a018a5283815265436f7270736560d01b818801526101a08901528851808a018a528581526921b7b9393ab83a34b7b760b11b818801526101c08901528851808a018a52818152682230b6b730ba34b7b760b91b818801526101e08901528851808a018a5287815264088cac2e8d60db1b818801526102008901528851808a018a52878152642232b6b7b760d91b818801526102208901528851808a018a526004808252634469726560e01b828901526102408a01919091528951808b018b5284815265223930b3b7b760d11b818901526102608a01528951808b018b5288815264111c99585960da1b818901526102808a01528951808b018b5281815263446f6f6d60e01b818901526102a08a01528951808b018b52818152634475736b60e01b818901526102c08a01528951808b018b52888152644561676c6560d81b818901526102e08a01528951808b018b528581526722b6b83cb932b0b760c11b818901526103008a01528951808b018b52818152634661746560e01b818901526103208a01528951808b018b52600380825262466f6560e81b828a01526103408b01919091528a51808c018c528281526347616c6560e01b818a01526103608b01528a51808c018c528981526411da1bdd5b60da1b818a01526103808b01528a51808c018c5289815264476c6f6f6d60d81b818a01526103a08b01528a51808c018c528981526408ed8f2e0d60db1b818a01526103c08b01528a51808c018c5289815264476f6c656d60d81b818a01526103e08b01528a51808c018c52828152634772696d60e01b818a01526104008b01528a51808c018c52828152634861746560e01b818a01526104208b01528a51808c018c52898152644861766f6360d81b818a01526104408b01528a51808c018c52858152652437b737bab960d11b818a01526104608b01528a51808c018c52858152652437b93937b960d11b818a01526104808b01528a51808c018c52868152674879706e6f74696360c01b818a01526104a08b01528a51808c018c528581526525b930b5b2b760d11b818a01526104c08b01528a51808c018c5289815264098dec2e8d60db1b818a01526104e08b01528a51808c018c52838152684d61656c7374726f6d60b81b818a01526105008b01528a51808c018c5282815263135a5b9960e21b818a01526105208b01528a51808c018c52848152664d697261636c6560c81b818a01526105408b01528a51808c018c5285815265135bdc989a5960d21b818a01526105608b01528a51808c018c529586526727b13634bb34b7b760c11b868901526105808a01959095528951808b018b528281526813db9cdb185d59da1d60ba1b818901526105a08a01528951808b018b52818152632830b4b760e11b818901526105c08a01528951808b018b52600b81526a50616e64656d6f6e69756d60a81b818901526105e08a01528951808b018b52838152660a0d0decadcd2f60cb1b818901526106008a01528951808b018b5284815265506c6167756560d01b818901526106208a01528951808b018b52818152635261676560e01b818901526106408a01528951808b018b52838152665261707475726560c81b818901526106608a01528951808b018b528181526352756e6560e01b818901526106808a01528951808b018b528881526414dadd5b1b60da1b818901526106a08a01528951808b018b528581526214dbdb60ea1b818901526106c08a01528951808b018b529081526314dbdd5b60e21b818801526106e08901528851808a018a5283815265536f72726f7760d01b818801526107008901528851808a018a528381526514dc1a5c9a5d60d21b818801526107208901528851808a018a528781526453746f726d60d81b818801526107408901528851808a018a528281526615195b5c195cdd60ca1b818801526107608901528851808a018a5282815266151bdc9b595b9d60ca1b818801526107808901528851808a018a529081526856656e6765616e636560b81b818701526107a08801528751808901895281815266566963746f727960c81b818701526107c088015287518089018952868152642b34b832b960d91b818701526107e088015287518089018952918252650acdee4e8caf60d31b828601526108008701919091528651808801885291825262576f6560e81b8285015261082086019190915285518087018752938452640aee4c2e8d60db1b8484015261084085019390935284518086018652928352664c69676874277360c81b838301526108608401929092528351808501909452908352695368696d6d6572696e6760b01b9083015261088081019190915262001a1190601590604562001ed0565b506040805161028081018252600461024082018181526342616e6560e01b61026084015282528251808401845281815263149bdbdd60e21b6020828101919091528084019190915283518085018552828152634269746560e01b81830152838501528351808501855282815263536f6e6760e01b81830152606084015283518085018552828152632937b0b960e11b81830152608084015283518085018552600580825264047726173760dc1b8284015260a085019190915284518086018652600a815269125b9cdd1c9d5b595b9d60b21b8184015260c08501528451808601865283815263476c6f7760e01b8184015260e0850152845180860186526006808252652132b73232b960d11b828501526101008601919091528551808701875290815265536861646f7760d01b818401526101208501528451808601865260078152662bb434b9b832b960c91b81840152610140850152845180860186528181526414da1bdd5d60da1b81840152610160850152845180860186529081526411dc9bdddb60da1b8183015261018084015283518085018552828152632a32b0b960e11b818301526101a084015283518085018552828152635065616b60e01b818301526101c08401528351808501855282815263466f726d60e01b818301526101e084015283518085018552600381526229bab760e91b8183015261020084015283518085019094529083526326b7b7b760e11b9083015261022081019190915262001c4290601690601262001d24565b5034801562001c5057600080fd5b5060405180604001604052806004815260200163131bdbdd60e21b815250604051806040016040528060048152602001631313d3d560e21b815250816000908051906020019062001ca392919062001f22565b50805162001cb990600190602084019062001f22565b50506001600a555062001ccc3362001cd2565b62002064565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b82805482825590600052602060002090810192821562001d76579160200282015b8281111562001d76578251805162001d6591849160209091019062001f22565b509160200191906001019062001d45565b5062001d8492915062001fad565b5090565b82805482825590600052602060002090810192821562001d76579160200282015b8281111562001d76578251805162001dc991849160209091019062001f22565b509160200191906001019062001da9565b82805482825590600052602060002090810192821562001d76579160200282015b8281111562001d76578251805162001e1b91849160209091019062001f22565b509160200191906001019062001dfb565b82805482825590600052602060002090810192821562001d76579160200282015b8281111562001d76578251805162001e6d91849160209091019062001f22565b509160200191906001019062001e4d565b82805482825590600052602060002090810192821562001d76579160200282015b8281111562001d76578251805162001ebf91849160209091019062001f22565b509160200191906001019062001e9f565b82805482825590600052602060002090810192821562001d76579160200282015b8281111562001d76578251805162001f1191849160209091019062001f22565b509160200191906001019062001ef1565b82805462001f309062002027565b90600052602060002090601f01602090048101928262001f54576000855562001f9f565b82601f1062001f6f57805160ff191683800117855562001f9f565b8280016001018555821562001f9f579182015b8281111562001f9f57825182559160200191906001019062001f82565b5062001d8492915062001fce565b8082111562001d8457600062001fc4828262001fe5565b5060010162001fad565b5b8082111562001d84576000815560010162001fcf565b50805462001ff39062002027565b6000825580601f1062002004575050565b601f01602090049060005260206000209081019062002024919062001fce565b50565b600181811c908216806200203c57607f821691505b602082108114156200205e57634e487b7160e01b600052602260045260246000fd5b50919050565b61320c80620020746000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c806370a0823111610104578063a22cb465116100a2578063d47f269e11610071578063d47f269e146103c7578063e985e9c5146103da578063ef68075a14610416578063f2fde38b1461042957600080fd5b8063a22cb4651461037b578063b88d4fde1461038e578063c08a5dd5146103a1578063c87b56dd146103b457600080fd5b806395d89b41116100de57806395d89b411461033a5780639720c969146103425780639bdc1b69146103555780639e41b73f1461036857600080fd5b806370a082311461030e578063715018a6146103215780638da5cb5b1461032957600080fd5b80632f745c5911610171578063434f48c41161014b578063434f48c4146102c25780634f6ccce7146102d55780636352211e146102e857806367209aa8146102fb57600080fd5b80632f745c5914610289578063379607f51461029c57806342842e0e146102af57600080fd5b8063095ea7b3116101ad578063095ea7b31461023c5780630e99990d1461025157806318160ddd1461026457806323b872dd1461027657600080fd5b806301ffc9a7146101d457806306fdde03146101fc578063081812fc14610211575b600080fd5b6101e76101e23660046127f8565b61043c565b60405190151581526020015b60405180910390f35b610204610467565b6040516101f39190612d42565b61022461021f366004612830565b6104f9565b6040516001600160a01b0390911681526020016101f3565b61024f61024a3660046127cf565b610593565b005b61020461025f366004612830565b6106a9565b6008545b6040519081526020016101f3565b61024f610284366004612685565b6107a3565b6102686102973660046127cf565b6107d4565b61024f6102aa366004612830565b61086a565b61024f6102bd366004612685565b610924565b61024f6102d0366004612830565b61093f565b6102686102e3366004612830565b610a27565b6102246102f6366004612830565b610ac8565b610204610309366004612830565b610b3f565b61026861031c366004612632565b610c30565b61024f610cb7565b600b546001600160a01b0316610224565b610204610ced565b610204610350366004612830565b610cfc565b610204610363366004612830565b610ded565b610204610376366004612830565b610edf565b61024f610389366004612795565b610fd2565b61024f61039c3660046126c0565b611097565b6102046103af366004612830565b6110cf565b6102046103c2366004612830565b6111c0565b6102046103d5366004612830565b611468565b6101e76103e8366004612653565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b610204610424366004612830565b611559565b61024f610437366004612632565b61164b565b60006001600160e01b0319821663780e9d6360e01b14806104615750610461826116e6565b92915050565b60606000805461047690612ebb565b80601f01602080910402602001604051908101604052809291908181526020018280546104a290612ebb565b80156104ef5780601f106104c4576101008083540402835291602001916104ef565b820191906000526020600020905b8154815290600101906020018083116104d257829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166105775760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b600061059e82610ac8565b9050806001600160a01b0316836001600160a01b0316141561060c5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161056e565b336001600160a01b0382161480610628575061062881336103e8565b61069a5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161056e565b6106a48383611736565b505050565b606061046182604051806040016040528060048152602001631193d3d560e21b8152506010805480602002602001604051908101604052809291908181526020016000905b8282101561079a57838290600052602060002001805461070d90612ebb565b80601f016020809104026020016040519081016040528092919081815260200182805461073990612ebb565b80156107865780601f1061075b57610100808354040283529160200191610786565b820191906000526020600020905b81548152906001019060200180831161076957829003601f168201915b5050505050815260200190600101906106ee565b505050506117a4565b6107ad3382611ad1565b6107c95760405162461bcd60e51b815260040161056e90612ddc565b6106a4838383611bc8565b60006107df83610c30565b82106108415760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b606482015260840161056e565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6002600a5414156108bd5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161056e565b6002600a5580158015906108d25750611e6281105b6109115760405162461bcd60e51b815260206004820152601060248201526f151bdad95b881251081a5b9d985b1a5960821b604482015260640161056e565b61091c335b82611d73565b506001600a55565b6106a483838360405180602001604052806000815250611097565b6002600a5414156109925760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161056e565b6002600a55600b546001600160a01b031633146109c15760405162461bcd60e51b815260040161056e90612da7565b611e61811180156109d35750611f4181105b610a125760405162461bcd60e51b815260206004820152601060248201526f151bdad95b881251081a5b9d985b1a5960821b604482015260640161056e565b61091c610916600b546001600160a01b031690565b6000610a3260085490565b8210610a955760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b606482015260840161056e565b60088281548110610ab657634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b6000818152600260205260408120546001600160a01b0316806104615760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b606482015260840161056e565b606061046182604051806040016040528060048152602001634e45434b60e01b8152506012805480602002602001604051908101604052809291908181526020016000905b8282101561079a578382906000526020600020018054610ba390612ebb565b80601f0160208091040260200160405190810160405280929190818152602001828054610bcf90612ebb565b8015610c1c5780601f10610bf157610100808354040283529160200191610c1c565b820191906000526020600020905b815481529060010190602001808311610bff57829003601f168201915b505050505081526020019060010190610b84565b60006001600160a01b038216610c9b5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b606482015260840161056e565b506001600160a01b031660009081526003602052604090205490565b600b546001600160a01b03163314610ce15760405162461bcd60e51b815260040161056e90612da7565b610ceb6000611d91565b565b60606001805461047690612ebb565b606061046182604051806040016040528060048152602001631211505160e21b815250600e805480602002602001604051908101604052809291908181526020016000905b8282101561079a578382906000526020600020018054610d6090612ebb565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8c90612ebb565b8015610dd95780601f10610dae57610100808354040283529160200191610dd9565b820191906000526020600020905b815481529060010190602001808311610dbc57829003601f168201915b505050505081526020019060010190610d41565b6060610461826040518060400160405280600581526020016415d05254d560da1b815250600f805480602002602001604051908101604052809291908181526020016000905b8282101561079a578382906000526020600020018054610e5290612ebb565b80601f0160208091040260200160405190810160405280929190818152602001828054610e7e90612ebb565b8015610ecb5780601f10610ea057610100808354040283529160200191610ecb565b820191906000526020600020905b815481529060010190602001808311610eae57829003601f168201915b505050505081526020019060010190610e33565b606061046182604051806040016040528060068152602001652ba2a0a827a760d11b815250600c805480602002602001604051908101604052809291908181526020016000905b8282101561079a578382906000526020600020018054610f4590612ebb565b80601f0160208091040260200160405190810160405280929190818152602001828054610f7190612ebb565b8015610fbe5780601f10610f9357610100808354040283529160200191610fbe565b820191906000526020600020905b815481529060010190602001808311610fa157829003601f168201915b505050505081526020019060010190610f26565b6001600160a01b03821633141561102b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161056e565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6110a13383611ad1565b6110bd5760405162461bcd60e51b815260040161056e90612ddc565b6110c984848484611de3565b50505050565b6060610461826040518060400160405280600481526020016352494e4760e01b8152506013805480602002602001604051908101604052809291908181526020016000905b8282101561079a57838290600052602060002001805461113390612ebb565b80601f016020809104026020016040519081016040528092919081815260200182805461115f90612ebb565b80156111ac5780601f10611181576101008083540402835291602001916111ac565b820191906000526020600020905b81548152906001019060200180831161118f57829003601f168201915b505050505081526020019060010190611114565b60606111ca6125d5565b60405180610120016040528060fd815260200161304960fd913981526111ef83610edf565b81600160200201819052506040518060600160405280602881526020016131af60289139604082015261122183611559565b6060808301919091526040805191820190526028808252612f7e6020830139608082015261124e83610cfc565b60a082015260408051606081019091526028808252612ff8602083013960c082015261127983610ded565b60e08201526040805160608101909152602980825261302060208301396101008201526112a5836106a9565b61012082015260408051606081019091526029808252612fcf60208301396101408201526112d283611468565b6101608201526040805160608101909152602980825261314660208301396101808201526112ff83610b3f565b6101a082015260408051606081019091526029808252612fa660208301396101c082015261132c836110cf565b6101e0820152604080518082018252600d81526c1e17ba32bc3a1f1e17b9bb339f60991b602080830191909152610200840191909152825181840151838501516060860151608087015160a088015160c089015160e08a01516101008b0151995160009a61139c9a9091016128bf565b60408051808303601f19018152908290526101208401516101408501516101608601516101808701516101a08801516101c08901516101e08a01516102008b01519799506113ef988a98906020016128bf565b6040516020818303038152906040529050600061143c61140e86611e16565b61141784611f30565b604051602001611428929190612b2a565b604051602081830303815290604052611f30565b90508060405160200161144f9190612cc0565b60408051601f1981840301815291905295945050505050565b606061046182604051806040016040528060048152602001631210539160e21b8152506011805480602002602001604051908101604052809291908181526020016000905b8282101561079a5783829060005260206000200180546114cc90612ebb565b80601f01602080910402602001604051908101604052809291908181526020018280546114f890612ebb565b80156115455780601f1061151a57610100808354040283529160200191611545565b820191906000526020600020905b81548152906001019060200180831161152857829003601f168201915b5050505050815260200190600101906114ad565b6060610461826040518060400160405280600581526020016410d21154d560da1b815250600d805480602002602001604051908101604052809291908181526020016000905b8282101561079a5783829060005260206000200180546115be90612ebb565b80601f01602080910402602001604051908101604052809291908181526020018280546115ea90612ebb565b80156116375780601f1061160c57610100808354040283529160200191611637565b820191906000526020600020905b81548152906001019060200180831161161a57829003601f168201915b50505050508152602001906001019061159f565b600b546001600160a01b031633146116755760405162461bcd60e51b815260040161056e90612da7565b6001600160a01b0381166116da5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161056e565b6116e381611d91565b50565b60006001600160e01b031982166380ac58cd60e01b148061171757506001600160e01b03198216635b5e139f60e01b145b8061046157506301ffc9a760e01b6001600160e01b0319831614610461565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061176b82610ac8565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b606060006117da846117b587611e16565b6040516020016117c6929190612890565b6040516020818303038152906040526120a4565b90506000838451836117ec9190612f11565b8151811061180a57634e487b7160e01b600052603260045260246000fd5b6020026020010151905060006015836118239190612f11565b9050600e81111561188a576014805483919061183f9086612f11565b8154811061185d57634e487b7160e01b600052603260045260246000fd5b90600052602060002001604051602001611878929190612980565b60405160208183030381529060405291505b60138110611ac75761189a6125fd565b601580546118a89086612f11565b815481106118c657634e487b7160e01b600052603260045260246000fd5b9060005260206000200180546118db90612ebb565b80601f016020809104026020016040519081016040528092919081815260200182805461190790612ebb565b80156119545780601f1061192957610100808354040283529160200191611954565b820191906000526020600020905b81548152906001019060200180831161193757829003601f168201915b50505050508160006002811061197a57634e487b7160e01b600052603260045260246000fd5b60200201526016805461198d9086612f11565b815481106119ab57634e487b7160e01b600052603260045260246000fd5b9060005260206000200180546119c090612ebb565b80601f01602080910402602001604051908101604052809291908181526020018280546119ec90612ebb565b8015611a395780601f10611a0e57610100808354040283529160200191611a39565b820191906000526020600020905b815481529060010190602001808311611a1c57829003601f168201915b505050505081600160028110611a5f57634e487b7160e01b600052603260045260246000fd5b60200201526013821415611a9b578051602080830151604051611a859392879101612a3e565b6040516020818303038152906040529250611ac5565b8051602080830151604051611ab39392879101612aac565b60405160208183030381529060405292505b505b5095945050505050565b6000818152600260205260408120546001600160a01b0316611b4a5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161056e565b6000611b5583610ac8565b9050806001600160a01b0316846001600160a01b03161480611b905750836001600160a01b0316611b85846104f9565b6001600160a01b0316145b80611bc057506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316611bdb82610ac8565b6001600160a01b031614611c435760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b606482015260840161056e565b6001600160a01b038216611ca55760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161056e565b611cb08383836120d5565b611cbb600082611736565b6001600160a01b0383166000908152600360205260408120805460019290611ce4908490612e78565b90915550506001600160a01b0382166000908152600360205260408120805460019290611d12908490612e2d565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b611d8d82826040518060200160405280600081525061218d565b5050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611dee848484611bc8565b611dfa848484846121c0565b6110c95760405162461bcd60e51b815260040161056e90612d55565b606081611e3a5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611e645780611e4e81612ef6565b9150611e5d9050600a83612e45565b9150611e3e565b60008167ffffffffffffffff811115611e8d57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611eb7576020820181803683370190505b5090505b8415611bc057611ecc600183612e78565b9150611ed9600a86612f11565b611ee4906030612e2d565b60f81b818381518110611f0757634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350611f29600a86612e45565b9450611ebb565b805160609080611f50575050604080516020810190915260008152919050565b60006003611f5f836002612e2d565b611f699190612e45565b611f74906004612e59565b90506000611f83826020612e2d565b67ffffffffffffffff811115611fa957634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611fd3576020820181803683370190505b509050600060405180606001604052806040815260200161316f604091399050600181016020830160005b8681101561205f576003818a01810151603f601282901c8116860151600c83901c8216870151600684901c831688015192909316870151600891821b60ff94851601821b92841692909201901b91160160e01b835260049092019101611ffe565b506003860660018114612079576002811461208a57612096565b613d3d60f01b600119830152612096565b603d60f81b6000198301525b505050918152949350505050565b6000816040516020016120b79190612874565b60408051601f19818403018152919052805160209091012092915050565b6001600160a01b0383166121305761212b81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b612153565b816001600160a01b0316836001600160a01b0316146121535761215383826122cd565b6001600160a01b03821661216a576106a48161236a565b826001600160a01b0316826001600160a01b0316146106a4576106a48282612443565b6121978383612487565b6121a460008484846121c0565b6106a45760405162461bcd60e51b815260040161056e90612d55565b60006001600160a01b0384163b156122c257604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612204903390899088908890600401612d05565b602060405180830381600087803b15801561221e57600080fd5b505af192505050801561224e575060408051601f3d908101601f1916820190925261224b91810190612814565b60015b6122a8573d80801561227c576040519150601f19603f3d011682016040523d82523d6000602084013e612281565b606091505b5080516122a05760405162461bcd60e51b815260040161056e90612d55565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611bc0565b506001949350505050565b600060016122da84610c30565b6122e49190612e78565b600083815260076020526040902054909150808214612337576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b60085460009061237c90600190612e78565b600083815260096020526040812054600880549394509092849081106123b257634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080600883815481106123e157634e487b7160e01b600052603260045260246000fd5b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061242757634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b600061244e83610c30565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b0382166124dd5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161056e565b6000818152600260205260409020546001600160a01b0316156125425760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161056e565b61254e600083836120d5565b6001600160a01b0382166000908152600360205260408120805460019290612577908490612e2d565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6040518061022001604052806011905b60608152602001906001900390816125e55790505090565b60408051808201909152606081526001602082016125e5565b80356001600160a01b038116811461262d57600080fd5b919050565b600060208284031215612643578081fd5b61264c82612616565b9392505050565b60008060408385031215612665578081fd5b61266e83612616565b915061267c60208401612616565b90509250929050565b600080600060608486031215612699578081fd5b6126a284612616565b92506126b060208501612616565b9150604084013590509250925092565b600080600080608085870312156126d5578081fd5b6126de85612616565b93506126ec60208601612616565b925060408501359150606085013567ffffffffffffffff8082111561270f578283fd5b818701915087601f830112612722578283fd5b81358181111561273457612734612f51565b604051601f8201601f19908116603f0116810190838211818310171561275c5761275c612f51565b816040528281528a6020848701011115612774578586fd5b82602086016020830137918201602001949094529598949750929550505050565b600080604083850312156127a7578182fd5b6127b083612616565b9150602083013580151581146127c4578182fd5b809150509250929050565b600080604083850312156127e1578182fd5b6127ea83612616565b946020939093013593505050565b600060208284031215612809578081fd5b813561264c81612f67565b600060208284031215612825578081fd5b815161264c81612f67565b600060208284031215612841578081fd5b5035919050565b60008151808452612860816020860160208601612e8f565b601f01601f19169290920160200192915050565b60008251612886818460208701612e8f565b9190910192915050565b600083516128a2818460208801612e8f565b8351908301906128b6818360208801612e8f565b01949350505050565b60008a516128d1818460208f01612e8f565b8a516128e38183860160208f01612e8f565b8a5191840101906128f8818360208e01612e8f565b895161290a8183850160208e01612e8f565b8951929091010190612920818360208c01612e8f565b87516129328183850160208c01612e8f565b8751929091010190612948818360208a01612e8f565b855161295a8183850160208a01612e8f565b8551929091010190612970818360208801612e8f565b019b9a5050505050505050505050565b6000835160206129938285838901612e8f565b600160fd1b9184019182528454600190849080831c818416806129b757607f821691505b8582108114156129d557634e487b7160e01b88526022600452602488fd5b8080156129e957600181146129fe57612a2e565b60ff1984168887015282880186019450612a2e565b60008b815260209020895b84811015612a245781548a8201890152908701908801612a09565b5050858389010194505b50929a9950505050505050505050565b601160f91b81528351600090612a5b816001850160208901612e8f565b600160fd1b6001918401918201528451612a7c816002840160208901612e8f565b61011160f51b600292909101918201528351612a9f816004840160208801612e8f565b0160040195945050505050565b601160f91b81528351600090612ac9816001850160208901612e8f565b600160fd1b6001918401918201528451612aea816002840160208901612e8f565b61011160f51b600292909101918201528351612b0d816004840160208801612e8f565b62202b3160e81b6004929091019182015260070195945050505050565b6e7b226e616d65223a2022426167202360881b81528251600090612b5581600f850160208801612e8f565b80830190507f222c20226465736372697074696f6e223a20224c6f6f742069732072616e646f600f8201527f6d697a656420616476656e747572657220676561722067656e65726174656420602f8201527f616e642073746f726564206f6e20636861696e2e2053746174732c20696d6167604f8201527f65732c20616e64206f746865722066756e6374696f6e616c6974792061726520606f8201527f696e74656e74696f6e616c6c79206f6d697474656420666f72206f7468657273608f8201527f20746f20696e746572707265742e204665656c206672656520746f207573652060af8201527f4c6f6f7420696e20616e792077617920796f752077616e742e222c2022696d6160cf8201527f6765223a2022646174613a696d6167652f7376672b786d6c3b6261736536342c60ef82015261010f8451612c9f8183850160208901612e8f565b612cb5828285010161227d60f01b815260020190565b979650505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251612cf881601d850160208701612e8f565b91909101601d0192915050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612d3890830184612848565b9695505050505050565b60208152600061264c6020830184612848565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b60008219821115612e4057612e40612f25565b500190565b600082612e5457612e54612f3b565b500490565b6000816000190483118215151615612e7357612e73612f25565b500290565b600082821015612e8a57612e8a612f25565b500390565b60005b83811015612eaa578181015183820152602001612e92565b838111156110c95750506000910152565b600181811c90821680612ecf57607f821691505b60208210811415612ef057634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612f0a57612f0a612f25565b5060010190565b600082612f2057612f20612f3b565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b0319811681146116e357600080fdfe3c2f746578743e3c7465787420783d2231302220793d2236302220636c6173733d2262617365223e3c2f746578743e3c7465787420783d2231302220793d223136302220636c6173733d2262617365223e3c2f746578743e3c7465787420783d2231302220793d223132302220636c6173733d2262617365223e3c2f746578743e3c7465787420783d2231302220793d2238302220636c6173733d2262617365223e3c2f746578743e3c7465787420783d2231302220793d223130302220636c6173733d2262617365223e3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f73766722207072657365727665417370656374526174696f3d22784d696e594d696e206d656574222076696577426f783d223020302033353020333530223e3c7374796c653e2e62617365207b2066696c6c3a2077686974653b20666f6e742d66616d696c793a2073657269663b20666f6e742d73697a653a20313470783b207d3c2f7374796c653e3c726563742077696474683d223130302522206865696768743d2231303025222066696c6c3d22626c61636b22202f3e3c7465787420783d2231302220793d2232302220636c6173733d2262617365223e3c2f746578743e3c7465787420783d2231302220793d223134302220636c6173733d2262617365223e4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f3c2f746578743e3c7465787420783d2231302220793d2234302220636c6173733d2262617365223ea2646970667358221220afd8a42edeeb6b78a1f2564f8301af9f1f72be2eedf980ee45200f6459d4c45064736f6c63430008040033',
74
- salt: encodeBytes('hello world'),
75
- opcode: 'CREATE2',
76
- }),
77
- ).toMatchInlineSnapshot('"0x98F06eF857728F5a10e9968b881739bf9638300A"')
78
- })
@@ -1,59 +0,0 @@
1
- import type { Address, ByteArray, Hex } from '../../types'
2
- import { concat, isBytes, pad, slice } from '../data'
3
- import { encodeBytes, encodeRlp } from '../encoding'
4
- import { keccak256 } from '../hash'
5
- import { getAddress } from './getAddress'
6
-
7
- export type GetCreateAddressOptions = {
8
- from: Address
9
- nonce: bigint
10
- }
11
-
12
- export type GetCreate2AddressOptions = {
13
- bytecode: ByteArray | Hex
14
- from: Address
15
- salt: ByteArray | Hex
16
- }
17
-
18
- export type GetContractAddressOptions =
19
- | ({
20
- opcode?: 'CREATE'
21
- } & GetCreateAddressOptions)
22
- | ({ opcode: 'CREATE2' } & GetCreate2AddressOptions)
23
-
24
- export function getContractAddress(opts: GetContractAddressOptions) {
25
- if (opts.opcode === 'CREATE2') return getCreate2Address(opts)
26
- return getCreateAddress(opts)
27
- }
28
-
29
- export function getCreateAddress(opts: GetCreateAddressOptions) {
30
- const from = encodeBytes(getAddress(opts.from))
31
-
32
- let nonce = encodeBytes(opts.nonce)
33
- if (nonce[0] === 0) nonce = new Uint8Array([])
34
-
35
- return getAddress(
36
- `0x${keccak256(encodeRlp([from, nonce], 'bytes')).slice(26)}` as Address,
37
- )
38
- }
39
-
40
- export function getCreate2Address(opts: GetCreate2AddressOptions) {
41
- const from = encodeBytes(getAddress(opts.from))
42
- const salt = pad(
43
- isBytes(opts.salt) ? opts.salt : encodeBytes(opts.salt as Hex),
44
- { size: 32 },
45
- ) as ByteArray
46
- const bytecodeHash = encodeBytes(
47
- keccak256(
48
- (isBytes(opts.bytecode)
49
- ? opts.bytecode
50
- : encodeBytes(opts.bytecode as Hex)) as ByteArray,
51
- ),
52
- )
53
- return getAddress(
54
- slice(
55
- keccak256(concat([encodeBytes('0xff'), from, salt, bytecodeHash])),
56
- 12,
57
- ),
58
- )
59
- }
@@ -1,17 +0,0 @@
1
- import { expect, test } from 'vitest'
2
-
3
- import * as address from './index'
4
-
5
- test('exports address', () => {
6
- expect(address).toMatchInlineSnapshot(`
7
- {
8
- "checksumAddress": [Function],
9
- "getAddress": [Function],
10
- "getContractAddress": [Function],
11
- "getCreate2Address": [Function],
12
- "getCreateAddress": [Function],
13
- "isAddress": [Function],
14
- "isAddressEqual": [Function],
15
- }
16
- `)
17
- })
@@ -1,16 +0,0 @@
1
- export { checksumAddress, getAddress } from './getAddress'
2
-
3
- export type {
4
- GetContractAddressOptions,
5
- GetCreate2AddressOptions,
6
- GetCreateAddressOptions,
7
- } from './getContractAddress'
8
- export {
9
- getContractAddress,
10
- getCreate2Address,
11
- getCreateAddress,
12
- } from './getContractAddress'
13
-
14
- export { isAddress } from './isAddress'
15
-
16
- export { isAddressEqual } from './isAddressEqual'
@@ -1,10 +0,0 @@
1
- import { expect, test } from 'vitest'
2
-
3
- import { isAddress } from './isAddress'
4
-
5
- test('checks if address is valid', () => {
6
- expect(isAddress('0xa5cc3c03994db5b0d9a5eEdD10Cabab0813678ac')).toBeTruthy()
7
- expect(isAddress('0xa0cf798816d4b9b9866b5330eea46a18382f251e')).toBeTruthy()
8
- expect(isAddress('0xa5cc3c03994db5b0d9a5eEdD10Cabab0813678az')).toBeFalsy()
9
- expect(isAddress('0xa5cc3c03994db5b0d9a5eEdD10Cabab0813678aff')).toBeFalsy()
10
- })
@@ -1,10 +0,0 @@
1
- import type { Address } from '../../types'
2
- import { getAddress } from './getAddress'
3
-
4
- export function isAddress(address: Address) {
5
- try {
6
- return Boolean(getAddress(address))
7
- } catch {
8
- return false
9
- }
10
- }
@@ -1,55 +0,0 @@
1
- import { describe, expect, test } from 'vitest'
2
-
3
- import { isAddressEqual } from './isAddressEqual'
4
-
5
- test('checksums address', () => {
6
- expect(
7
- isAddressEqual(
8
- '0xa5cc3c03994db5b0d9a5eEdD10Cabab0813678ac',
9
- '0xa5cc3c03994DB5b0d9A5eEdD10CabaB0813678AC',
10
- ),
11
- ).toBeTruthy()
12
- expect(
13
- isAddressEqual(
14
- '0xa0cf798816d4b9b9866b5330eea46a18382f251e',
15
- '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
16
- ),
17
- ).toBeTruthy()
18
- expect(
19
- isAddressEqual(
20
- '0xa5cc3c03994db5b0d9a5eEdD10Cabab0813678ac',
21
- '0xa5cc3c03994db5b0d9a5eEdD10Cabab0813678ac',
22
- ),
23
- ).toBeTruthy()
24
- expect(
25
- isAddressEqual(
26
- '0xa0cf798816d4b9b9866b5330eea46a18382f251e',
27
- '0xA0Cf798816D4b9b9866b5330EEa46a18382f251f',
28
- ),
29
- ).toBeFalsy()
30
- })
31
-
32
- describe('errors', () => {
33
- test('invalid address', () => {
34
- expect(() =>
35
- isAddressEqual(
36
- '0xa5cc3c03994db5b0d9a5eEdD10Cabab0813678az',
37
- '0xa5cc3c03994db5b0d9a5eEdD10Cabab0813678ac',
38
- ),
39
- ).toThrowErrorMatchingInlineSnapshot(`
40
- "Address \\"0xa5cc3c03994db5b0d9a5eEdD10Cabab0813678az\\" is invalid.
41
-
42
- Version: viem@1.0.2"
43
- `)
44
- expect(() =>
45
- isAddressEqual(
46
- '0xa5cc3c03994db5b0d9a5eEdD10Cabab0813678aff',
47
- '0xa5cc3c03994db5b0d9a5eEdD10Cabab0813678ac',
48
- ),
49
- ).toThrowErrorMatchingInlineSnapshot(`
50
- "Address \\"0xa5cc3c03994db5b0d9a5eEdD10Cabab0813678aff\\" is invalid.
51
-
52
- Version: viem@1.0.2"
53
- `)
54
- })
55
- })
@@ -1,6 +0,0 @@
1
- import type { Address } from '../../types'
2
- import { getAddress } from './getAddress'
3
-
4
- export function isAddressEqual(a: Address, b: Address) {
5
- return getAddress(a) === getAddress(b)
6
- }