@coti-io/coti-contracts 1.2.0 → 1.3.1

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 (481) hide show
  1. package/.github/workflows/npm-publish.yml +1 -1
  2. package/contracts/access/DataPrivacyFramework/DataPrivacyFramework.sol +1 -1
  3. package/contracts/access/DataPrivacyFramework/extensions/DataPrivacyFrameworkMpc.sol +1 -1
  4. package/contracts/disperse/coinByRatio/FixedRatioCoinDisperserUnlimitedWindow.sol +2 -4
  5. package/contracts/disperse/disperseToken/MintDisperser.sol +1 -3
  6. package/contracts/disperse/disperseToken/TokenDisperser.sol +1 -1
  7. package/contracts/messaging/PrivateMessaging.sol +456 -0
  8. package/contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock.sol +1 -1
  9. package/contracts/mocks/messaging/PrivateMessagingHarness.sol +54 -0
  10. package/contracts/mocks/oracle/CotiPriceConsumerMock.sol +31 -0
  11. package/contracts/mocks/token/ERC20DecimalsMock.sol +21 -0
  12. package/contracts/mocks/token/ERC20Mock.sol +1 -1
  13. package/contracts/mocks/token/PrivateERC20/EncryptedTokenReceiverMock.sol +1 -1
  14. package/contracts/mocks/token/PrivateERC20/PrivacyBridgeERC20Mock.sol +9 -4
  15. package/contracts/mocks/token/PrivateERC20/PrivateERC20AuditorSupplyMock.sol +1 -1
  16. package/contracts/mocks/token/PrivateERC20/PrivateERC20CappedMock.sol +1 -1
  17. package/contracts/mocks/token/PrivateERC20/PrivateERC20GtCallerMock.sol +1 -1
  18. package/contracts/mocks/token/PrivateERC20/PrivateERC20Mock.sol +1 -1
  19. package/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol +1 -1
  20. package/contracts/mocks/token/PrivateERC20/PublicReentrantTokenReceiverMock.sol +1 -1
  21. package/contracts/mocks/token/PrivateERC20/PublicTokenReceiverBoolMock.sol +1 -1
  22. package/contracts/mocks/token/PrivateERC20/PublicTokenReceiverMock.sol +1 -1
  23. package/contracts/mocks/token/PrivateERC721/PrivateERC721URIStorageMock.sol +1 -1
  24. package/contracts/mocks/utils/mpc/Arithmetic128TestsContract.sol +1 -1
  25. package/contracts/mocks/utils/mpc/Arithmetic256TestsContract.sol +1 -1
  26. package/contracts/mocks/utils/mpc/ArithmeticAddTestsContract.sol +196 -0
  27. package/contracts/mocks/utils/mpc/ArithmeticMulTestsContract.sol +194 -0
  28. package/contracts/mocks/utils/mpc/ArithmeticSigned128TestsContract.sol +63 -0
  29. package/contracts/mocks/utils/mpc/ArithmeticSigned256TestsContract.sol +107 -0
  30. package/contracts/mocks/utils/mpc/ArithmeticSignedNarrowTestsContract.sol +123 -0
  31. package/contracts/mocks/utils/mpc/ArithmeticSubTestsContract.sol +196 -0
  32. package/contracts/mocks/utils/mpc/Bitwise128TestsContract.sol +1 -1
  33. package/contracts/mocks/utils/mpc/Bitwise256TestsContract.sol +1 -1
  34. package/contracts/mocks/utils/mpc/BitwiseTestsContract.sol +1 -1
  35. package/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract.sol +1 -1
  36. package/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract.sol +1 -1
  37. package/contracts/mocks/utils/mpc/CheckedArithmeticWIthOverflowBitTestsContract.sol +1 -1
  38. package/contracts/mocks/utils/mpc/Comparison128TestsContract.sol +1 -1
  39. package/contracts/mocks/utils/mpc/Comparison1TestsContract.sol +1 -1
  40. package/contracts/mocks/utils/mpc/Comparison256TestsContract.sol +1 -1
  41. package/contracts/mocks/utils/mpc/Comparison2TestsContract.sol +1 -1
  42. package/contracts/mocks/utils/mpc/MinMax128TestsContract.sol +1 -1
  43. package/contracts/mocks/utils/mpc/MinMax256TestsContract.sol +1 -1
  44. package/contracts/mocks/utils/mpc/MinMaxTestsContract.sol +1 -1
  45. package/contracts/mocks/utils/mpc/MinimalImplementation.sol +1 -1
  46. package/contracts/mocks/utils/mpc/MinimalProxy.sol +1 -1
  47. package/contracts/mocks/utils/mpc/Miscellaneous1TestsContract.sol +1 -1
  48. package/contracts/mocks/utils/mpc/MiscellaneousTestsContract.sol +1 -1
  49. package/contracts/mocks/utils/mpc/MpcOperations128TestContract.sol +1 -1
  50. package/contracts/mocks/utils/mpc/MpcOperationsTestContract.sol +4 -4
  51. package/contracts/mocks/utils/mpc/Mux128TestsContract.sol +1 -1
  52. package/contracts/mocks/utils/mpc/Mux256TestsContract.sol +1 -1
  53. package/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract.sol +1 -1
  54. package/contracts/mocks/utils/mpc/OnBoard128TestsContract.sol +1 -1
  55. package/contracts/mocks/utils/mpc/OnBoard256TestsContract.sol +1 -1
  56. package/contracts/mocks/utils/mpc/PrivacyImplementationV1.sol +1 -1
  57. package/contracts/mocks/utils/mpc/PrivacyImplementationV2.sol +1 -1
  58. package/contracts/mocks/utils/mpc/PrivacyProxy.sol +1 -1
  59. package/contracts/mocks/utils/mpc/Random128TestsContract.sol +1 -1
  60. package/contracts/mocks/utils/mpc/Random256TestsContract.sol +1 -1
  61. package/contracts/mocks/utils/mpc/Shift128TestsContract.sol +1 -1
  62. package/contracts/mocks/utils/mpc/Shift256TestsContract.sol +1 -1
  63. package/contracts/mocks/utils/mpc/ShiftTestsContract.sol +1 -1
  64. package/contracts/mocks/utils/mpc/StringTestsContract.sol +1 -1
  65. package/contracts/mocks/utils/mpc/Transfer128TestsContract.sol +1 -1
  66. package/contracts/mocks/utils/mpc/Transfer256TestsContract.sol +1 -1
  67. package/contracts/mocks/utils/mpc/TransferScalarTestsContract.sol +1 -1
  68. package/contracts/mocks/utils/mpc/TransferTestsContract.sol +1 -1
  69. package/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract.sol +1 -1
  70. package/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract.sol +1 -1
  71. package/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract.sol +1 -1
  72. package/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract.sol +1 -1
  73. package/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol +1 -1
  74. package/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract.sol +1 -1
  75. package/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract.sol +1 -1
  76. package/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol +1 -1
  77. package/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract.sol +1 -1
  78. package/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract.sol +2 -2
  79. package/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract.sol +1 -1
  80. package/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock.sol +1 -1
  81. package/contracts/node/CotiNodeRewards.sol +3 -3
  82. package/contracts/node/SoulboundNodeNFT.sol +23 -24
  83. package/contracts/onboard/AccountOnboard.sol +1 -1
  84. package/contracts/oracle/CotiPriceConsumer.sol +103 -0
  85. package/contracts/oracle/ICotiPriceConsumer.sol +15 -0
  86. package/contracts/oracle/IStdReference.sol +26 -0
  87. package/contracts/pod/IInbox.sol +231 -0
  88. package/contracts/pod/IInboxMiner.sol +53 -0
  89. package/contracts/pod/InboxUser.sol +29 -0
  90. package/contracts/pod/InboxUserCotiTestnet.sol +13 -0
  91. package/contracts/pod/PodNetworkConstants.sol +30 -0
  92. package/contracts/pod/examples/MpcAdder.sol +57 -0
  93. package/contracts/pod/examples/MpcAdderPausable.sol +25 -0
  94. package/contracts/pod/examples/MpcAdderPausable.sol.bak +25 -0
  95. package/contracts/pod/examples/it128/PodAdder128.sol +48 -0
  96. package/contracts/pod/examples/it256/PodAdder256.sol +48 -0
  97. package/contracts/pod/fee/IInboxFeeManager.sol +40 -0
  98. package/contracts/pod/manifest.json +52 -0
  99. package/contracts/pod/mpc/PodLib.sol +10 -0
  100. package/contracts/pod/mpc/PodLib128.sol +361 -0
  101. package/contracts/pod/mpc/PodLib256.sol +361 -0
  102. package/contracts/pod/mpc/PodLib64.sol +385 -0
  103. package/contracts/pod/mpc/PodLibBase.sol +72 -0
  104. package/contracts/pod/mpc/PodUser.sol +58 -0
  105. package/contracts/pod/mpc/PodUserFuji.sol +14 -0
  106. package/contracts/pod/mpc/PodUserSepolia.sol +13 -0
  107. package/contracts/pod/mpc/coti-side/IPodExecutorOps.sol +99 -0
  108. package/contracts/pod/mpccodec/MpcAbiCodec.sol +482 -0
  109. package/contracts/pod/privacy/IPodPriceOracle.sol +20 -0
  110. package/contracts/pod/privacy/IPrivacyPortal.sol +248 -0
  111. package/contracts/pod/privacy/IPrivacyPortalFactory.sol +88 -0
  112. package/contracts/pod/privacy/PortalFeeOracle.sol +51 -0
  113. package/contracts/pod/privacy/PrivacyPortal.sol +871 -0
  114. package/contracts/pod/privacy/PrivacyPortalFactory.sol +492 -0
  115. package/contracts/pod/privacy/PrivacyPortalFeeLib.sol +98 -0
  116. package/contracts/pod/privacy/mocks/CloneHelper.sol +14 -0
  117. package/contracts/pod/privacy/mocks/MockERC20.sol +26 -0
  118. package/contracts/pod/privacy/mocks/MockPodERC20ForPortal.sol +160 -0
  119. package/contracts/pod/privacy/mocks/MockPrivacyPortalFactory.sol +125 -0
  120. package/contracts/pod/privacy/mocks/MockWrappedNative.sol +24 -0
  121. package/contracts/pod/token/erc7984/Erc7984Constants.sol +9 -0
  122. package/contracts/pod/token/erc7984/Erc7984Pointers.sol +29 -0
  123. package/contracts/pod/token/erc7984/IERC7984.sol +69 -0
  124. package/contracts/pod/token/erc7984/IERC7984PortalWrapper.sol +31 -0
  125. package/contracts/pod/token/erc7984/PodErc7984Mixin.sol +125 -0
  126. package/contracts/pod/token/erc7984/README.md +60 -0
  127. package/contracts/pod/token/perc20/IPodERC20.sol +298 -0
  128. package/contracts/pod/token/perc20/PodERC20.sol +1021 -0
  129. package/contracts/pod/token/perc20/PodErc20Mintable.sol +88 -0
  130. package/contracts/pod/token/perc20/PodErc20MintableInitializable.sol +42 -0
  131. package/contracts/pod/token/perc20/cotiside/IPodErc20CotiSide.sol +88 -0
  132. package/contracts/pod/token/perc20/cotiside/PodErc20CotiMother.sol +529 -0
  133. package/contracts/pod/utils/IWrappedNative.sol +11 -0
  134. package/contracts/privacyBridge/PrivacyBridge.sol +376 -94
  135. package/contracts/privacyBridge/PrivacyBridgeCotiNative.sol +210 -162
  136. package/contracts/privacyBridge/PrivacyBridgeERC20.sol +242 -160
  137. package/contracts/privacyBridge/PrivacyBridgeUSDCe.sol +8 -2
  138. package/contracts/privacyBridge/PrivacyBridgeUSDT.sol +8 -2
  139. package/contracts/privacyBridge/PrivacyBridgeWADA.sol +8 -2
  140. package/contracts/privacyBridge/PrivacyBridgeWBTC.sol +8 -2
  141. package/contracts/privacyBridge/PrivacyBridgeWETH.sol +8 -2
  142. package/contracts/privacyBridge/PrivacyBridgegCoti.sol +8 -2
  143. package/contracts/token/PrivateERC20/IPrivateERC20.sol +1 -1
  144. package/contracts/token/PrivateERC20/ITokenReceiver.sol +1 -1
  145. package/contracts/token/PrivateERC20/ITokenReceiverEncrypted.sol +1 -1
  146. package/contracts/token/PrivateERC20/PrivateERC20.sol +5 -5
  147. package/contracts/token/PrivateERC20/tokens/PrivateBridgedUSDC.sol +1 -1
  148. package/contracts/token/PrivateERC20/tokens/PrivateCOTI.sol +1 -1
  149. package/contracts/token/PrivateERC20/tokens/PrivateCOTITreasuryGovernanceToken.sol +1 -1
  150. package/contracts/token/PrivateERC20/tokens/PrivateTetherUSD.sol +1 -1
  151. package/contracts/token/PrivateERC20/tokens/PrivateWrappedADA.sol +1 -1
  152. package/contracts/token/PrivateERC20/tokens/PrivateWrappedBTC.sol +1 -1
  153. package/contracts/token/PrivateERC20/tokens/PrivateWrappedEther.sol +1 -1
  154. package/contracts/token/PrivateERC721/IERC721Errors.sol +1 -1
  155. package/contracts/token/PrivateERC721/PrivateERC721.sol +1 -1
  156. package/contracts/token/PrivateERC721/extensions/IPrivateERC721URIStorage.sol +1 -1
  157. package/contracts/token/PrivateERC721/extensions/PrivateERC721URIStorage.sol +1 -1
  158. package/contracts/token/points/CotiTokenPoints004.sol +43 -0
  159. package/contracts/utils/mpc/MpcCore.sol +610 -1
  160. package/contracts/utils/mpc/MpcInterface.sol +1 -1
  161. package/hardhat.config.ts +9 -15
  162. package/package.json +4 -4
  163. package/scripts/add-bridge-operators.cjs +87 -0
  164. package/scripts/deploy-coti-price-consumer-mainnet.cjs +49 -0
  165. package/scripts/deployCotiNodeRewards.ts +51 -0
  166. package/scripts/deployCotiTokenPoints004.ts +61 -0
  167. package/scripts/deployFixedRatioCoinDisperserUnlimitedWindow.ts +68 -0
  168. package/scripts/redeploy-private-and-bridges.cjs +201 -0
  169. package/scripts/set-bridge-limits-mainnet.cjs +177 -0
  170. package/scripts/verify-mainnet-private-bridges.cjs +289 -0
  171. package/scripts/verifyCotiTokenPoints004.ts +123 -0
  172. package/scripts/verifyFixedRatioCoinDisperserUnlimitedWindow.ts +112 -0
  173. package/sonar-project.properties +11 -0
  174. package/test/messaging/PrivateMessaging.test.ts +158 -0
  175. package/test/pod/privacy/PrivacyPortal.access.test.ts +756 -0
  176. package/test/pod/privacy/PrivacyPortal.recovery.test.ts +263 -0
  177. package/test/privacyBridge/UnifiedPrivacyBridges.test.cjs +1665 -0
  178. package/test/token/PrivateERC20/PrivacyBridge.fees.test.ts +162 -239
  179. package/test/utils/mpc/CheckedSignedArithmetic256.test.ts +163 -0
  180. package/test/utils/mpc/NegativeCases.test.ts +3 -3
  181. package/test/utils/mpc/Precompile.test.ts +6 -6
  182. package/typechain-types/@openzeppelin/contracts/access/AccessControl.ts +324 -0
  183. package/typechain-types/@openzeppelin/contracts/access/AccessControlEnumerable.ts +361 -0
  184. package/typechain-types/@openzeppelin/contracts/access/IAccessControl.ts +292 -0
  185. package/typechain-types/@openzeppelin/contracts/access/IAccessControlEnumerable.ts +329 -0
  186. package/typechain-types/@openzeppelin/contracts/access/extensions/AccessControlEnumerable.ts +375 -0
  187. package/typechain-types/@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.ts +329 -0
  188. package/typechain-types/@openzeppelin/contracts/access/extensions/index.ts +5 -0
  189. package/typechain-types/@openzeppelin/contracts/access/index.ts +6 -0
  190. package/typechain-types/@openzeppelin/contracts/index.ts +2 -0
  191. package/typechain-types/@openzeppelin/contracts/interfaces/IERC1363.ts +412 -0
  192. package/typechain-types/@openzeppelin/contracts/interfaces/IERC5267.ts +151 -0
  193. package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors.ts +69 -0
  194. package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors.ts +69 -0
  195. package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors.ts +69 -0
  196. package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/index.ts +6 -0
  197. package/typechain-types/@openzeppelin/contracts/interfaces/index.ts +4 -0
  198. package/typechain-types/@openzeppelin/contracts/security/Pausable.ts +150 -0
  199. package/typechain-types/@openzeppelin/contracts/security/index.ts +4 -0
  200. package/typechain-types/@openzeppelin/contracts/token/ERC20/ERC20.ts +286 -0
  201. package/typechain-types/@openzeppelin/contracts/token/ERC20/IERC20.ts +6 -6
  202. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.ts +313 -0
  203. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.ts +356 -0
  204. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.ts +423 -0
  205. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.ts +286 -0
  206. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/index.ts +4 -0
  207. package/typechain-types/@openzeppelin/contracts/token/ERC20/index.ts +3 -0
  208. package/typechain-types/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.ts +69 -0
  209. package/typechain-types/@openzeppelin/contracts/token/ERC20/utils/index.ts +4 -0
  210. package/typechain-types/@openzeppelin/contracts/token/ERC721/ERC721.ts +420 -0
  211. package/typechain-types/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.ts +420 -0
  212. package/typechain-types/@openzeppelin/contracts/token/ERC721/extensions/index.ts +4 -0
  213. package/typechain-types/@openzeppelin/contracts/token/ERC721/index.ts +3 -0
  214. package/typechain-types/@openzeppelin/contracts/utils/Nonces.ts +85 -0
  215. package/typechain-types/@openzeppelin/contracts/utils/Pausable.ts +150 -0
  216. package/typechain-types/@openzeppelin/contracts/utils/ReentrancyGuard.ts +69 -0
  217. package/typechain-types/@openzeppelin/contracts/utils/ShortStrings.ts +69 -0
  218. package/typechain-types/@openzeppelin/contracts/utils/Strings.ts +69 -0
  219. package/typechain-types/@openzeppelin/contracts/utils/cryptography/ECDSA.ts +69 -0
  220. package/typechain-types/@openzeppelin/contracts/utils/cryptography/EIP712.ts +151 -0
  221. package/typechain-types/@openzeppelin/contracts/utils/cryptography/index.ts +5 -0
  222. package/typechain-types/@openzeppelin/contracts/utils/index.ts +9 -0
  223. package/typechain-types/@openzeppelin/contracts/utils/math/SafeCast.ts +69 -0
  224. package/typechain-types/@openzeppelin/contracts/utils/math/index.ts +4 -0
  225. package/typechain-types/contracts/disperse/coinByRatio/FixedRatioCoinDisperserLeftoverS1.ts +735 -0
  226. package/typechain-types/contracts/disperse/coinByRatio/FixedRatioCoinDisperserUnlimitedWindow.ts +734 -0
  227. package/typechain-types/contracts/disperse/coinByRatio/index.ts +2 -0
  228. package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/IOwnable.ts +95 -0
  229. package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/MintDisperser.ts +22 -0
  230. package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/index.ts +1 -0
  231. package/typechain-types/contracts/index.ts +8 -0
  232. package/typechain-types/contracts/messaging/PrivateMessaging.ts +871 -0
  233. package/typechain-types/contracts/messaging/index.ts +4 -0
  234. package/typechain-types/contracts/mocks/index.ts +4 -0
  235. package/typechain-types/contracts/mocks/messaging/PrivateMessagingHarness.ts +951 -0
  236. package/typechain-types/contracts/mocks/messaging/index.ts +4 -0
  237. package/typechain-types/contracts/mocks/oracle/CotiPriceConsumerMock.ts +163 -0
  238. package/typechain-types/contracts/mocks/oracle/index.ts +4 -0
  239. package/typechain-types/contracts/mocks/token/ERC20DecimalsMock.ts +305 -0
  240. package/typechain-types/contracts/mocks/token/ERC20Mock.ts +324 -0
  241. package/typechain-types/contracts/mocks/token/PrivateERC20/EncryptedTokenReceiverMock.ts +108 -0
  242. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivacyBridgeERC20Mock.ts +1906 -0
  243. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20AuditorSupplyMock.ts +1296 -0
  244. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20CappedMock.ts +1270 -0
  245. package/typechain-types/contracts/mocks/{utils/mpc/Bitwise128BitTestsContract.ts → token/PrivateERC20/PrivateERC20GtCallerMock.ts} +47 -67
  246. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20Mock.ts +757 -25
  247. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/IPrivateERC20TransferAndCallEncrypted.ts +102 -0
  248. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/PrivateERC20ReentrantReceiverMock.ts +154 -0
  249. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/index.ts +5 -0
  250. package/typechain-types/contracts/mocks/token/PrivateERC20/PublicReentrantTokenReceiverMock.ts +155 -0
  251. package/typechain-types/contracts/mocks/token/PrivateERC20/PublicTokenReceiverBoolMock.ts +107 -0
  252. package/typechain-types/contracts/mocks/token/PrivateERC20/PublicTokenReceiverMock.ts +100 -0
  253. package/typechain-types/contracts/mocks/token/PrivateERC20/index.ts +10 -0
  254. package/typechain-types/contracts/mocks/token/index.ts +2 -0
  255. package/typechain-types/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock.ts +6 -6
  256. package/typechain-types/contracts/node/CotiNodeRewards.ts +566 -0
  257. package/typechain-types/contracts/node/SoulboundNodeNFT.sol/IERC5192.ts +123 -0
  258. package/typechain-types/contracts/node/SoulboundNodeNFT.sol/SoulboundNodeNFT.ts +975 -0
  259. package/typechain-types/contracts/node/SoulboundNodeNFT.sol/index.ts +5 -0
  260. package/typechain-types/contracts/node/index.ts +6 -0
  261. package/typechain-types/contracts/oracle/CotiPriceConsumer.ts +256 -0
  262. package/typechain-types/contracts/oracle/ICotiPriceConsumer.ts +119 -0
  263. package/typechain-types/contracts/oracle/IStdReference.ts +136 -0
  264. package/typechain-types/contracts/oracle/index.ts +6 -0
  265. package/typechain-types/contracts/privacyBridge/PrivacyBridge.ts +1642 -0
  266. package/typechain-types/contracts/privacyBridge/PrivacyBridgeCotiNative.ts +1884 -0
  267. package/typechain-types/contracts/privacyBridge/PrivacyBridgeERC20.sol/IHasDecimals.ts +84 -0
  268. package/typechain-types/contracts/privacyBridge/PrivacyBridgeERC20.sol/PrivacyBridgeERC20.ts +1906 -0
  269. package/typechain-types/contracts/privacyBridge/PrivacyBridgeERC20.sol/index.ts +5 -0
  270. package/typechain-types/contracts/privacyBridge/PrivacyBridgeUSDCe.ts +1906 -0
  271. package/typechain-types/contracts/privacyBridge/PrivacyBridgeUSDT.ts +1906 -0
  272. package/typechain-types/contracts/privacyBridge/PrivacyBridgeWADA.ts +1906 -0
  273. package/typechain-types/contracts/privacyBridge/PrivacyBridgeWBTC.ts +1906 -0
  274. package/typechain-types/contracts/privacyBridge/PrivacyBridgeWETH.ts +1906 -0
  275. package/typechain-types/contracts/privacyBridge/PrivacyBridgegCoti.ts +1906 -0
  276. package/typechain-types/contracts/privacyBridge/index.ts +13 -0
  277. package/typechain-types/contracts/token/PrivateERC20/IPrivateERC20.ts +439 -19
  278. package/typechain-types/contracts/token/PrivateERC20/ITokenReceiver.ts +100 -0
  279. package/typechain-types/contracts/token/PrivateERC20/ITokenReceiverEncrypted.ts +99 -0
  280. package/typechain-types/contracts/token/PrivateERC20/PrivateERC20.ts +763 -15
  281. package/typechain-types/contracts/token/PrivateERC20/index.ts +4 -0
  282. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateBridgedUSDC.ts +1270 -0
  283. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateCOTI.ts +1270 -0
  284. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateCOTITreasuryGovernanceToken.ts +1270 -0
  285. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateTetherUSD.ts +1270 -0
  286. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateWrappedADA.ts +1270 -0
  287. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateWrappedBTC.ts +1270 -0
  288. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateWrappedEther.ts +1270 -0
  289. package/typechain-types/contracts/token/PrivateERC20/tokens/index.ts +10 -0
  290. package/typechain-types/contracts/token/index.ts +2 -0
  291. package/typechain-types/contracts/token/points/CotiTokenPoints004.sol/COTITokenPoints004.ts +826 -0
  292. package/typechain-types/contracts/token/points/CotiTokenPoints004.ts +826 -0
  293. package/typechain-types/contracts/token/points/index.ts +4 -0
  294. package/typechain-types/factories/@openzeppelin/contracts/access/AccessControlEnumerable__factory.ts +276 -0
  295. package/typechain-types/factories/@openzeppelin/contracts/access/AccessControl__factory.ts +250 -0
  296. package/typechain-types/factories/@openzeppelin/contracts/access/IAccessControlEnumerable__factory.ts +244 -0
  297. package/typechain-types/factories/@openzeppelin/contracts/access/IAccessControl__factory.ts +218 -0
  298. package/typechain-types/factories/@openzeppelin/contracts/access/Ownable__factory.ts +22 -0
  299. package/typechain-types/factories/@openzeppelin/contracts/access/extensions/AccessControlEnumerable__factory.ts +316 -0
  300. package/typechain-types/factories/@openzeppelin/contracts/access/extensions/IAccessControlEnumerable__factory.ts +265 -0
  301. package/typechain-types/factories/@openzeppelin/contracts/access/extensions/index.ts +5 -0
  302. package/typechain-types/factories/@openzeppelin/contracts/access/index.ts +5 -0
  303. package/typechain-types/factories/@openzeppelin/contracts/index.ts +1 -0
  304. package/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1363__factory.ts +393 -0
  305. package/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC5267__factory.ts +71 -0
  306. package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors__factory.ts +127 -0
  307. package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors__factory.ts +111 -0
  308. package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors__factory.ts +128 -0
  309. package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/index.ts +6 -0
  310. package/typechain-types/factories/@openzeppelin/contracts/interfaces/index.ts +3 -0
  311. package/typechain-types/factories/@openzeppelin/contracts/security/Pausable__factory.ts +61 -0
  312. package/typechain-types/factories/@openzeppelin/contracts/security/index.ts +4 -0
  313. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.ts +330 -0
  314. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts +3 -3
  315. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable__factory.ts +364 -0
  316. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable__factory.ts +382 -0
  317. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit__factory.ts +540 -0
  318. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.ts +247 -0
  319. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts +4 -0
  320. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/index.ts +2 -0
  321. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/utils/SafeERC20__factory.ts +96 -0
  322. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/utils/index.ts +4 -0
  323. package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/ERC721__factory.ts +455 -0
  324. package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata__factory.ts +355 -0
  325. package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/extensions/index.ts +4 -0
  326. package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/index.ts +2 -0
  327. package/typechain-types/factories/@openzeppelin/contracts/utils/Nonces__factory.ts +57 -0
  328. package/typechain-types/factories/@openzeppelin/contracts/utils/Pausable__factory.ts +71 -0
  329. package/typechain-types/factories/@openzeppelin/contracts/utils/ReentrancyGuard__factory.ts +30 -0
  330. package/typechain-types/factories/@openzeppelin/contracts/utils/ShortStrings__factory.ts +83 -0
  331. package/typechain-types/factories/@openzeppelin/contracts/utils/Strings__factory.ts +90 -0
  332. package/typechain-types/factories/@openzeppelin/contracts/utils/cryptography/ECDSA__factory.ts +91 -0
  333. package/typechain-types/factories/@openzeppelin/contracts/utils/cryptography/EIP712__factory.ts +87 -0
  334. package/typechain-types/factories/@openzeppelin/contracts/utils/cryptography/index.ts +5 -0
  335. package/typechain-types/factories/@openzeppelin/contracts/utils/index.ts +7 -0
  336. package/typechain-types/factories/@openzeppelin/contracts/utils/math/SafeCast__factory.ts +118 -0
  337. package/typechain-types/factories/@openzeppelin/contracts/utils/math/index.ts +4 -0
  338. package/typechain-types/factories/contracts/disperse/coinByRatio/FixedRatioCoinDisperserLeftoverS1__factory.ts +802 -0
  339. package/typechain-types/factories/contracts/disperse/coinByRatio/FixedRatioCoinDisperserUnlimitedWindow__factory.ts +749 -0
  340. package/typechain-types/factories/contracts/disperse/coinByRatio/FixedRatioCoinDisperser__factory.ts +12 -1
  341. package/typechain-types/factories/contracts/disperse/coinByRatio/index.ts +2 -0
  342. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/IOwnable__factory.ts +35 -0
  343. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/MintDisperser__factory.ts +41 -1
  344. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/index.ts +1 -0
  345. package/typechain-types/factories/contracts/disperse/disperseToken/TokenDisperser__factory.ts +12 -1
  346. package/typechain-types/factories/contracts/index.ts +4 -0
  347. package/typechain-types/factories/contracts/messaging/PrivateMessaging__factory.ts +1035 -0
  348. package/typechain-types/factories/contracts/messaging/index.ts +4 -0
  349. package/typechain-types/factories/contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock__factory.ts +1 -1
  350. package/typechain-types/factories/contracts/mocks/index.ts +2 -0
  351. package/typechain-types/factories/contracts/mocks/messaging/PrivateMessagingHarness__factory.ts +1161 -0
  352. package/typechain-types/factories/contracts/mocks/messaging/index.ts +4 -0
  353. package/typechain-types/factories/contracts/mocks/oracle/CotiPriceConsumerMock__factory.ts +159 -0
  354. package/typechain-types/factories/contracts/mocks/oracle/index.ts +4 -0
  355. package/typechain-types/factories/contracts/mocks/token/ERC20DecimalsMock__factory.ts +432 -0
  356. package/typechain-types/factories/contracts/mocks/token/ERC20Mock__factory.ts +430 -0
  357. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/EncryptedTokenReceiverMock__factory.ts +125 -0
  358. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivacyBridgeERC20Mock__factory.ts +1885 -0
  359. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20AuditorSupplyMock__factory.ts +1540 -0
  360. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20CappedMock__factory.ts +1492 -0
  361. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20GtCallerMock__factory.ts +165 -0
  362. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20Mock__factory.ts +794 -52
  363. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/IPrivateERC20TransferAndCallEncrypted__factory.ts +54 -0
  364. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/PrivateERC20ReentrantReceiverMock__factory.ts +159 -0
  365. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/index.ts +5 -0
  366. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PublicReentrantTokenReceiverMock__factory.ts +164 -0
  367. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PublicTokenReceiverBoolMock__factory.ts +130 -0
  368. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PublicTokenReceiverMock__factory.ts +102 -0
  369. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/index.ts +9 -0
  370. package/typechain-types/factories/contracts/mocks/token/PrivateERC721/PrivateERC721URIStorageMock__factory.ts +1 -1
  371. package/typechain-types/factories/contracts/mocks/token/index.ts +2 -0
  372. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic128TestsContract__factory.ts +1 -1
  373. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic256TestsContract__factory.ts +1 -1
  374. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract__factory.ts +1 -1
  375. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise128TestsContract__factory.ts +1 -1
  376. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise256TestsContract__factory.ts +1 -1
  377. package/typechain-types/factories/contracts/mocks/utils/mpc/BitwiseTestsContract__factory.ts +1 -1
  378. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract__factory.ts +1 -1
  379. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract__factory.ts +1 -1
  380. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmeticWIthOverflowBitTestsContract.sol/CheckedArithmeticWithOverflowBitTestsContract__factory.ts +1 -1
  381. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison128TestsContract__factory.ts +1 -1
  382. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1TestsContract__factory.ts +1 -1
  383. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison256TestsContract__factory.ts +1 -1
  384. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison2TestsContract__factory.ts +1 -1
  385. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMax128TestsContract__factory.ts +1 -1
  386. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMax256TestsContract__factory.ts +1 -1
  387. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMaxTestsContract__factory.ts +1 -1
  388. package/typechain-types/factories/contracts/mocks/utils/mpc/MinimalImplementation__factory.ts +1 -1
  389. package/typechain-types/factories/contracts/mocks/utils/mpc/MinimalProxy__factory.ts +1 -1
  390. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous1TestsContract__factory.ts +1 -1
  391. package/typechain-types/factories/contracts/mocks/utils/mpc/MiscellaneousTestsContract__factory.ts +1 -1
  392. package/typechain-types/factories/contracts/mocks/utils/mpc/MpcOperations128TestContract__factory.ts +1 -1
  393. package/typechain-types/factories/contracts/mocks/utils/mpc/MpcOperationsTestContract__factory.ts +1 -1
  394. package/typechain-types/factories/contracts/mocks/utils/mpc/Mux128TestsContract__factory.ts +1 -1
  395. package/typechain-types/factories/contracts/mocks/utils/mpc/Mux256TestsContract__factory.ts +1 -1
  396. package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract__factory.ts +1 -1
  397. package/typechain-types/factories/contracts/mocks/utils/mpc/OnBoard128TestsContract__factory.ts +1 -1
  398. package/typechain-types/factories/contracts/mocks/utils/mpc/OnBoard256TestsContract__factory.ts +1 -1
  399. package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyImplementationV1__factory.ts +1 -1
  400. package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyImplementationV2__factory.ts +1 -1
  401. package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyProxy__factory.ts +1 -1
  402. package/typechain-types/factories/contracts/mocks/utils/mpc/Random128TestsContract__factory.ts +1 -1
  403. package/typechain-types/factories/contracts/mocks/utils/mpc/Random256TestsContract__factory.ts +1 -1
  404. package/typechain-types/factories/contracts/mocks/utils/mpc/Shift128TestsContract__factory.ts +1 -1
  405. package/typechain-types/factories/contracts/mocks/utils/mpc/Shift256TestsContract__factory.ts +1 -1
  406. package/typechain-types/factories/contracts/mocks/utils/mpc/ShiftTestsContract__factory.ts +1 -1
  407. package/typechain-types/factories/contracts/mocks/utils/mpc/StringTestsContract__factory.ts +1 -1
  408. package/typechain-types/factories/contracts/mocks/utils/mpc/Transfer128TestsContract__factory.ts +1 -1
  409. package/typechain-types/factories/contracts/mocks/utils/mpc/Transfer256TestsContract__factory.ts +1 -1
  410. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferScalarTestsContract__factory.ts +1 -1
  411. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferTestsContract__factory.ts +1 -1
  412. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract__factory.ts +1 -1
  413. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract__factory.ts +1 -1
  414. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract__factory.ts +1 -1
  415. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract__factory.ts +1 -1
  416. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract__factory.ts +1 -1
  417. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract__factory.ts +1 -1
  418. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract__factory.ts +1 -1
  419. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract__factory.ts +1 -1
  420. package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract__factory.ts +1 -1
  421. package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract__factory.ts +1 -1
  422. package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract__factory.ts +1 -1
  423. package/typechain-types/factories/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock__factory.ts +4 -22
  424. package/typechain-types/factories/contracts/node/CotiNodeRewards__factory.ts +576 -0
  425. package/typechain-types/factories/contracts/node/SoulboundNodeNFT.sol/IERC5192__factory.ts +54 -0
  426. package/typechain-types/factories/contracts/node/SoulboundNodeNFT.sol/SoulboundNodeNFT__factory.ts +1072 -0
  427. package/typechain-types/factories/contracts/node/SoulboundNodeNFT.sol/index.ts +5 -0
  428. package/typechain-types/factories/contracts/node/index.ts +5 -0
  429. package/typechain-types/factories/contracts/onboard/AccountOnboard__factory.ts +1 -1
  430. package/typechain-types/factories/contracts/oracle/CotiPriceConsumer__factory.ts +295 -0
  431. package/typechain-types/factories/contracts/oracle/ICotiPriceConsumer__factory.ts +73 -0
  432. package/typechain-types/factories/contracts/oracle/IStdReference__factory.ts +107 -0
  433. package/typechain-types/factories/contracts/oracle/index.ts +6 -0
  434. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeCotiNative__factory.ts +1753 -0
  435. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeERC20.sol/IHasDecimals__factory.ts +38 -0
  436. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeERC20.sol/PrivacyBridgeERC20__factory.ts +1766 -0
  437. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeERC20.sol/index.ts +5 -0
  438. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeUSDCe__factory.ts +1870 -0
  439. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeUSDT__factory.ts +1870 -0
  440. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeWADA__factory.ts +1870 -0
  441. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeWBTC__factory.ts +1870 -0
  442. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeWETH__factory.ts +1870 -0
  443. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridge__factory.ts +1444 -0
  444. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgegCoti__factory.ts +1870 -0
  445. package/typechain-types/factories/contracts/privacyBridge/index.ts +12 -0
  446. package/typechain-types/factories/contracts/token/PrivateERC20/IPrivateERC20__factory.ts +481 -35
  447. package/typechain-types/factories/contracts/token/PrivateERC20/ITokenReceiverEncrypted__factory.ts +53 -0
  448. package/typechain-types/factories/contracts/token/PrivateERC20/ITokenReceiver__factory.ts +54 -0
  449. package/typechain-types/factories/contracts/token/PrivateERC20/PrivateERC20__factory.ts +812 -52
  450. package/typechain-types/factories/contracts/token/PrivateERC20/index.ts +3 -0
  451. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateBridgedUSDC__factory.ts +1471 -0
  452. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateCOTITreasuryGovernanceToken__factory.ts +1477 -0
  453. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateCOTI__factory.ts +1468 -0
  454. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateTetherUSD__factory.ts +1471 -0
  455. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateWrappedADA__factory.ts +1471 -0
  456. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateWrappedBTC__factory.ts +1471 -0
  457. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateWrappedEther__factory.ts +1477 -0
  458. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/index.ts +10 -0
  459. package/typechain-types/factories/contracts/token/index.ts +1 -0
  460. package/typechain-types/factories/contracts/token/points/CotiTokenPoints004.sol/COTITokenPoints004__factory.ts +992 -0
  461. package/typechain-types/factories/contracts/token/points/CotiTokenPoints004__factory.ts +992 -0
  462. package/typechain-types/factories/contracts/token/points/index.ts +4 -0
  463. package/typechain-types/factories/contracts/utils/mpc/MpcCore__factory.ts +1 -1
  464. package/typechain-types/hardhat.d.ts +1414 -118
  465. package/typechain-types/index.ts +138 -2
  466. package/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol +0 -408
  467. package/typechain-types/contracts/mocks/utils/mpc/Arithmetic128BitTestsContract.ts +0 -341
  468. package/typechain-types/contracts/mocks/utils/mpc/Arithmetic256BitTestsContract.ts +0 -347
  469. package/typechain-types/contracts/mocks/utils/mpc/Bitwise256BitTestsContract.ts +0 -186
  470. package/typechain-types/contracts/mocks/utils/mpc/Comparison128BitTestsContract.ts +0 -260
  471. package/typechain-types/contracts/mocks/utils/mpc/Comparison256BitTestsContract.ts +0 -260
  472. package/typechain-types/contracts/mocks/utils/mpc/Miscellaneous128BitTestsContract.ts +0 -302
  473. package/typechain-types/contracts/mocks/utils/mpc/Miscellaneous256BitTestsContract.ts +0 -322
  474. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic128BitTestsContract__factory.ts +0 -349
  475. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic256BitTestsContract__factory.ts +0 -364
  476. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise128BitTestsContract__factory.ts +0 -182
  477. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise256BitTestsContract__factory.ts +0 -182
  478. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison128BitTestsContract__factory.ts +0 -255
  479. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison256BitTestsContract__factory.ts +0 -255
  480. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous128BitTestsContract__factory.ts +0 -332
  481. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous256BitTestsContract__factory.ts +0 -380
@@ -663,7 +663,7 @@ const _abi = [
663
663
  ] as const;
664
664
 
665
665
  const _bytecode =
666
- "0x608060405234801561001057600080fd5b50612629806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063c9d32ba911610050578063c9d32ba9146100f0578063f4fa211014610103578063f8ce73b81461011657600080fd5b80634717f97c14610077578063ad9926d6146100c8578063b4b92fac146100dd575b600080fd5b60005460ff80821691610100810482169162010000820481169163010000009004165b6040805160ff9586168152938516602085015291151583830152909216606082015290519081900360800190f35b6100db6100d636600461245e565b610129565b005b6100db6100eb36600461245e565b610766565b6100db6100fe36600461245e565b610ccc565b61009a61011136600461254a565b611232565b6100db61012436600461245e565b6115f5565b60008060008061014b8b60c001518c60e001518c606001518c60600151611b5b565b935093509350935061015c84611c46565b67ffffffffffffffff168860ff1614801561018b575061017b83611c46565b67ffffffffffffffff168760ff16145b80156101a2575061019b82611ce9565b1515861515145b80156101c257506101b281611c46565b67ffffffffffffffff168560ff16145b6102135760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c65640000000060448201526064015b60405180910390fd5b61022f8b600001518c60e001518c606001518c60600151611d7a565b9296509094509250905061024284611c46565b67ffffffffffffffff168860ff16148015610271575061026183611c46565b67ffffffffffffffff168760ff16145b8015610288575061028182611ce9565b1515861515145b80156102a8575061029881611c46565b67ffffffffffffffff168560ff16145b6102f45760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6103108b60c001518c602001518c606001518c60600151611d99565b9296509094509250905061032384611c46565b67ffffffffffffffff168860ff16148015610352575061034283611c46565b67ffffffffffffffff168760ff16145b8015610369575061036282611ce9565b1515861515145b8015610389575061037981611c46565b67ffffffffffffffff168560ff16145b6103d55760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6103f18b604001518c60e001518c606001518c60600151611db8565b9296509094509250905061040484611c46565b67ffffffffffffffff168860ff16148015610433575061042383611c46565b67ffffffffffffffff168760ff16145b801561044a575061044382611ce9565b1515861515145b801561046a575061045a81611c46565b67ffffffffffffffff168560ff16145b6104b65760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6104d28b60c001518c606001518c606001518c60600151611dd7565b929650909450925090506104e584611c46565b67ffffffffffffffff168860ff16148015610514575061050483611c46565b67ffffffffffffffff168760ff16145b801561052b575061052482611ce9565b1515861515145b801561054b575061053b81611c46565b67ffffffffffffffff168560ff16145b6105975760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6105b38b608001518c60e001518c606001518c60600151611df6565b929650909450925090506105c684611c46565b67ffffffffffffffff168860ff161480156105f557506105e583611c46565b67ffffffffffffffff168760ff16145b801561060c575061060582611ce9565b1515861515145b801561062c575061061c81611c46565b67ffffffffffffffff168560ff16145b6106785760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6106948b60c001518c60a001518c606001518c60600151611e15565b929650909450925090506106a784611c46565b67ffffffffffffffff168860ff161480156106d657506106c683611c46565b67ffffffffffffffff168760ff16145b80156106ed57506106e682611ce9565b1515861515145b801561070d57506106fd81611c46565b67ffffffffffffffff168560ff16145b6107595760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b5050505050505050505050565b6000806000806107888b600001518c60e001518c604001518c60600151611e34565b935093509350935061079984611c46565b67ffffffffffffffff168860ff161480156107c857506107b883611c46565b67ffffffffffffffff168760ff16145b80156107df57506107d882611ce9565b1515861515145b80156107ff57506107ef81611c46565b67ffffffffffffffff168560ff16145b61084b5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6108678b60c001518c602001518c604001518c60600151611e54565b9296509094509250905061087a84611c46565b67ffffffffffffffff168860ff161480156108a9575061089983611c46565b67ffffffffffffffff168760ff16145b80156108c057506108b982611ce9565b1515861515145b80156108e057506108d081611c46565b67ffffffffffffffff168560ff16145b61092c5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6109488b604001518c60e001518c604001518c60600151611e74565b9296509094509250905061095b84611c46565b67ffffffffffffffff168860ff1614801561098a575061097a83611c46565b67ffffffffffffffff168760ff16145b80156109a1575061099a82611ce9565b1515861515145b80156109c157506109b181611c46565b67ffffffffffffffff168560ff16145b610a0d5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b610a298b60c001518c606001518c604001518c60600151611e94565b92965090945092509050610a3c84611c46565b67ffffffffffffffff168860ff16148015610a6b5750610a5b83611c46565b67ffffffffffffffff168760ff16145b8015610a825750610a7b82611ce9565b1515861515145b8015610aa25750610a9281611c46565b67ffffffffffffffff168560ff16145b610aee5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b610b0a8b608001518c60e001518c604001518c60600151611eb4565b92965090945092509050610b1d84611c46565b67ffffffffffffffff168860ff16148015610b4c5750610b3c83611c46565b67ffffffffffffffff168760ff16145b8015610b635750610b5c82611ce9565b1515861515145b8015610b835750610b7381611c46565b67ffffffffffffffff168560ff16145b610bcf5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b610beb8b60c001518c60a001518c604001518c60600151611ed3565b92965090945092509050610bfe84611c46565b67ffffffffffffffff168860ff16148015610c2d5750610c1d83611c46565b67ffffffffffffffff168760ff16145b8015610c445750610c3d82611ce9565b1515861515145b8015610c645750610c5481611c46565b67ffffffffffffffff168560ff16145b610cb05760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6106948b60c001518c60e001518c604001518c60600151611ef2565b600080600080610cee8b600001518c60e001518c600001518c60600151611f11565b9350935093509350610cff84611c46565b67ffffffffffffffff168860ff16148015610d2e5750610d1e83611c46565b67ffffffffffffffff168760ff16145b8015610d455750610d3e82611ce9565b1515861515145b8015610d655750610d5581611c46565b67ffffffffffffffff168560ff16145b610db15760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b610dcd8b60c001518c602001518c600001518c60600151611f30565b92965090945092509050610de084611c46565b67ffffffffffffffff168860ff16148015610e0f5750610dff83611c46565b67ffffffffffffffff168760ff16145b8015610e265750610e1f82611ce9565b1515861515145b8015610e465750610e3681611c46565b67ffffffffffffffff168560ff16145b610e925760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b610eae8b60c001518c60e001518c600001518c60600151611f4f565b92965090945092509050610ec184611c46565b67ffffffffffffffff168860ff16148015610ef05750610ee083611c46565b67ffffffffffffffff168760ff16145b8015610f075750610f0082611ce9565b1515861515145b8015610f275750610f1781611c46565b67ffffffffffffffff168560ff16145b610f735760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b610f8f8b604001518c60e001518c600001518c60600151611f6e565b92965090945092509050610fa284611c46565b67ffffffffffffffff168860ff16148015610fd15750610fc183611c46565b67ffffffffffffffff168760ff16145b8015610fe85750610fe182611ce9565b1515861515145b80156110085750610ff881611c46565b67ffffffffffffffff168560ff16145b6110545760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6110708b60c001518c606001518c600001518c60600151611f8e565b9296509094509250905061108384611c46565b67ffffffffffffffff168860ff161480156110b257506110a283611c46565b67ffffffffffffffff168760ff16145b80156110c957506110c282611ce9565b1515861515145b80156110e957506110d981611c46565b67ffffffffffffffff168560ff16145b6111355760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6111518b608001518c60e001518c600001518c60600151611fae565b9296509094509250905061116484611c46565b67ffffffffffffffff168860ff16148015611193575061118383611c46565b67ffffffffffffffff168760ff16145b80156111aa57506111a382611ce9565b1515861515145b80156111ca57506111ba81611c46565b67ffffffffffffffff168560ff16145b6112165760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6106948b60c001518c60a001518c600001518c60600151611fce565b60008060008061128060405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6112b56040518060a0016040528060008152602001600081526020016000815260200160008152602001600060ff1681525090565b6112ea6040518060a0016040528060008152602001600081526020016000815260200160008152602001600060ff1681525090565b6112f38b611fee565b83526112fe8a611fee565b602084015261130f60ff8c16612057565b604084015261132060ff8b16612057565b606084015261133160ff8c166120c1565b608084015261134260ff8b166120c1565b60a084015261135360ff8c1661212d565b60c084015261136460ff8b1661212d565b60e084015261137289611fee565b825261138060ff8a16612057565b602083015261139160ff8a166120c1565b60408301526113a260ff8a1661212d565b606083015260ff891660808301526113b988611fee565b81526113c760ff8916612057565b60208201526113d860ff89166120c1565b60408201526113e960ff891661212d565b606082015260ff8816608082015282516020840151835183516000938493849384936114179392919061219d565b9350935093509350611428846121bb565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055611463836121bb565b600060016101000a81548160ff021916908360ff16021790555061148682611ce9565b6000805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff9092169190911790556114c5816121bb565b6000805460ff92831663010000009081027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff831681179384905561152c948c948c948c94938316908316179261010082048316926201000083048116929190910416610ccc565b60005461155d9088908890889060ff80821691610100810482169162010000820481169163010000009004166115f5565b60005461158e9088908890889060ff8082169161010081048216916201000082048116916301000000900416610766565b6000546115bf9088908890889060ff8082169161010081048216916201000082048116916301000000900416610129565b505060005460ff8082169f610100830482169f5062010000830482169e506301000000909204169b509950505050505050505050565b6000806000806116178b600001518c60e001518c602001518c606001516121cb565b935093509350935061162884611c46565b67ffffffffffffffff168860ff16148015611657575061164783611c46565b67ffffffffffffffff168760ff16145b801561166e575061166782611ce9565b1515861515145b801561168e575061167e81611c46565b67ffffffffffffffff168560ff16145b6116da5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6116f68b60c001518c602001518c602001518c606001516121eb565b9296509094509250905061170984611c46565b67ffffffffffffffff168860ff16148015611738575061172883611c46565b67ffffffffffffffff168760ff16145b801561174f575061174882611ce9565b1515861515145b801561176f575061175f81611c46565b67ffffffffffffffff168560ff16145b6117bb5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6117d78b604001518c60e001518c602001518c6060015161220b565b929650909450925090506117ea84611c46565b67ffffffffffffffff168860ff16148015611819575061180983611c46565b67ffffffffffffffff168760ff16145b8015611830575061182982611ce9565b1515861515145b8015611850575061184081611c46565b67ffffffffffffffff168560ff16145b61189c5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6118b88b60c001518c606001518c602001518c6060015161222a565b929650909450925090506118cb84611c46565b67ffffffffffffffff168860ff161480156118fa57506118ea83611c46565b67ffffffffffffffff168760ff16145b8015611911575061190a82611ce9565b1515861515145b8015611931575061192181611c46565b67ffffffffffffffff168560ff16145b61197d5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6119998b60c001518c60e001518c602001518c60600151612249565b929650909450925090506119ac84611c46565b67ffffffffffffffff168860ff161480156119db57506119cb83611c46565b67ffffffffffffffff168760ff16145b80156119f257506119eb82611ce9565b1515861515145b8015611a125750611a0281611c46565b67ffffffffffffffff168560ff16145b611a5e5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b611a7a8b608001518c60e001518c602001518c60600151612268565b92965090945092509050611a8d84611c46565b67ffffffffffffffff168860ff16148015611abc5750611aac83611c46565b67ffffffffffffffff168760ff16145b8015611ad35750611acc82611ce9565b1515861515145b8015611af35750611ae381611c46565b67ffffffffffffffff168560ff16145b611b3f5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6106948b60c001518c60a001518c602001518c60600151612288565b600080808080808080606463c2ff267a611b796004808080876122a4565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffffffff0000000000000000000000000000000000000000000000000000009091166004820152602481018f9052604481018e9052606481018d9052608481018c905260a4016080604051808303816000875af1158015611c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c30919061259e565b929f919e509c50909a5098505050505050505050565b60006064630cfed56160045b60f81b846040518363ffffffff1660e01b8152600401611ca09291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6020604051808303816000875af1158015611cbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce39190612603565b92915050565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260006004820181905260248201839052908190606490630cfed561906044016020604051808303816000875af1158015611d4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d719190612603565b15159392505050565b600080808080808080606463c2ff267a611b79600160048080876122a4565b600080808080808080606463c2ff267a611b79600460018180876122a4565b600080808080808080606463c2ff267a611b79600260048080876122a4565b600080808080808080606463c2ff267a611b79600460028180876122a4565b600080808080808080606463c2ff267a611b79600360048080876122a4565b600080808080808080606463c2ff267a611b79600460038180876122a4565b600080808080808080606463c2ff267a611b7960016004600381876122a4565b600080808080808080606463c2ff267a611b7960046001600382876122a4565b600080808080808080606463c2ff267a611b7960026004600381876122a4565b600080808080808080606463c2ff267a611b7960046002600382876122a4565b600080808080808080606463c2ff267a611b79600360048181876122a4565b600080808080808080606463c2ff267a611b79600460038082876122a4565b600080808080808080606463c2ff267a611b79600480600381876122a4565b600080808080808080606463c2ff267a611b79600160048181876122a4565b600080808080808080606463c2ff267a611b79600460018082876122a4565b600080808080808080606463c2ff267a611b79600480600181876122a4565b600080808080808080606463c2ff267a611b7960026004600181876122a4565b600080808080808080606463c2ff267a611b7960046002600182876122a4565b600080808080808080606463c2ff267a611b7960036004600181876122a4565b600080808080808080606463c2ff267a611b7960046003600182876122a4565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0100000000000000000000000000000000000000000000000000000000000000600482015260ff8216602482015260009060649063d9b60b6090604401611ca0565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0200000000000000000000000000000000000000000000000000000000000000600482015261ffff8216602482015260009060649063d9b60b6090604401611ca0565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0300000000000000000000000000000000000000000000000000000000000000600482015263ffffffff8216602482015260009060649063d9b60b6090604401611ca0565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b6090604401611ca0565b600080808080808080606463c2ff267a611b796001808080876122a4565b60006064630cfed5616001611c52565b600080808080808080606463c2ff267a611b7960016004600281876122a4565b600080808080808080606463c2ff267a611b7960046001600282876122a4565b600080808080808080606463c2ff267a611b79600260048181876122a4565b600080808080808080606463c2ff267a611b79600460028082876122a4565b600080808080808080606463c2ff267a611b79600480600281876122a4565b600080808080808080606463c2ff267a611b7960036004600281876122a4565b600080808080808080606463c2ff267a611b7960046003600282875b60008160028111156122b8576122b86125d4565b60ff1660088460068111156122cf576122cf6125d4565b61ffff16901b61ffff1660108660068111156122ed576122ed6125d4565b62ffffff16901b62ffffff16601888600681111561230d5761230d6125d4565b63ffffffff16901b63ffffffff1660208a600681111561232f5761232f6125d4565b64ffffffffff16901b1717171760d81b9695505050505050565b604051610100810167ffffffffffffffff81118282101715612394577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803560ff811681146123ab57600080fd5b919050565b600060a082840312156123c257600080fd5b60405160a0810181811067ffffffffffffffff8211171561240c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526124426080840161239a565b60808201525092915050565b803580151581146123ab57600080fd5b60008060008060008060008789036102c081121561247b57600080fd5b6101008082121561248b57600080fd5b612493612349565b91508935825260208a0135602083015260408a0135604083015260608a0135606083015260808a0135608083015260a08a013560a083015260c08a013560c083015260e08a013560e08301528198506124ee8b828c016123b0565b97505050612500896101a08a016123b0565b945061250f610240890161239a565b935061251e610260890161239a565b925061252d610280890161244e565b915061253c6102a0890161239a565b905092959891949750929550565b6000806000806080858703121561256057600080fd5b6125698561239a565b93506125776020860161239a565b92506125856040860161239a565b91506125936060860161239a565b905092959194509250565b600080600080608085870312156125b457600080fd5b505082516020840151604085015160609095015191969095509092509050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006020828403121561261557600080fd5b505191905056fea164736f6c6343000813000a";
666
+ "0x6080806040523461001657611e94908161001c8239f35b600080fdfe608080604052600436101561001357600080fd5b60003560e01c9081634717f97c1461054e57508063ad9926d614610531578063b4b92fac14610514578063c9d32ba9146104f7578063f4fa2110146100855763f8ce73b81461006157600080fd5b346100805761007e6100723661065b565b95949094939193610dd3565b005b600080fd5b346100805760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100805760ff60043516600435036100805760ff60243516602435036100805760ff60443516604435036100805760ff6064351660643503610080576040516100f8816105b2565b600081526000602082015260408101600081526060820160008152608083016000815260a084019060008252600060c0860152600060e086015261013a611a44565b92610143611a44565b9461014f600435611b06565b875261015c602435611b06565b602088015261016f60ff60043516611c6f565b905261017f60ff60243516611c6f565b905261018f60ff60043516611ce3565b905261019f60ff60243516611ce3565b90526101af60ff60043516611d59565b60c08401526101c260ff60243516611d59565b60e08401526101d2604435611b06565b81526101e260ff60443516611c6f565b60208201526101f560ff60443516611ce3565b604082015261020860ff60443516611d59565b606082015260ff604435166080820152610223606435611b06565b825261023360ff60643516611c6f565b602083015261024660ff60643516611ce3565b604083015261025960ff60643516611d59565b606083015260ff606435166080830152825192602081015182518451916040519663617f933d60e11b88527f01010101000000000000000000000000000000000000000000000000000000006004890152602488015260448701526064860152608485015260808460a481600060645af19384156104eb5761039f6103f491610468966000806000916000936104a3575b6103659394509060ff6102ff61032e93611ba7565b167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006000541617600055611ba7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff61ff006000549260081b16911617600055611a6f565b15157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff62ff00006000549260101b16911617600055611ba7565b63ff0000006000549160181b167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff8216178060005560ff8160181c169160ff80808460101c169360081c169116878787610850565b61041c60005460ff8160181c169060ff8160101c169060ff808260081c169116878787610dd3565b61044460005460ff8160181c169060ff8160101c169060ff808260081c1691168787876111f9565b6000549060ff8260181c169360ff8360101c169360ff808560081c1694169261161f565b6000546040805160ff8084168252600884901c81166020830152601084901c811615159282019290925260189290921c166060820152608090f35b5050505061036560ff61032e6104d36102ff9460803d6080116104e4575b6104cb818361061a565b810190611c4d565b9296509194509092509050836102ea565b503d6104c1565b6040513d6000823e3d90fd5b346100805761007e6105083661065b565b95949094939193610850565b346100805761007e6105253661065b565b959490949391936111f9565b346100805761007e6105423661065b565b9594909493919361161f565b346100805760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100805760005460ff8082168352600882901c81166020840152601082901c81161515604084015260189190911c166060820152608090f35b610100810190811067ffffffffffffffff8211176105cf57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60a0810190811067ffffffffffffffff8211176105cf57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176105cf57604052565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc81016102c08112610080576101001361008057604091825161069d816105b2565b60043581526024356020820152604435848201526064356060820152608435608082015260a43560a082015260c43560c082015260e43560e08201529260a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefc84011261008057805161070f816105fe565b61010435815261012435602082015261014435828201526101643560608201526101843560ff8116810361008057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe5c91608060a09401529401126100805780519061077a826105fe565b6101a43582526101c43560208301526101e435908201526102043560608201526102243560ff81168103610080576080820152906102443560ff8116810361008057906102643560ff81168103610080579061028435801515810361008057906102a43560ff811681036100805790565b156107f257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c6564000000006044820152fd5b929491959395835160e085015183516060840151916040519363617f933d60e11b85527f01040104000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104eb5761090991600091600092600091600093610d9b575b506108e867ffffffffffffffff91611dd3565b1660ff8b16149283610d79575b5082610d61575b5081610d41575b506107eb565b60c0840151602085015183516060840151916040519363617f933d60e11b85527f04010104000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104eb5761099d91600091600092600091600093610d9b57506108e867ffffffffffffffff91611dd3565b60c084015160e085015183516060840151916040519363617f933d60e11b85527f04040104000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104eb57610a3191600091600092600091600093610d9b57506108e867ffffffffffffffff91611dd3565b604084015160e085015183516060840151916040519363617f933d60e11b85527f02040104000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104eb57610ac591600091600092600091600093610d9b57506108e867ffffffffffffffff91611dd3565b60c0840151606085015183516060840151916040519363617f933d60e11b85527f04020104000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104eb57610b5991600091600092600091600093610d9b57506108e867ffffffffffffffff91611dd3565b608084015160e085015183516060840151916040519363617f933d60e11b85527f03040104000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104eb57610bed91600091600092600091600093610d9b57506108e867ffffffffffffffff91611dd3565b606060a060c08601519501519251910151916040519463617f933d60e11b86527f04030104000000000000000000000000000000000000000000000000000000006004870152602486015260448501526064840152608483015260808260a481600060645af19182156104eb57610ca695600095600096600093600096610d08575b5067ffffffffffffffff610c8460ff92611dd3565b169116149586610ce4575b505084610cca575b505082610ca8575b50506107eb565b565b60ff919250610cbf67ffffffffffffffff91611dd3565b169116143880610c9f565b610cd691929450611a6f565b151590151514913880610c97565b60ff91929650610cfc67ffffffffffffffff91611dd3565b16911614933880610c8f565b67ffffffffffffffff9850610c84965060ff9450610d35915060803d6080116104e4576104cb818361061a565b91999197509450610c6f565b67ffffffffffffffff9150610d5590611dd3565b1660ff87161438610903565b610d6c919250611a6f565b15158515151490386108fc565b67ffffffffffffffff919350610d8e90611dd3565b1660ff8b161491386108f5565b905067ffffffffffffffff93506108e89250610dc6915060803d6080116104e4576104cb818361061a565b91945090929091906108d5565b929491959395835160e085015160208401516060840151916040519363617f933d60e11b85527f01040204000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104eb57610e6d91600091600092600091600093610d9b57506108e867ffffffffffffffff91611dd3565b60c0840151602085015160208401516060840151916040519363617f933d60e11b85527f04010204000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104eb57610f0491600091600092600091600093610d9b57506108e867ffffffffffffffff91611dd3565b604084015160e085015160208401516060840151916040519363617f933d60e11b85527f02040204000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104eb57610f9b91600091600092600091600093610d9b57506108e867ffffffffffffffff91611dd3565b60c0840151606085015160208401516060840151916040519363617f933d60e11b85527f04020204000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104eb5761103291600091600092600091600093610d9b57506108e867ffffffffffffffff91611dd3565b60c084015160e085015160208401516060840151916040519363617f933d60e11b85527f04040204000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104eb576110c991600091600092600091600093610d9b57506108e867ffffffffffffffff91611dd3565b608084015160e085015160208401516060840151916040519363617f933d60e11b85527f03040204000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104eb5761116091600091600092600091600093610d9b57506108e867ffffffffffffffff91611dd3565b6060602060a060c0870151960151930151910151916040519463617f933d60e11b86527f04030204000000000000000000000000000000000000000000000000000000006004870152602486015260448501526064840152608483015260808260a481600060645af19182156104eb57610ca695600095600096600093600096610d08575067ffffffffffffffff610c8460ff92611dd3565b929491959395835160e085015160408401516060840151916040519363617f933d60e11b85527f01040304000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104eb5761129391600091600092600091600093610d9b57506108e867ffffffffffffffff91611dd3565b60c0840151602085015160408401516060840151916040519363617f933d60e11b85527f04010304000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104eb5761132a91600091600092600091600093610d9b57506108e867ffffffffffffffff91611dd3565b604084015160e085015160408401516060840151916040519363617f933d60e11b85527f02040304000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104eb576113c191600091600092600091600093610d9b57506108e867ffffffffffffffff91611dd3565b60c0840151606085015160408401516060840151916040519363617f933d60e11b85527f04020304000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104eb5761145891600091600092600091600093610d9b57506108e867ffffffffffffffff91611dd3565b608084015160e085015160408401516060840151916040519363617f933d60e11b85527f03040304000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104eb576114ef91600091600092600091600093610d9b57506108e867ffffffffffffffff91611dd3565b60c084015160a085015160408401516060840151916040519363617f933d60e11b85527f04030304000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104eb5761158691600091600092600091600093610d9b57506108e867ffffffffffffffff91611dd3565b6060604060e060c0870151960151930151910151916040519463617f933d60e11b86527f04040304000000000000000000000000000000000000000000000000000000006004870152602486015260448501526064840152608483015260808260a481600060645af19182156104eb57610ca695600095600096600093600096610d08575067ffffffffffffffff610c8460ff92611dd3565b92949195939560c084015160e085015160608401516060840151916040519363617f933d60e11b85527f04040404000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104eb576116bc91600091600092600091600093610d9b57506108e867ffffffffffffffff91611dd3565b835160e085015160608401516060840151916040519363617f933d60e11b85527f01040404000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104eb5761175091600091600092600091600093610d9b57506108e867ffffffffffffffff91611dd3565b60c0840151602085015160608401516060840151916040519363617f933d60e11b85527f04010404000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104eb576117e791600091600092600091600093610d9b57506108e867ffffffffffffffff91611dd3565b604084015160e085015160608401516060840151916040519363617f933d60e11b85527f02040404000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104eb5761187e91600091600092600091600093610d9b57506108e867ffffffffffffffff91611dd3565b60c0840151606085015160608401516060840151916040519363617f933d60e11b85527f04020404000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104eb5761191591600091600092600091600093610d9b57506108e867ffffffffffffffff91611dd3565b608084015160e085015160608401516060840151916040519363617f933d60e11b85527f03040404000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104eb576119ac91600091600092600091600093610d9b57506108e867ffffffffffffffff91611dd3565b60608060a060c0870151960151930151910151916040519463617f933d60e11b86527f04030404000000000000000000000000000000000000000000000000000000006004870152602486015260448501526064840152608483015260808260a481600060645af19182156104eb57610ca695600095600096600093600096610d08575067ffffffffffffffff610c8460ff92611dd3565b60405190611a51826105fe565b60006080838281528260208201528260408201528260608201520152565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260009182600483015260248201526020816044818560645af1918215611afa578092611ac3575b5050151590565b9091506020823d8211611af2575b81611ade6020938361061a565b81010312611aef5750513880611abc565b80fd5b3d9150611ad1565b604051903d90823e3d90fd5b60ff604051917fd9b60b600000000000000000000000000000000000000000000000000000000083527f01000000000000000000000000000000000000000000000000000000000000006004840152166024820152602081604481600060645af19081156104eb57600091611b79575090565b906020823d8211611b9f575b81611b926020938361061a565b81010312611aef57505190565b3d9150611b85565b604051907f0cfed5610000000000000000000000000000000000000000000000000000000082527f010000000000000000000000000000000000000000000000000000000000000060048301526024820152602081604481600060645af180156104eb57600090611c1b575b60ff91501690565b6020823d8211611c45575b81611c336020938361061a565b81010312611aef575060ff9051611c13565b3d9150611c26565b9190826080910312610080578151916020810151916060604083015192015190565b61ffff604051917fd9b60b600000000000000000000000000000000000000000000000000000000083527f02000000000000000000000000000000000000000000000000000000000000006004840152166024820152602081604481600060645af19081156104eb57600091611b79575090565b63ffffffff604051917fd9b60b600000000000000000000000000000000000000000000000000000000083527f03000000000000000000000000000000000000000000000000000000000000006004840152166024820152602081604481600060645af19081156104eb57600091611b79575090565b67ffffffffffffffff604051917fd9b60b600000000000000000000000000000000000000000000000000000000083527f04000000000000000000000000000000000000000000000000000000000000006004840152166024820152602081604481600060645af19081156104eb57600091611b79575090565b604051907f0cfed5610000000000000000000000000000000000000000000000000000000082527f040000000000000000000000000000000000000000000000000000000000000060048301526024820152602081604481600060645af180156104eb57600090611e4e575b67ffffffffffffffff91501690565b6020823d8211611e7f575b81611e666020938361061a565b81010312611aef575067ffffffffffffffff9051611e3f565b3d9150611e5956fea164736f6c6343000814000a";
667
667
 
668
668
  type TransferWithAllowance64_64TestsContractConstructorParams =
669
669
  | [signer?: Signer]
@@ -663,7 +663,7 @@ const _abi = [
663
663
  ] as const;
664
664
 
665
665
  const _bytecode =
666
- "0x608060405234801561001057600080fd5b50612638806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063505b1e0c11610050578063505b1e0c146100f0578063f4fa211014610103578063f825a8e81461011657600080fd5b806333c92907146100775780634717f97c1461008c5780634b5611de146100dd575b600080fd5b61008a61008536600461246d565b610129565b005b60005460ff80821691610100810482169162010000820481169163010000009004165b6040805160ff9586168152938516602085015291151583830152909216606082015290519081900360800190f35b61008a6100eb36600461246d565b610766565b61008a6100fe36600461246d565b610ccc565b6100af610111366004612559565b611232565b61008a61012436600461246d565b6115f5565b60008060008061014b8b600001518c60e001518c602001518c60000151611b5b565b935093509350935061015c84611c48565b67ffffffffffffffff168860ff1614801561018b575061017b83611c48565b67ffffffffffffffff168760ff16145b80156101a2575061019b82611ceb565b1515861515145b80156101c257506101b281611c48565b67ffffffffffffffff168560ff16145b6102135760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c65640000000060448201526064015b60405180910390fd5b61022f8b60c001518c602001518c602001518c60000151611d7c565b9296509094509250905061024284611c48565b67ffffffffffffffff168860ff16148015610271575061026183611c48565b67ffffffffffffffff168760ff16145b8015610288575061028182611ceb565b1515861515145b80156102a8575061029881611c48565b67ffffffffffffffff168560ff16145b6102f45760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6103108b604001518c60e001518c602001518c60000151611d9c565b9296509094509250905061032384611c48565b67ffffffffffffffff168860ff16148015610352575061034283611c48565b67ffffffffffffffff168760ff16145b8015610369575061036282611ceb565b1515861515145b8015610389575061037981611c48565b67ffffffffffffffff168560ff16145b6103d55760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6103f18b60c001518c606001518c602001518c60000151611dbc565b9296509094509250905061040484611c48565b67ffffffffffffffff168860ff16148015610433575061042383611c48565b67ffffffffffffffff168760ff16145b801561044a575061044382611ceb565b1515861515145b801561046a575061045a81611c48565b67ffffffffffffffff168560ff16145b6104b65760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6104d28b60c001518c60e001518c602001518c60000151611ddc565b929650909450925090506104e584611c48565b67ffffffffffffffff168860ff16148015610514575061050483611c48565b67ffffffffffffffff168760ff16145b801561052b575061052482611ceb565b1515861515145b801561054b575061053b81611c48565b67ffffffffffffffff168560ff16145b6105975760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6105b38b608001518c60e001518c602001518c60000151611dfc565b929650909450925090506105c684611c48565b67ffffffffffffffff168860ff161480156105f557506105e583611c48565b67ffffffffffffffff168760ff16145b801561060c575061060582611ceb565b1515861515145b801561062c575061061c81611c48565b67ffffffffffffffff168560ff16145b6106785760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6106948b60c001518c60a001518c602001518c60000151611e1d565b929650909450925090506106a784611c48565b67ffffffffffffffff168860ff161480156106d657506106c683611c48565b67ffffffffffffffff168760ff16145b80156106ed57506106e682611ceb565b1515861515145b801561070d57506106fd81611c48565b67ffffffffffffffff168560ff16145b6107595760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b5050505050505050505050565b6000806000806107888b600001518c60e001518c600001518c60000151611e3e565b935093509350935061079984611c48565b67ffffffffffffffff168860ff161480156107c857506107b883611c48565b67ffffffffffffffff168760ff16145b80156107df57506107d882611ceb565b1515861515145b80156107ff57506107ef81611c48565b67ffffffffffffffff168560ff16145b61084b5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6108678b60c001518c602001518c600001518c60000151611e5d565b9296509094509250905061087a84611c48565b67ffffffffffffffff168860ff161480156108a9575061089983611c48565b67ffffffffffffffff168760ff16145b80156108c057506108b982611ceb565b1515861515145b80156108e057506108d081611c48565b67ffffffffffffffff168560ff16145b61092c5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6109488b60c001518c60e001518c600001518c60000151611e7c565b9296509094509250905061095b84611c48565b67ffffffffffffffff168860ff1614801561098a575061097a83611c48565b67ffffffffffffffff168760ff16145b80156109a1575061099a82611ceb565b1515861515145b80156109c157506109b181611c48565b67ffffffffffffffff168560ff16145b610a0d5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b610a298b604001518c60e001518c600001518c60000151611e9b565b92965090945092509050610a3c84611c48565b67ffffffffffffffff168860ff16148015610a6b5750610a5b83611c48565b67ffffffffffffffff168760ff16145b8015610a825750610a7b82611ceb565b1515861515145b8015610aa25750610a9281611c48565b67ffffffffffffffff168560ff16145b610aee5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b610b0a8b60c001518c606001518c600001518c60000151611ebb565b92965090945092509050610b1d84611c48565b67ffffffffffffffff168860ff16148015610b4c5750610b3c83611c48565b67ffffffffffffffff168760ff16145b8015610b635750610b5c82611ceb565b1515861515145b8015610b835750610b7381611c48565b67ffffffffffffffff168560ff16145b610bcf5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b610beb8b608001518c60e001518c600001518c60000151611edb565b92965090945092509050610bfe84611c48565b67ffffffffffffffff168860ff16148015610c2d5750610c1d83611c48565b67ffffffffffffffff168760ff16145b8015610c445750610c3d82611ceb565b1515861515145b8015610c645750610c5481611c48565b67ffffffffffffffff168560ff16145b610cb05760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6106948b60c001518c60a001518c600001518c60000151611efb565b600080600080610cee8b600001518c60e001518c606001518c60000151611f1b565b9350935093509350610cff84611c48565b67ffffffffffffffff168860ff16148015610d2e5750610d1e83611c48565b67ffffffffffffffff168760ff16145b8015610d455750610d3e82611ceb565b1515861515145b8015610d655750610d5581611c48565b67ffffffffffffffff168560ff16145b610db15760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b610dcd8b60c001518c602001518c606001518c60000151611f3a565b92965090945092509050610de084611c48565b67ffffffffffffffff168860ff16148015610e0f5750610dff83611c48565b67ffffffffffffffff168760ff16145b8015610e265750610e1f82611ceb565b1515861515145b8015610e465750610e3681611c48565b67ffffffffffffffff168560ff16145b610e925760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b610eae8b60c001518c60e001518c606001518c60000151611f59565b92965090945092509050610ec184611c48565b67ffffffffffffffff168860ff16148015610ef05750610ee083611c48565b67ffffffffffffffff168760ff16145b8015610f075750610f0082611ceb565b1515861515145b8015610f275750610f1781611c48565b67ffffffffffffffff168560ff16145b610f735760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b610f8f8b604001518c60e001518c606001518c60000151611f78565b92965090945092509050610fa284611c48565b67ffffffffffffffff168860ff16148015610fd15750610fc183611c48565b67ffffffffffffffff168760ff16145b8015610fe85750610fe182611ceb565b1515861515145b80156110085750610ff881611c48565b67ffffffffffffffff168560ff16145b6110545760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6110708b60c001518c606001518c606001518c60000151611f98565b9296509094509250905061108384611c48565b67ffffffffffffffff168860ff161480156110b257506110a283611c48565b67ffffffffffffffff168760ff16145b80156110c957506110c282611ceb565b1515861515145b80156110e957506110d981611c48565b67ffffffffffffffff168560ff16145b6111355760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6111518b608001518c60e001518c606001518c60000151611fb8565b9296509094509250905061116484611c48565b67ffffffffffffffff168860ff16148015611193575061118383611c48565b67ffffffffffffffff168760ff16145b80156111aa57506111a382611ceb565b1515861515145b80156111ca57506111ba81611c48565b67ffffffffffffffff168560ff16145b6112165760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6106948b60c001518c60a001518c606001518c60000151611fd8565b60008060008061128060405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6112b56040518060a0016040528060008152602001600081526020016000815260200160008152602001600060ff1681525090565b6112ea6040518060a0016040528060008152602001600081526020016000815260200160008152602001600060ff1681525090565b6112f38b611ff8565b83526112fe8a611ff8565b602084015261130f60ff8c16612061565b604084015261132060ff8b16612061565b606084015261133160ff8c166120cb565b608084015261134260ff8b166120cb565b60a084015261135360ff8c16612137565b60c084015261136460ff8b16612137565b60e084015261137289611ff8565b825261138060ff8a16612061565b602083015261139160ff8a166120cb565b60408301526113a260ff8a16612137565b606083015260ff891660808301526113b988611ff8565b81526113c760ff8916612061565b60208201526113d860ff89166120cb565b60408201526113e960ff8916612137565b606082015260ff881660808201528251602084015183518351600093849384938493611417939291906121a7565b9350935093509350611428846121c5565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055611463836121c5565b600060016101000a81548160ff021916908360ff16021790555061148682611ceb565b6000805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff9092169190911790556114c5816121c5565b6000805460ff92831663010000009081027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff831681179384905561152c948c948c948c94938316908316179261010082048316926201000083048116929190910416610766565b60005461155d9088908890889060ff8082169161010081048216916201000082048116916301000000900416610129565b60005461158e9088908890889060ff80821691610100810482169162010000820481169163010000009004166115f5565b6000546115bf9088908890889060ff8082169161010081048216916201000082048116916301000000900416610ccc565b505060005460ff8082169f610100830482169f5062010000830482169e506301000000909204169b509950505050505050505050565b6000806000806116178b600001518c60e001518c604001518c600001516121d5565b935093509350935061162884611c48565b67ffffffffffffffff168860ff16148015611657575061164783611c48565b67ffffffffffffffff168760ff16145b801561166e575061166782611ceb565b1515861515145b801561168e575061167e81611c48565b67ffffffffffffffff168560ff16145b6116da5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6116f68b60c001518c602001518c604001518c600001516121f5565b9296509094509250905061170984611c48565b67ffffffffffffffff168860ff16148015611738575061172883611c48565b67ffffffffffffffff168760ff16145b801561174f575061174882611ceb565b1515861515145b801561176f575061175f81611c48565b67ffffffffffffffff168560ff16145b6117bb5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6117d78b608001518c60e001518c604001518c60000151612215565b929650909450925090506117ea84611c48565b67ffffffffffffffff168860ff16148015611819575061180983611c48565b67ffffffffffffffff168760ff16145b8015611830575061182982611ceb565b1515861515145b8015611850575061184081611c48565b67ffffffffffffffff168560ff16145b61189c5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6118b88b60c001518c60a001518c604001518c60000151612235565b929650909450925090506118cb84611c48565b67ffffffffffffffff168860ff161480156118fa57506118ea83611c48565b67ffffffffffffffff168760ff16145b8015611911575061190a82611ceb565b1515861515145b8015611931575061192181611c48565b67ffffffffffffffff168560ff16145b61197d5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6119998b604001518c60e001518c604001518c60000151612255565b929650909450925090506119ac84611c48565b67ffffffffffffffff168860ff161480156119db57506119cb83611c48565b67ffffffffffffffff168760ff16145b80156119f257506119eb82611ceb565b1515861515145b8015611a125750611a0281611c48565b67ffffffffffffffff168560ff16145b611a5e5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b611a7a8b60c001518c606001518c604001518c60000151612276565b92965090945092509050611a8d84611c48565b67ffffffffffffffff168860ff16148015611abc5750611aac83611c48565b67ffffffffffffffff168760ff16145b8015611ad35750611acc82611ceb565b1515861515145b8015611af35750611ae381611c48565b67ffffffffffffffff168560ff16145b611b3f5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c656400000000604482015260640161020a565b6106948b60c001518c60e001518c604001518c60000151612297565b600080808080808080606463c2ff267a611b7b60016004600282876122b3565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffffffff0000000000000000000000000000000000000000000000000000009091166004820152602481018f9052604481018e9052606481018d9052608481018c905260a4016080604051808303816000875af1158015611c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3291906125ad565b929f919e509c50909a5098505050505050505050565b60006064630cfed56160045b60f81b846040518363ffffffff1660e01b8152600401611ca29291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6020604051808303816000875af1158015611cc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce59190612612565b92915050565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260006004820181905260248201839052908190606490630cfed561906044016020604051808303816000875af1158015611d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d739190612612565b15159392505050565b600080808080808080606463c2ff267a611b7b60046001600281876122b3565b600080808080808080606463c2ff267a611b7b60026004816001876122b3565b600080808080808080606463c2ff267a611b7b60046002806001876122b3565b600080808080808080606463c2ff267a611b7b60048060026001876122b3565b600080808080808080606463c2ff267a611b7b6003600460026001876122b3565b600080808080808080606463c2ff267a611b7b6004600360026001876122b3565b600080808080808080606463c2ff267a611b7b600160048180876122b3565b600080808080808080606463c2ff267a611b7b600460018080876122b3565b600080808080808080606463c2ff267a611b7b600480600180876122b3565b600080808080808080606463c2ff267a611b7b60026004600180876122b3565b600080808080808080606463c2ff267a611b7b60046002600180876122b3565b600080808080808080606463c2ff267a611b7b60036004600180876122b3565b600080808080808080606463c2ff267a611b7b60046003600180876122b3565b600080808080808080606463c2ff267a611b7b600160048082876122b3565b600080808080808080606463c2ff267a611b7b600460018181876122b3565b600080808080808080606463c2ff267a611b7b600480806001876122b3565b600080808080808080606463c2ff267a611b7b60026004806001876122b3565b600080808080808080606463c2ff267a611b7b60046002816001876122b3565b600080808080808080606463c2ff267a611b7b60036004806001876122b3565b600080808080808080606463c2ff267a611b7b60046003816001876122b3565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0100000000000000000000000000000000000000000000000000000000000000600482015260ff8216602482015260009060649063d9b60b6090604401611ca2565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0200000000000000000000000000000000000000000000000000000000000000600482015261ffff8216602482015260009060649063d9b60b6090604401611ca2565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0300000000000000000000000000000000000000000000000000000000000000600482015263ffffffff8216602482015260009060649063d9b60b6090604401611ca2565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b6090604401611ca2565b600080808080808080606463c2ff267a611b7b6001808080876122b3565b60006064630cfed5616001611c54565b600080808080808080606463c2ff267a611b7b60016004600382876122b3565b600080808080808080606463c2ff267a611b7b60046001600381876122b3565b600080808080808080606463c2ff267a611b7b60036004816001876122b3565b600080808080808080606463c2ff267a611b7b60046003806001876122b3565b600080808080808080606463c2ff267a611b7b6002600460036001876122b3565b600080808080808080606463c2ff267a611b7b6004600260036001876122b3565b600080808080808080606463c2ff267a611b7b60048060036001875b60008160028111156122c7576122c76125e3565b60ff1660088460068111156122de576122de6125e3565b61ffff16901b61ffff1660108660068111156122fc576122fc6125e3565b62ffffff16901b62ffffff16601888600681111561231c5761231c6125e3565b63ffffffff16901b63ffffffff1660208a600681111561233e5761233e6125e3565b64ffffffffff16901b1717171760d81b9695505050505050565b604051610100810167ffffffffffffffff811182821017156123a3577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803560ff811681146123ba57600080fd5b919050565b600060a082840312156123d157600080fd5b60405160a0810181811067ffffffffffffffff8211171561241b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b806040525080915082358152602083013560208201526040830135604082015260608301356060820152612451608084016123a9565b60808201525092915050565b803580151581146123ba57600080fd5b60008060008060008060008789036102c081121561248a57600080fd5b6101008082121561249a57600080fd5b6124a2612358565b91508935825260208a0135602083015260408a0135604083015260608a0135606083015260808a0135608083015260a08a013560a083015260c08a013560c083015260e08a013560e08301528198506124fd8b828c016123bf565b9750505061250f896101a08a016123bf565b945061251e61024089016123a9565b935061252d61026089016123a9565b925061253c610280890161245d565b915061254b6102a089016123a9565b905092959891949750929550565b6000806000806080858703121561256f57600080fd5b612578856123a9565b9350612586602086016123a9565b9250612594604086016123a9565b91506125a2606086016123a9565b905092959194509250565b600080600080608085870312156125c357600080fd5b505082516020840151604085015160609095015191969095509092509050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006020828403121561262457600080fd5b505191905056fea164736f6c6343000813000a";
666
+ "0x6080806040523461001657611e45908161001c8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c806333c92907146105995780634717f97c1461052f5780634b5611de14610512578063505b1e0c146104f5578063f4fa2110146100825763f825a8e81461005e57600080fd5b3461007d5761007b61006f3661065f565b959490949391936111d3565b005b600080fd5b3461007d5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007d5760ff600435166004350361007d5760ff602435166024350361007d5760ff604435166044350361007d5760ff606435166064350361007d576040516100f5816105b6565b6000815260006020820152604081016000815260608201600081526080830160008152600060a0850152600060c0850152600060e08501526101356119f5565b9161013e6119f5565b9361014a600435611ab7565b8652610157602435611ab7565b602087015261016a60ff60043516611c20565b905261017a60ff60243516611c20565b905261018a60ff60043516611c94565b905261019a60ff60243516611c94565b60a08401526101ad60ff60043516611d0a565b60c08401526101c060ff60243516611d0a565b60e08401526101d0604435611ab7565b81526101e060ff60443516611c20565b60208201526101f360ff60443516611c94565b604082015261020660ff60443516611d0a565b606082015260ff604435166080820152610221606435611ab7565b825261023160ff60643516611c20565b602083015261024460ff60643516611c94565b604083015261025760ff60643516611d0a565b606083015260ff606435166080830152825192602081015182518451916040519663617f933d60e11b88527f01010101000000000000000000000000000000000000000000000000000000006004890152602488015260448701526064860152608485015260808460a481600060645af19384156104e95761039d6103f291610466966000806000916000936104a1575b6103639394509060ff6102fd61032c93611b58565b167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006000541617600055611b58565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff61ff006000549260081b16911617600055611a20565b15157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff62ff00006000549260101b16911617600055611b58565b63ff0000006000549160181b167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff8216178060005560ff8160181c169160ff80808460101c169360081c169116878787610854565b61041a60005460ff8160181c169060ff8160101c169060ff808260081c169116878787610dc2565b61044260005460ff8160181c169060ff8160101c169060ff808260081c1691168787876111d3565b6000549060ff8260181c169360ff8360101c169360ff808560081c169416926115e4565b6000546040805160ff8084168252600884901c81166020830152601084901c811615159282019290925260189290921c166060820152608090f35b5050505061036360ff61032c6104d16102fd9460803d6080116104e2575b6104c9818361061e565b810190611bfe565b9296509194509092509050836102e8565b503d6104bf565b6040513d6000823e3d90fd5b3461007d5761007b6105063661065f565b959490949391936115e4565b3461007d5761007b6105233661065f565b95949094939193610854565b3461007d5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007d576000546040805160ff8084168252600884901c81166020830152601084901c811615159282019290925260189290921c166060820152608090f35b3461007d5761007b6105aa3661065f565b95949094939193610dc2565b610100810190811067ffffffffffffffff8211176105d357604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60a0810190811067ffffffffffffffff8211176105d357604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176105d357604052565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc81016102c0811261007d576101001361007d5760409182516106a1816105b6565b60043581526024356020820152604435848201526064356060820152608435608082015260a43560a082015260c43560c082015260e43560e08201529260a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefc84011261007d57805161071381610602565b61010435815261012435602082015261014435828201526101643560608201526101843560ff8116810361007d57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe5c91608060a094015294011261007d5780519061077e82610602565b6101a43582526101c43560208301526101e435908201526102043560608201526102243560ff8116810361007d576080820152906102443560ff8116810361007d57906102643560ff8116810361007d579061028435801515810361007d57906102a43560ff8116810361007d5790565b156107f657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f7472616e73666572546573743a2063617374203634206661696c6564000000006044820152fd5b929491959395835160e085015183518351916040519363617f933d60e11b85527f01040101000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104e95761090a91600091600092600091600093610d8a575b506108e967ffffffffffffffff91611d84565b1660ff8b16149283610d68575b5082610d50575b5081610d30575b506107ef565b60c0840151602085015183518351916040519363617f933d60e11b85527f04010101000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104e95761099b91600091600092600091600093610d8a57506108e967ffffffffffffffff91611d84565b60c084015160e085015183518351916040519363617f933d60e11b85527f04040101000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104e957610a2c91600091600092600091600093610d8a57506108e967ffffffffffffffff91611d84565b604084015160e085015183518351916040519363617f933d60e11b85527f02040101000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104e957610abd91600091600092600091600093610d8a57506108e967ffffffffffffffff91611d84565b60c0840151606085015183518351916040519363617f933d60e11b85527f04020101000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104e957610b4e91600091600092600091600093610d8a57506108e967ffffffffffffffff91611d84565b608084015160e085015183518351916040519363617f933d60e11b85527f03040101000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104e957610bdf91600091600092600091600093610d8a57506108e967ffffffffffffffff91611d84565b60a060c085015194015191519051916040519463617f933d60e11b86527f04030101000000000000000000000000000000000000000000000000000000006004870152602486015260448501526064840152608483015260808260a481600060645af19182156104e957610c9595600095600096600093600096610cf7575b5067ffffffffffffffff610c7360ff92611d84565b169116149586610cd3575b505084610cb9575b505082610c97575b50506107ef565b565b60ff919250610cae67ffffffffffffffff91611d84565b169116143880610c8e565b610cc591929450611a20565b151590151514913880610c86565b60ff91929650610ceb67ffffffffffffffff91611d84565b16911614933880610c7e565b67ffffffffffffffff9850610c73965060ff9450610d24915060803d6080116104e2576104c9818361061e565b91999197509450610c5e565b67ffffffffffffffff9150610d4490611d84565b1660ff87161438610904565b610d5b919250611a20565b15158515151490386108fd565b67ffffffffffffffff919350610d7d90611d84565b1660ff8b161491386108f6565b905067ffffffffffffffff93506108e99250610db5915060803d6080116104e2576104c9818361061e565b91945090929091906108d6565b929491959395835160e085015160208401518351916040519363617f933d60e11b85527f01040201000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104e957610e5991600091600092600091600093610d8a57506108e967ffffffffffffffff91611d84565b60c0840151602085015160208401518351916040519363617f933d60e11b85527f04010201000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104e957610eed91600091600092600091600093610d8a57506108e967ffffffffffffffff91611d84565b604084015160e085015160208401518351916040519363617f933d60e11b85527f02040201000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104e957610f8191600091600092600091600093610d8a57506108e967ffffffffffffffff91611d84565b60c0840151606085015160208401518351916040519363617f933d60e11b85527f04020201000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104e95761101591600091600092600091600093610d8a57506108e967ffffffffffffffff91611d84565b60c084015160e085015160208401518351916040519363617f933d60e11b85527f04040201000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104e9576110a991600091600092600091600093610d8a57506108e967ffffffffffffffff91611d84565b608084015160e085015160208401518351916040519363617f933d60e11b85527f03040201000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104e95761113d91600091600092600091600093610d8a57506108e967ffffffffffffffff91611d84565b602060a060c08601519501519201519051916040519463617f933d60e11b86527f04030201000000000000000000000000000000000000000000000000000000006004870152602486015260448501526064840152608483015260808260a481600060645af19182156104e957610c9595600095600096600093600096610cf7575067ffffffffffffffff610c7360ff92611d84565b929491959395835160e085015160408401518351916040519363617f933d60e11b85527f01040301000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104e95761126a91600091600092600091600093610d8a57506108e967ffffffffffffffff91611d84565b60c0840151602085015160408401518351916040519363617f933d60e11b85527f04010301000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104e9576112fe91600091600092600091600093610d8a57506108e967ffffffffffffffff91611d84565b608084015160e085015160408401518351916040519363617f933d60e11b85527f03040301000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104e95761139291600091600092600091600093610d8a57506108e967ffffffffffffffff91611d84565b60c084015160a085015160408401518351916040519363617f933d60e11b85527f04030301000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104e95761142691600091600092600091600093610d8a57506108e967ffffffffffffffff91611d84565b604084015160e085015160408401518351916040519363617f933d60e11b85527f02040301000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104e9576114ba91600091600092600091600093610d8a57506108e967ffffffffffffffff91611d84565b60c0840151606085015160408401518351916040519363617f933d60e11b85527f04020301000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104e95761154e91600091600092600091600093610d8a57506108e967ffffffffffffffff91611d84565b604060e060c08601519501519201519051916040519463617f933d60e11b86527f04040301000000000000000000000000000000000000000000000000000000006004870152602486015260448501526064840152608483015260808260a481600060645af19182156104e957610c9595600095600096600093600096610cf7575067ffffffffffffffff610c7360ff92611d84565b929491959395835160e085015160608401518351916040519363617f933d60e11b85527f01040401000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104e95761167b91600091600092600091600093610d8a57506108e967ffffffffffffffff91611d84565b60c0840151602085015160608401518351916040519363617f933d60e11b85527f04010401000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104e95761170f91600091600092600091600093610d8a57506108e967ffffffffffffffff91611d84565b60c084015160e085015160608401518351916040519363617f933d60e11b85527f04040401000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104e9576117a391600091600092600091600093610d8a57506108e967ffffffffffffffff91611d84565b604084015160e085015160608401518351916040519363617f933d60e11b85527f02040401000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104e95761183791600091600092600091600093610d8a57506108e967ffffffffffffffff91611d84565b60c0840151606085015160608401518351916040519363617f933d60e11b85527f04020401000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104e9576118cb91600091600092600091600093610d8a57506108e967ffffffffffffffff91611d84565b608084015160e085015160608401518351916040519363617f933d60e11b85527f03040401000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104e95761195f91600091600092600091600093610d8a57506108e967ffffffffffffffff91611d84565b606060a060c08601519501519201519051916040519463617f933d60e11b86527f04030401000000000000000000000000000000000000000000000000000000006004870152602486015260448501526064840152608483015260808260a481600060645af19182156104e957610c9595600095600096600093600096610cf7575067ffffffffffffffff610c7360ff92611d84565b60405190611a0282610602565b60006080838281528260208201528260408201528260608201520152565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260009182600483015260248201526020816044818560645af1918215611aab578092611a74575b5050151590565b9091506020823d8211611aa3575b81611a8f6020938361061e565b81010312611aa05750513880611a6d565b80fd5b3d9150611a82565b604051903d90823e3d90fd5b60ff604051917fd9b60b600000000000000000000000000000000000000000000000000000000083527f01000000000000000000000000000000000000000000000000000000000000006004840152166024820152602081604481600060645af19081156104e957600091611b2a575090565b906020823d8211611b50575b81611b436020938361061e565b81010312611aa057505190565b3d9150611b36565b604051907f0cfed5610000000000000000000000000000000000000000000000000000000082527f010000000000000000000000000000000000000000000000000000000000000060048301526024820152602081604481600060645af180156104e957600090611bcc575b60ff91501690565b6020823d8211611bf6575b81611be46020938361061e565b81010312611aa0575060ff9051611bc4565b3d9150611bd7565b919082608091031261007d578151916020810151916060604083015192015190565b61ffff604051917fd9b60b600000000000000000000000000000000000000000000000000000000083527f02000000000000000000000000000000000000000000000000000000000000006004840152166024820152602081604481600060645af19081156104e957600091611b2a575090565b63ffffffff604051917fd9b60b600000000000000000000000000000000000000000000000000000000083527f03000000000000000000000000000000000000000000000000000000000000006004840152166024820152602081604481600060645af19081156104e957600091611b2a575090565b67ffffffffffffffff604051917fd9b60b600000000000000000000000000000000000000000000000000000000083527f04000000000000000000000000000000000000000000000000000000000000006004840152166024820152602081604481600060645af19081156104e957600091611b2a575090565b604051907f0cfed5610000000000000000000000000000000000000000000000000000000082527f040000000000000000000000000000000000000000000000000000000000000060048301526024820152602081604481600060645af180156104e957600090611dff575b67ffffffffffffffff91501690565b6020823d8211611e30575b81611e176020938361061e565b81010312611aa0575067ffffffffffffffff9051611df0565b3d9150611e0a56fea164736f6c6343000814000a";
667
667
 
668
668
  type TransferWithAllowance64_8TestsContractConstructorParams =
669
669
  | [signer?: Signer]
@@ -446,7 +446,7 @@ const _abi = [
446
446
  ] as const;
447
447
 
448
448
  const _bytecode =
449
- "0x608060405234801561001057600080fd5b50614974806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063cf69b04711610050578063cf69b047146100d0578063d6c7c82e146100e5578063ff3f9ffa146100f857600080fd5b80634717f97c1461006c578063c906aa5b146100bd575b600080fd5b60005460ff80821691610100810482169162010000820481169163010000009004165b6040805160ff9586168152938516602085015291151583830152909216606082015290519081900360800190f35b61008f6100cb366004614633565b61010b565b6100e36100de366004614844565b6103dc565b005b6100e36100f3366004614844565b610b03565b6100e3610106366004614844565b611a8d565b60008060008061015960405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805160808101825260008082526020820181905291810182905260608101919091526101b26040518060a0016040528060008152602001600081526020016000815260200160008152602001600060ff1681525090565b6101bb8b6139f1565b83526101c68a6139f1565b60208401526101d760ff8c16613a9f565b60408401526101e860ff8b16613a9f565b60608401526101f960ff8c16613b09565b608084015261020a60ff8b16613b09565b60a084015261021b60ff8c16613b75565b60c084015261022c60ff8b16613b75565b60e084015260ff891680835260208301819052604083018190526060830152610254886139f1565b815261026260ff8916613a9f565b602082015261027360ff8916613b09565b604082015261028460ff8916613b75565b81606001818152505087816080019060ff16908160ff16815250506000806000806102bd876000015188602001518f8860000151613be5565b93509350935093506102ce84613cd3565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff9290921691909117905561030983613cd3565b600060016101000a81548160ff021916908360ff16021790555061032c82613d2d565b6000805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff90921691909117905561036b81613cd3565b600060036101000a81548160ff021916908360ff1602179055506103908787876103dc565b61039b878787610b03565b6103a6878787611a8d565b505060005460ff8082169f610100830482169f5062010000830482169e506301000000909204169b509950505050505050505050565b6000806000806103fe8760400151886060015188602001518860200151613dbe565b935093509350935061040f84613e59565b60005460ff1661ffff91909116148015610442575061042d83613e59565b60005460ff6101009091041661ffff91909116145b8015610466575061045282613d2d565b60005460ff62010000909104161515901515145b801561048d575061047681613e59565b60005460ff63010000009091041661ffff91909116145b6104e85760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084015b60405180910390fd5b6105048760400151886060015188602001518860200151613dbe565b9296509094509250905061051784613e59565b60005460ff1661ffff9190911614801561054a575061053583613e59565b60005460ff6101009091041661ffff91909116145b801561056e575061055a82613d2d565b60005460ff62010000909104161515901515145b8015610595575061057e81613e59565b60005460ff63010000009091041661ffff91909116145b6105eb5760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b6106078760000151886060015188602001518860200151613e69565b9296509094509250905061061a84613e59565b60005460ff1661ffff9190911614801561064d575061063883613e59565b60005460ff6101009091041661ffff91909116145b8015610671575061065d82613d2d565b60005460ff62010000909104161515901515145b8015610698575061068181613e59565b60005460ff63010000009091041661ffff91909116145b6106ee5760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b61070a8760400151886020015188602001518860200151613e88565b9296509094509250905061071d84613e59565b60005460ff1661ffff91909116148015610750575061073b83613e59565b60005460ff6101009091041661ffff91909116145b8015610774575061076082613d2d565b60005460ff62010000909104161515901515145b801561079b575061078481613e59565b60005460ff63010000009091041661ffff91909116145b6107f15760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b61080d8760400151886060015188602001518860000151613ea7565b9296509094509250905061082084613e59565b60005460ff1661ffff91909116148015610853575061083e83613e59565b60005460ff6101009091041661ffff91909116145b8015610877575061086382613d2d565b60005460ff62010000909104161515901515145b801561089e575061088781613e59565b60005460ff63010000009091041661ffff91909116145b6108f45760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b6109108760000151886060015188602001518860000151613ec6565b9296509094509250905061092384613e59565b60005460ff1661ffff91909116148015610956575061094183613e59565b60005460ff6101009091041661ffff91909116145b801561097a575061096682613d2d565b60005460ff62010000909104161515901515145b80156109a1575061098a81613e59565b60005460ff63010000009091041661ffff91909116145b6109f75760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b610a138760400151886020015188602001518860000151613ee5565b92965090945092509050610a2684613e59565b60005460ff1661ffff91909116148015610a595750610a4483613e59565b60005460ff6101009091041661ffff91909116145b8015610a7d5750610a6982613d2d565b60005460ff62010000909104161515901515145b8015610aa45750610a8d81613e59565b60005460ff63010000009091041661ffff91909116145b610afa5760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b50505050505050565b600080600080610b2587608001518860a0015188604001518860400151613f04565b9350935093509350610b3684613fa1565b60005460ff1663ffffffff91909116148015610b6d5750610b5683613fa1565b60005460ff6101009091041663ffffffff91909116145b8015610b915750610b7d82613d2d565b60005460ff62010000909104161515901515145b8015610bba5750610ba181613fa1565b60005460ff63010000009091041663ffffffff91909116145b610c105760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b610c2c87600001518860a0015188604001518860400151613fb1565b92965090945092509050610c3f84613fa1565b60005460ff1663ffffffff91909116148015610c765750610c5f83613fa1565b60005460ff6101009091041663ffffffff91909116145b8015610c9a5750610c8682613d2d565b60005460ff62010000909104161515901515145b8015610cc35750610caa81613fa1565b60005460ff63010000009091041663ffffffff91909116145b610d195760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b610d358760800151886020015188604001518860400151613fd0565b92965090945092509050610d4884613fa1565b60005460ff1663ffffffff91909116148015610d7f5750610d6883613fa1565b60005460ff6101009091041663ffffffff91909116145b8015610da35750610d8f82613d2d565b60005460ff62010000909104161515901515145b8015610dcc5750610db381613fa1565b60005460ff63010000009091041663ffffffff91909116145b610e225760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b610e3e87604001518860a0015188604001518860400151613fef565b92965090945092509050610e5184613fa1565b60005460ff1663ffffffff91909116148015610e885750610e7183613fa1565b60005460ff6101009091041663ffffffff91909116145b8015610eac5750610e9882613d2d565b60005460ff62010000909104161515901515145b8015610ed55750610ebc81613fa1565b60005460ff63010000009091041663ffffffff91909116145b610f2b5760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b610f47876080015188606001518860400151886040015161400f565b92965090945092509050610f5a84613fa1565b60005460ff1663ffffffff91909116148015610f915750610f7a83613fa1565b60005460ff6101009091041663ffffffff91909116145b8015610fb55750610fa182613d2d565b60005460ff62010000909104161515901515145b8015610fde5750610fc581613fa1565b60005460ff63010000009091041663ffffffff91909116145b6110345760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b61105087608001518860a001518860400151886000015161402f565b9296509094509250905061106384613fa1565b60005460ff1663ffffffff9190911614801561109a575061108383613fa1565b60005460ff6101009091041663ffffffff91909116145b80156110be57506110aa82613d2d565b60005460ff62010000909104161515901515145b80156110e757506110ce81613fa1565b60005460ff63010000009091041663ffffffff91909116145b61113d5760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b61115987600001518860a001518860400151886000015161404e565b9296509094509250905061116c84613fa1565b60005460ff1663ffffffff919091161480156111a3575061118c83613fa1565b60005460ff6101009091041663ffffffff91909116145b80156111c757506111b382613d2d565b60005460ff62010000909104161515901515145b80156111f057506111d781613fa1565b60005460ff63010000009091041663ffffffff91909116145b6112465760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b611262876080015188602001518860400151886000015161406d565b9296509094509250905061127584613fa1565b60005460ff1663ffffffff919091161480156112ac575061129583613fa1565b60005460ff6101009091041663ffffffff91909116145b80156112d057506112bc82613d2d565b60005460ff62010000909104161515901515145b80156112f957506112e081613fa1565b60005460ff63010000009091041663ffffffff91909116145b61134f5760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b61136b87604001518860a001518860400151886000015161408c565b9296509094509250905061137e84613fa1565b60005460ff1663ffffffff919091161480156113b5575061139e83613fa1565b60005460ff6101009091041663ffffffff91909116145b80156113d957506113c582613d2d565b60005460ff62010000909104161515901515145b801561140257506113e981613fa1565b60005460ff63010000009091041663ffffffff91909116145b6114585760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b61147487608001518860600151886040015188600001516140ac565b9296509094509250905061148784613fa1565b60005460ff1663ffffffff919091161480156114be57506114a783613fa1565b60005460ff6101009091041663ffffffff91909116145b80156114e257506114ce82613d2d565b60005460ff62010000909104161515901515145b801561150b57506114f281613fa1565b60005460ff63010000009091041663ffffffff91909116145b6115615760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b61157d87608001518860a00151886040015188602001516140cc565b9296509094509250905061159084613fa1565b60005460ff1663ffffffff919091161480156115c757506115b083613fa1565b60005460ff6101009091041663ffffffff91909116145b80156115eb57506115d782613d2d565b60005460ff62010000909104161515901515145b801561161457506115fb81613fa1565b60005460ff63010000009091041663ffffffff91909116145b61166a5760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b61168687600001518860a00151886040015188602001516140ec565b9296509094509250905061169984613fa1565b60005460ff1663ffffffff919091161480156116d057506116b983613fa1565b60005460ff6101009091041663ffffffff91909116145b80156116f457506116e082613d2d565b60005460ff62010000909104161515901515145b801561171d575061170481613fa1565b60005460ff63010000009091041663ffffffff91909116145b6117735760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b61178f876080015188602001518860400151886020015161410c565b929650909450925090506117a284613fa1565b60005460ff1663ffffffff919091161480156117d957506117c283613fa1565b60005460ff6101009091041663ffffffff91909116145b80156117fd57506117e982613d2d565b60005460ff62010000909104161515901515145b8015611826575061180d81613fa1565b60005460ff63010000009091041663ffffffff91909116145b61187c5760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b61189887604001518860a001518860400151886020015161412c565b929650909450925090506118ab84613fa1565b60005460ff1663ffffffff919091161480156118e257506118cb83613fa1565b60005460ff6101009091041663ffffffff91909116145b801561190657506118f282613d2d565b60005460ff62010000909104161515901515145b801561192f575061191681613fa1565b60005460ff63010000009091041663ffffffff91909116145b6119855760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b6119a1876080015188606001518860400151886020015161414c565b929650909450925090506119b484613fa1565b60005460ff1663ffffffff919091161480156119eb57506119d483613fa1565b60005460ff6101009091041663ffffffff91909116145b8015611a0f57506119fb82613d2d565b60005460ff62010000909104161515901515145b8015610aa45750611a1f81613fa1565b60005460ff63010000009091041663ffffffff9190911614610afa5760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b600080600080611aaf8760c001518860e001518860600151886060015161416c565b9350935093509350611ac08461420d565b60005460ff1667ffffffffffffffff91909116148015611aff5750611ae48361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b8015611b235750611b0f82613d2d565b60005460ff62010000909104161515901515145b8015611b505750611b338161420d565b60005460ff63010000009091041667ffffffffffffffff91909116145b611ba65760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b611bc28760c001518860e001518860600151886060015161416c565b92965090945092509050611bd58461420d565b60005460ff1667ffffffffffffffff91909116148015611c145750611bf98361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b8015611c385750611c2482613d2d565b60005460ff62010000909104161515901515145b8015611c655750611c488161420d565b60005460ff63010000009091041667ffffffffffffffff91909116145b611cbb5760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b611cd787600001518860e001518860600151886060015161421d565b92965090945092509050611cea8461420d565b60005460ff1667ffffffffffffffff91909116148015611d295750611d0e8361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b8015611d4d5750611d3982613d2d565b60005460ff62010000909104161515901515145b8015611d7a5750611d5d8161420d565b60005460ff63010000009091041667ffffffffffffffff91909116145b611dd05760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b611dec8760c0015188602001518860600151886060015161423c565b92965090945092509050611dff8461420d565b60005460ff1667ffffffffffffffff91909116148015611e3e5750611e238361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b8015611e625750611e4e82613d2d565b60005460ff62010000909104161515901515145b8015611e8f5750611e728161420d565b60005460ff63010000009091041667ffffffffffffffff91909116145b611ee55760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b611f0187604001518860e001518860600151886060015161425b565b92965090945092509050611f148461420d565b60005460ff1667ffffffffffffffff91909116148015611f535750611f388361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b8015611f775750611f6382613d2d565b60005460ff62010000909104161515901515145b8015611fa45750611f878161420d565b60005460ff63010000009091041667ffffffffffffffff91909116145b611ffa5760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b6120168760c0015188606001518860600151886060015161427b565b929650909450925090506120298461420d565b60005460ff1667ffffffffffffffff91909116148015612068575061204d8361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b801561208c575061207882613d2d565b60005460ff62010000909104161515901515145b80156120b9575061209c8161420d565b60005460ff63010000009091041667ffffffffffffffff91909116145b61210f5760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b61212b87608001518860e001518860600151886060015161429b565b9296509094509250905061213e8461420d565b60005460ff1667ffffffffffffffff9190911614801561217d57506121628361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b80156121a1575061218d82613d2d565b60005460ff62010000909104161515901515145b80156121ce57506121b18161420d565b60005460ff63010000009091041667ffffffffffffffff91909116145b6122245760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b6122408760c001518860a00151886060015188606001516142bb565b929650909450925090506122538461420d565b60005460ff1667ffffffffffffffff9190911614801561229257506122778361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b80156122b657506122a282613d2d565b60005460ff62010000909104161515901515145b80156122e357506122c68161420d565b60005460ff63010000009091041667ffffffffffffffff91909116145b6123395760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b6123558760c001518860e00151886060015188600001516142db565b929650909450925090506123688461420d565b60005460ff1667ffffffffffffffff919091161480156123a7575061238c8361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b80156123cb57506123b782613d2d565b60005460ff62010000909104161515901515145b80156123f857506123db8161420d565b60005460ff63010000009091041667ffffffffffffffff91909116145b61244e5760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b61246a87600001518860e00151886060015188600001516142fa565b9296509094509250905061247d8461420d565b60005460ff1667ffffffffffffffff919091161480156124bc57506124a18361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b80156124e057506124cc82613d2d565b60005460ff62010000909104161515901515145b801561250d57506124f08161420d565b60005460ff63010000009091041667ffffffffffffffff91909116145b6125635760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b61257f8760c00151886020015188606001518860000151614319565b929650909450925090506125928461420d565b60005460ff1667ffffffffffffffff919091161480156125d157506125b68361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b80156125f557506125e182613d2d565b60005460ff62010000909104161515901515145b801561262257506126058161420d565b60005460ff63010000009091041667ffffffffffffffff91909116145b6126785760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b61269487604001518860e0015188606001518860000151614338565b929650909450925090506126a78461420d565b60005460ff1667ffffffffffffffff919091161480156126e657506126cb8361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b801561270a57506126f682613d2d565b60005460ff62010000909104161515901515145b8015612737575061271a8161420d565b60005460ff63010000009091041667ffffffffffffffff91909116145b61278d5760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b6127a98760c00151886060015188606001518860000151614358565b929650909450925090506127bc8461420d565b60005460ff1667ffffffffffffffff919091161480156127fb57506127e08361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b801561281f575061280b82613d2d565b60005460ff62010000909104161515901515145b801561284c575061282f8161420d565b60005460ff63010000009091041667ffffffffffffffff91909116145b6128a25760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b6128be87608001518860e0015188606001518860000151614378565b929650909450925090506128d18461420d565b60005460ff1667ffffffffffffffff9190911614801561291057506128f58361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b8015612934575061292082613d2d565b60005460ff62010000909104161515901515145b801561296157506129448161420d565b60005460ff63010000009091041667ffffffffffffffff91909116145b6129b75760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b6129d38760c001518860a0015188606001518860000151614398565b929650909450925090506129e68461420d565b60005460ff1667ffffffffffffffff91909116148015612a255750612a0a8361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b8015612a495750612a3582613d2d565b60005460ff62010000909104161515901515145b8015612a765750612a598161420d565b60005460ff63010000009091041667ffffffffffffffff91909116145b612acc5760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b612ae88760c001518860e00151886060015188602001516143b8565b92965090945092509050612afb8461420d565b60005460ff1667ffffffffffffffff91909116148015612b3a5750612b1f8361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b8015612b5e5750612b4a82613d2d565b60005460ff62010000909104161515901515145b8015612b8b5750612b6e8161420d565b60005460ff63010000009091041667ffffffffffffffff91909116145b612be15760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b612bfd87600001518860e00151886060015188602001516143d8565b92965090945092509050612c108461420d565b60005460ff1667ffffffffffffffff91909116148015612c4f5750612c348361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b8015612c735750612c5f82613d2d565b60005460ff62010000909104161515901515145b8015612ca05750612c838161420d565b60005460ff63010000009091041667ffffffffffffffff91909116145b612cf65760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b612d128760c001518860200151886060015188602001516143f8565b92965090945092509050612d258461420d565b60005460ff1667ffffffffffffffff91909116148015612d645750612d498361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b8015612d885750612d7482613d2d565b60005460ff62010000909104161515901515145b8015612db55750612d988161420d565b60005460ff63010000009091041667ffffffffffffffff91909116145b612e0b5760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b612e2787604001518860e0015188606001518860200151614418565b92965090945092509050612e3a8461420d565b60005460ff1667ffffffffffffffff91909116148015612e795750612e5e8361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b8015612e9d5750612e8982613d2d565b60005460ff62010000909104161515901515145b8015612eca5750612ead8161420d565b60005460ff63010000009091041667ffffffffffffffff91909116145b612f205760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b612f3c8760c00151886060015188606001518860200151614438565b92965090945092509050612f4f8461420d565b60005460ff1667ffffffffffffffff91909116148015612f8e5750612f738361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b8015612fb25750612f9e82613d2d565b60005460ff62010000909104161515901515145b8015612fdf5750612fc28161420d565b60005460ff63010000009091041667ffffffffffffffff91909116145b6130355760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b61305187608001518860e0015188606001518860200151614458565b929650909450925090506130648461420d565b60005460ff1667ffffffffffffffff919091161480156130a357506130888361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b80156130c757506130b382613d2d565b60005460ff62010000909104161515901515145b80156130f457506130d78161420d565b60005460ff63010000009091041667ffffffffffffffff91909116145b61314a5760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b6131668760c001518860a0015188606001518860200151614479565b929650909450925090506131798461420d565b60005460ff1667ffffffffffffffff919091161480156131b8575061319d8361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b80156131dc57506131c882613d2d565b60005460ff62010000909104161515901515145b801561320957506131ec8161420d565b60005460ff63010000009091041667ffffffffffffffff91909116145b61325f5760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b61327b8760c001518860e001518860600151886040015161449a565b9296509094509250905061328e8461420d565b60005460ff1667ffffffffffffffff919091161480156132cd57506132b28361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b80156132f157506132dd82613d2d565b60005460ff62010000909104161515901515145b801561331e57506133018161420d565b60005460ff63010000009091041667ffffffffffffffff91909116145b6133745760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b61339087600001518860e00151886060015188604001516144ba565b929650909450925090506133a38461420d565b60005460ff1667ffffffffffffffff919091161480156133e257506133c78361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b801561340657506133f282613d2d565b60005460ff62010000909104161515901515145b801561343357506134168161420d565b60005460ff63010000009091041667ffffffffffffffff91909116145b6134895760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b6134a58760c001518860200151886060015188604001516144da565b929650909450925090506134b88461420d565b60005460ff1667ffffffffffffffff919091161480156134f757506134dc8361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b801561351b575061350782613d2d565b60005460ff62010000909104161515901515145b8015613548575061352b8161420d565b60005460ff63010000009091041667ffffffffffffffff91909116145b61359e5760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b6135ba87604001518860e00151886060015188604001516144fa565b929650909450925090506135cd8461420d565b60005460ff1667ffffffffffffffff9190911614801561360c57506135f18361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b8015613630575061361c82613d2d565b60005460ff62010000909104161515901515145b801561365d57506136408161420d565b60005460ff63010000009091041667ffffffffffffffff91909116145b6136b35760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b6136cf8760c0015188606001518860600151886040015161451b565b929650909450925090506136e28461420d565b60005460ff1667ffffffffffffffff9190911614801561372157506137068361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b8015613745575061373182613d2d565b60005460ff62010000909104161515901515145b801561377257506137558161420d565b60005460ff63010000009091041667ffffffffffffffff91909116145b6137c85760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b6137e487608001518860e001518860600151886040015161453c565b929650909450925090506137f78461420d565b60005460ff1667ffffffffffffffff91909116148015613836575061381b8361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b801561385a575061384682613d2d565b60005460ff62010000909104161515901515145b8015613887575061386a8161420d565b60005460ff63010000009091041667ffffffffffffffff91909116145b6138dd5760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b6138f98760c001518860a001518860600151886040015161455c565b9296509094509250905061390c8461420d565b60005460ff1667ffffffffffffffff9190911614801561394b57506139308361420d565b60005460ff6101009091041667ffffffffffffffff91909116145b801561396f575061395b82613d2d565b60005460ff62010000909104161515901515145b8015610aa4575061397f8161420d565b60005460ff63010000009091041667ffffffffffffffff9190911614610afa5760405162461bcd60e51b815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c656044820152601960fa1b60648201526084016104df565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0100000000000000000000000000000000000000000000000000000000000000600482015260ff8216602482015260009060649063d9b60b60906044015b6020604051808303816000875af1158015613a75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a999190614918565b92915050565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0200000000000000000000000000000000000000000000000000000000000000600482015261ffff8216602482015260009060649063d9b60b6090604401613a56565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0300000000000000000000000000000000000000000000000000000000000000600482015263ffffffff8216602482015260009060649063d9b60b6090604401613a56565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b6090604401613a56565b600080808080808080606463c2ff267a613c03600180808080614578565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffffffff0000000000000000000000000000000000000000000000000000009091166004820152602481018f9052604481018e905260ff8d166064820152608481018c905260a4015b6080604051808303816000875af1158015613c99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cbd9190614931565b929f919e509c50909a5098505050505050505050565b60006064630cfed56160015b60f81b846040518363ffffffff1660e01b8152600401613a569291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260006004820181905260248201839052908190606490630cfed561906044016020604051808303816000875af1158015613d91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613db59190614918565b15159392505050565b600080808080808080606463c2ff267a613ddd60028080806001614578565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffffffff0000000000000000000000000000000000000000000000000000009091166004820152602481018f9052604481018e905261ffff8d166064820152608481018c905260a401613c7a565b60006064630cfed5616002613cdf565b600080808080808080606463c2ff267a613ddd60016002808083614578565b600080808080808080606463c2ff267a613ddd60026001818082614578565b600080808080808080606463c2ff267a613ddd60028080600180614578565b600080808080808080606463c2ff267a613ddd60016002808280614578565b600080808080808080606463c2ff267a613ddd60026001818180614578565b600080808080808080606463c2ff267a613f2360038080806001614578565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffffffff0000000000000000000000000000000000000000000000000000009091166004820152602481018f9052604481018e905263ffffffff8d166064820152608481018c905260a401613c7a565b60006064630cfed5616003613cdf565b600080808080808080606463c2ff267a613f2360016003808083614578565b600080808080808080606463c2ff267a613f2360036001818082614578565b600080808080808080606463c2ff267a613f236002600380806001614578565b600080808080808080606463c2ff267a613f236003600281806001614578565b600080808080808080606463c2ff267a613f2360038080600180614578565b600080808080808080606463c2ff267a613f2360016003808280614578565b600080808080808080606463c2ff267a613f2360036001818180614578565b600080808080808080606463c2ff267a613f236002600380600180614578565b600080808080808080606463c2ff267a613f236003600281600180614578565b600080808080808080606463c2ff267a613f236003808060026001614578565b600080808080808080606463c2ff267a613f236001600380600283614578565b600080808080808080606463c2ff267a613f236003600181600282614578565b600080808080808080606463c2ff267a613f236002600380826001614578565b600080808080808080606463c2ff267a613f236003600281816001614578565b600080808080808080606463c2ff267a61418b60048080806001614578565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffffffff0000000000000000000000000000000000000000000000000000009091166004820152602481018f9052604481018e905267ffffffffffffffff8d166064820152608481018c905260a401613c7a565b60006064630cfed5616004613cdf565b600080808080808080606463c2ff267a61418b60016004808083614578565b600080808080808080606463c2ff267a61418b60046001818082614578565b600080808080808080606463c2ff267a61418b6002600480806001614578565b600080808080808080606463c2ff267a61418b6004600281806001614578565b600080808080808080606463c2ff267a61418b6003600480806001614578565b600080808080808080606463c2ff267a61418b6004600381806001614578565b600080808080808080606463c2ff267a61418b60048080600180614578565b600080808080808080606463c2ff267a61418b60016004808280614578565b600080808080808080606463c2ff267a61418b60046001818180614578565b600080808080808080606463c2ff267a61418b6002600480600180614578565b600080808080808080606463c2ff267a61418b6004600281600180614578565b600080808080808080606463c2ff267a61418b6003600480600180614578565b600080808080808080606463c2ff267a61418b6004600381600180614578565b600080808080808080606463c2ff267a61418b6004808060026001614578565b600080808080808080606463c2ff267a61418b6001600480600283614578565b600080808080808080606463c2ff267a61418b6004600181600282614578565b600080808080808080606463c2ff267a61418b6002600480826001614578565b600080808080808080606463c2ff267a61418b6004600281816001614578565b600080808080808080606463c2ff267a61418b600360048060026001614578565b600080808080808080606463c2ff267a61418b600460038160026001614578565b600080808080808080606463c2ff267a61418b6004808060036001614578565b600080808080808080606463c2ff267a61418b6001600480600383614578565b600080808080808080606463c2ff267a61418b6004600181600382614578565b600080808080808080606463c2ff267a61418b600260048060036001614578565b600080808080808080606463c2ff267a61418b600460028160036001614578565b600080808080808080606463c2ff267a61418b6003600480826001614578565b600080808080808080606463c2ff267a61418b60046003818160015b600081600281111561458c5761458c6148e9565b60ff1660088460068111156145a3576145a36148e9565b61ffff16901b61ffff1660108660068111156145c1576145c16148e9565b62ffffff16901b62ffffff1660188860068111156145e1576145e16148e9565b63ffffffff16901b63ffffffff1660208a6006811115614603576146036148e9565b64ffffffffff16901b1717171760d81b9695505050505050565b803560ff8116811461462e57600080fd5b919050565b6000806000806080858703121561464957600080fd5b6146528561461d565b93506146606020860161461d565b925061466e6040860161461d565b915061467c6060860161461d565b905092959194509250565b604051610100810167ffffffffffffffff811182821017156146d2577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000608082840312156146ea57600080fd5b6040516080810167ffffffffffffffff8282108183111715614735577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b816040528293506147458561461d565b83526020850135915061ffff8216821461475e57600080fd5b8160208401526040850135915063ffffffff8216821461477d57600080fd5b81604084015260608501359150808216821461479857600080fd5b506060919091015292915050565b600060a082840312156147b857600080fd5b60405160a0810181811067ffffffffffffffff82111715614802577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526148386080840161461d565b60808201525092915050565b600080600083850361022081121561485b57600080fd5b6101008082121561486b57600080fd5b614873614687565b9150853582526020860135602083015260408601356040830152606086013560608301526080860135608083015260a086013560a083015260c086013560c083015260e086013560e08301528194506148ce878288016146d8565b935050506148e08561018086016147a6565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006020828403121561492a57600080fd5b5051919050565b6000806000806080858703121561494757600080fd5b50508251602084015160408501516060909501519196909550909250905056fea164736f6c6343000813000a";
449
+ "0x6080806040523461001657612ec5908161001c8239f35b600080fdfe608080604052600436101561001357600080fd5b60003560e01c9081634717f97c146104ad57508063c906aa5b146100a2578063cf69b0471461008b578063d6c7c82e146100745763ff3f9ffa1461005657600080fd5b3461006f5761006d610067366105d6565b91611594565b005b600080fd5b3461006f5761006d610085366105d6565b91610bba565b3461006f5761006d61009c366105d6565b916107d6565b3461006f5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261006f5760ff80600435166004350361006f5780602435166024350361006f57604435818116810361006f5781606435166064350361006f5760405161011281610511565b6000815260006020820152600060408201526000606082015260006080820152600060a0820152600060c0820152600060e08201526040516101538161055d565b600081526000602082015260006040820152600060608201526040519161017983610579565b60008352600060208401526000604084015260006060840152600060808401526101a46004356128c0565b81526101b16024356128c0565b60208201526101c38560043516612a07565b60408201526101d58560243516612a07565b60608201526101e78560043516612b23565b60808201526101f98560243516612b23565b60a082015261020b8560043516612c45565b60c082015261021d8560243516612c45565b60e0820152838516808352602083018190526040830181905260608301526102466064356128c0565b83526102558560643516612a07565b60208401526102678560643516612b23565b60408401526102798560643516612c45565b606084015284606435166080840152805193856020830151918551926040519763617f933d60e11b89527f010101010100000000000000000000000000000000000000000000000000000060048a015260248901526044880152166064860152608485015260808460a481600060645af180156104a15761040a946103bb9160008089600092600094610459575b6103819495509061031b61034a9392612961565b167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006000541617600055612961565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff61ff006000549260081b16911617600055612829565b15157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff62ff00006000549260101b16911617600055612961565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff63ff0000006000549260181b169116176000556103fa8383836107d6565b610405838383610bba565b611594565b60005490610455604051928284938260181c1691818160101c1691808260081c16911685929360ff919594826060948160808801991687521660208601521515604085015216910152565b0390f35b50915050610381915061034a61048961031b9460803d60801161049a575b6104818183610595565b810190612d73565b929650919450909290915084610307565b503d610477565b6040513d6000823e3d90fd5b3461006f5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261006f5760005460ff8082168352600882901c81166020840152601082901c81161515604084015260189190911c166060820152608090f35b610100810190811067ffffffffffffffff82111761052e57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6080810190811067ffffffffffffffff82111761052e57604052565b60a0810190811067ffffffffffffffff82111761052e57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761052e57604052565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8101610220811261006f576101001361006f57604091825161061881610511565b60043581526024356020820152604435848201526064356060820152608435608082015260a43560a082015260c43560c082015260e43560e08201529260807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefc84011261006f57805161068a8161055d565b6101043560ff8116810361006f5781526101243561ffff8116810361006f5760208201526101443563ffffffff8116810361006f57828201526101643567ffffffffffffffff8116810361006f57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7c91606060a094015294011261006f5780519061071582610579565b6101843582526101a43560208301526101c435908201526101e43560608201526102043560ff8116810361006f57608082015290565b1561075257565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f7472616e73666572546573743a20636865636b207363616c6172206661696c6560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152fd5b91604083015161083161080060608601926020845196019561ffff87511690602087015192612d95565b919261ffff61081460ff6000541692612a7b565b16149283610b74575b5082610b52575b5081610b33575b5061074b565b6108506108006040860151835161ffff87511690602087015192612d95565b8351815161ffff8551166020850151916040519363617f933d60e11b85527f01020202010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a1576108e391600091600092600091600093610b95575b5061ffff61081460ff6000541692612a7b565b6040840151602085015161ffff8551166020850151916040519363617f933d60e11b85527f02010202010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a15761097b91600091600092600091600093610b95575061ffff61081460ff6000541692612a7b565b6040840151815161ffff8551168451916040519363617f933d60e11b85527f02020201010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a157610a0d91600091600092600091600093610b95575061ffff61081460ff6000541692612a7b565b8351905161ffff8451168351916040519363617f933d60e11b85527f01020201010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a157610a9c91600091600092600091600093610b95575061ffff61081460ff6000541692612a7b565b61ffff602060408501519401519251169051916040519363617f933d60e11b85527f02010201010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a157610b3191600091600092600091600093610b95575061ffff61081460ff6000541692612a7b565b565b905061ffff610b4a60ff60005460181c1692612a7b565b16143861082b565b909150610b6760ff60005460101c1691612829565b1515901515149038610824565b90925061ffff610b8c60ff60005460081c1692612a7b565b1614913861081d565b92505050610bb2915060803d60801161049a576104818183610595565b9192386108d0565b91608083015160a084015163ffffffff6040850151166040840151916040519363617f933d60e11b85527f03030303010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a157610c779160009160009260009160009361156f575b5063ffffffff610c5b60ff6000541692612b99565b1614928361154c575b508261152a575b5081611511575061074b565b825160a084015163ffffffff6040850151166040840151916040519363617f933d60e11b85527f01030303010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a157610d139160009160009260009160009361156f575063ffffffff610c5b60ff6000541692612b99565b6080830151602084015163ffffffff6040850151166040840151916040519363617f933d60e11b85527f03010303010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a157610db29160009160009260009160009361156f575063ffffffff610c5b60ff6000541692612b99565b604083015160a084015163ffffffff6040850151166040840151916040519363617f933d60e11b85527f02030303010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a157610e519160009160009260009160009361156f575063ffffffff610c5b60ff6000541692612b99565b6080830151606084015163ffffffff6040850151166040840151916040519363617f933d60e11b85527f03020303010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a157610ef09160009160009260009160009361156f575063ffffffff610c5b60ff6000541692612b99565b608083015160a084015163ffffffff6040850151168351916040519363617f933d60e11b85527f03030301010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a157610f8c9160009160009260009160009361156f575063ffffffff610c5b60ff6000541692612b99565b825160a084015163ffffffff6040850151168351916040519363617f933d60e11b85527f01030301010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a1576110259160009160009260009160009361156f575063ffffffff610c5b60ff6000541692612b99565b6080830151602084015163ffffffff6040850151168351916040519363617f933d60e11b85527f03010301010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a1576110c19160009160009260009160009361156f575063ffffffff610c5b60ff6000541692612b99565b604083015160a084015163ffffffff6040850151168351916040519363617f933d60e11b85527f02030301010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a15761115d9160009160009260009160009361156f575063ffffffff610c5b60ff6000541692612b99565b6080830151606084015163ffffffff6040850151168351916040519363617f933d60e11b85527f03020301010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a1576111f99160009160009260009160009361156f575063ffffffff610c5b60ff6000541692612b99565b608083015160a084015163ffffffff6040850151166020840151916040519363617f933d60e11b85527f03030302010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a1576112989160009160009260009160009361156f575063ffffffff610c5b60ff6000541692612b99565b825160a084015163ffffffff6040850151166020840151916040519363617f933d60e11b85527f01030302010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a1576113349160009160009260009160009361156f575063ffffffff610c5b60ff6000541692612b99565b6080830151602084015163ffffffff6040850151166020840151916040519363617f933d60e11b85527f03010302010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a1576113d39160009160009260009160009361156f575063ffffffff610c5b60ff6000541692612b99565b604083015160a084015163ffffffff6040850151166020840151916040519363617f933d60e11b85527f02030302010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a1576114729160009160009260009160009361156f575063ffffffff610c5b60ff6000541692612b99565b602063ffffffff60406060608087015196015194015116910151916040519363617f933d60e11b85527f03020302010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a157610b319160009160009260009160009361156f575063ffffffff610c5b60ff6000541692612b99565b905063ffffffff610b4a60ff60005460181c1692612b99565b90915061153f60ff60005460101c1691612829565b1515901515149038610c6b565b90925063ffffffff61156660ff60005460081c1692612b99565b16149138610c64565b9250505061158c915060803d60801161049a576104818183610595565b919238610c46565b916115f66115c060c085015160e086015167ffffffffffffffff60608701511690606086015192612e3d565b919267ffffffffffffffff6115da60ff6000541692612cbf565b161492836127dd575b50826127bb575b508161279e575061074b565b6116216115c060c085015160e086015167ffffffffffffffff60608701511690606086015192612e3d565b825160e084015167ffffffffffffffff6060850151166060840151916040519363617f933d60e11b85527f01040404010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a1576116c691600091600092600091600093612804575b5067ffffffffffffffff6115da60ff6000541692612cbf565b60c0830151602084015167ffffffffffffffff6060850151166060840151916040519363617f933d60e11b85527f04010404010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a15761176d91600091600092600091600093612804575067ffffffffffffffff6115da60ff6000541692612cbf565b604083015160e084015167ffffffffffffffff6060850151166060840151916040519363617f933d60e11b85527f02040404010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a15761181491600091600092600091600093612804575067ffffffffffffffff6115da60ff6000541692612cbf565b60c0830151606084015167ffffffffffffffff6060850151166060840151916040519363617f933d60e11b85527f04020404010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a1576118bb91600091600092600091600093612804575067ffffffffffffffff6115da60ff6000541692612cbf565b608083015160e084015167ffffffffffffffff6060850151166060840151916040519363617f933d60e11b85527f03040404010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a15761196291600091600092600091600093612804575067ffffffffffffffff6115da60ff6000541692612cbf565b60c083015160a084015167ffffffffffffffff6060850151166060840151916040519363617f933d60e11b85527f04030404010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a157611a0991600091600092600091600093612804575067ffffffffffffffff6115da60ff6000541692612cbf565b60c083015160e084015167ffffffffffffffff6060850151168351916040519363617f933d60e11b85527f04040401010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a157611aad91600091600092600091600093612804575067ffffffffffffffff6115da60ff6000541692612cbf565b825160e084015167ffffffffffffffff6060850151168351916040519363617f933d60e11b85527f01040401010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a157611b4e91600091600092600091600093612804575067ffffffffffffffff6115da60ff6000541692612cbf565b60c0830151602084015167ffffffffffffffff6060850151168351916040519363617f933d60e11b85527f04010401010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a157611bf291600091600092600091600093612804575067ffffffffffffffff6115da60ff6000541692612cbf565b604083015160e084015167ffffffffffffffff6060850151168351916040519363617f933d60e11b85527f02040401010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a157611c9691600091600092600091600093612804575067ffffffffffffffff6115da60ff6000541692612cbf565b60c0830151606084015167ffffffffffffffff6060850151168351916040519363617f933d60e11b85527f04020401010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a157611d3a91600091600092600091600093612804575067ffffffffffffffff6115da60ff6000541692612cbf565b608083015160e084015167ffffffffffffffff6060850151168351916040519363617f933d60e11b85527f03040401010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a157611dde91600091600092600091600093612804575067ffffffffffffffff6115da60ff6000541692612cbf565b60c083015160a084015167ffffffffffffffff6060850151168351916040519363617f933d60e11b85527f04030401010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a157611e8291600091600092600091600093612804575067ffffffffffffffff6115da60ff6000541692612cbf565b60c083015160e084015167ffffffffffffffff6060850151166020840151916040519363617f933d60e11b85527f04040402010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a157611f2991600091600092600091600093612804575067ffffffffffffffff6115da60ff6000541692612cbf565b825160e084015167ffffffffffffffff6060850151166020840151916040519363617f933d60e11b85527f01040402010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a157611fcd91600091600092600091600093612804575067ffffffffffffffff6115da60ff6000541692612cbf565b60c0830151602084015167ffffffffffffffff6060850151166020840151916040519363617f933d60e11b85527f04010402010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a15761207491600091600092600091600093612804575067ffffffffffffffff6115da60ff6000541692612cbf565b604083015160e084015167ffffffffffffffff6060850151166020840151916040519363617f933d60e11b85527f02040402010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a15761211b91600091600092600091600093612804575067ffffffffffffffff6115da60ff6000541692612cbf565b60c0830151606084015167ffffffffffffffff6060850151166020840151916040519363617f933d60e11b85527f04020402010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a1576121c291600091600092600091600093612804575067ffffffffffffffff6115da60ff6000541692612cbf565b608083015160e084015167ffffffffffffffff6060850151166020840151916040519363617f933d60e11b85527f03040402010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a15761226991600091600092600091600093612804575067ffffffffffffffff6115da60ff6000541692612cbf565b60c083015160a084015167ffffffffffffffff6060850151166020840151916040519363617f933d60e11b85527f04030402010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a15761231091600091600092600091600093612804575067ffffffffffffffff6115da60ff6000541692612cbf565b60c083015160e084015167ffffffffffffffff6060850151166040840151916040519363617f933d60e11b85527f04040403010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a1576123b791600091600092600091600093612804575067ffffffffffffffff6115da60ff6000541692612cbf565b825160e084015167ffffffffffffffff6060850151166040840151916040519363617f933d60e11b85527f01040403010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a15761245b91600091600092600091600093612804575067ffffffffffffffff6115da60ff6000541692612cbf565b60c0830151602084015167ffffffffffffffff6060850151166040840151916040519363617f933d60e11b85527f04010403010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a15761250291600091600092600091600093612804575067ffffffffffffffff6115da60ff6000541692612cbf565b604083015160e084015167ffffffffffffffff6060850151166040840151916040519363617f933d60e11b85527f02040403010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a1576125a991600091600092600091600093612804575067ffffffffffffffff6115da60ff6000541692612cbf565b60c0830151606084015167ffffffffffffffff6060850151166040840151916040519363617f933d60e11b85527f04020403010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a15761265091600091600092600091600093612804575067ffffffffffffffff6115da60ff6000541692612cbf565b608083015160e084015167ffffffffffffffff6060850151166040840151916040519363617f933d60e11b85527f03040403010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a1576126f791600091600092600091600093612804575067ffffffffffffffff6115da60ff6000541692612cbf565b604067ffffffffffffffff606060a060c087015196015194015116910151916040519363617f933d60e11b85527f04030403010000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af19081156104a157610b3191600091600092600091600093612804575067ffffffffffffffff6115da60ff6000541692612cbf565b905067ffffffffffffffff610b4a60ff60005460181c1692612cbf565b9091506127d060ff60005460101c1691612829565b15159015151490386115ea565b90925067ffffffffffffffff6127fb60ff60005460081c1692612cbf565b161491386115e3565b92505050612821915060803d60801161049a576104818183610595565b9192386116ad565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260009182600483015260248201526020816044818560645af19182156128b457809261287d575b5050151590565b9091506020823d82116128ac575b8161289860209383610595565b810103126128a95750513880612876565b80fd5b3d915061288b565b604051903d90823e3d90fd5b60ff604051917fd9b60b600000000000000000000000000000000000000000000000000000000083527f01000000000000000000000000000000000000000000000000000000000000006004840152166024820152602081604481600060645af19081156104a157600091612933575090565b906020823d8211612959575b8161294c60209383610595565b810103126128a957505190565b3d915061293f565b604051907f0cfed5610000000000000000000000000000000000000000000000000000000082527f010000000000000000000000000000000000000000000000000000000000000060048301526024820152602081604481600060645af180156104a1576000906129d5575b60ff91501690565b6020823d82116129ff575b816129ed60209383610595565b810103126128a9575060ff90516129cd565b3d91506129e0565b61ffff604051917fd9b60b600000000000000000000000000000000000000000000000000000000083527f02000000000000000000000000000000000000000000000000000000000000006004840152166024820152602081604481600060645af19081156104a157600091612933575090565b604051907f0cfed5610000000000000000000000000000000000000000000000000000000082527f020000000000000000000000000000000000000000000000000000000000000060048301526024820152602081604481600060645af180156104a157600090612af0575b61ffff91501690565b6020823d8211612b1b575b81612b0860209383610595565b810103126128a9575061ffff9051612ae7565b3d9150612afb565b63ffffffff604051917fd9b60b600000000000000000000000000000000000000000000000000000000083527f03000000000000000000000000000000000000000000000000000000000000006004840152166024820152602081604481600060645af19081156104a157600091612933575090565b604051907f0cfed5610000000000000000000000000000000000000000000000000000000082527f030000000000000000000000000000000000000000000000000000000000000060048301526024820152602081604481600060645af180156104a157600090612c10575b63ffffffff91501690565b6020823d8211612c3d575b81612c2860209383610595565b810103126128a9575063ffffffff9051612c05565b3d9150612c1b565b67ffffffffffffffff604051917fd9b60b600000000000000000000000000000000000000000000000000000000083527f04000000000000000000000000000000000000000000000000000000000000006004840152166024820152602081604481600060645af19081156104a157600091612933575090565b604051907f0cfed5610000000000000000000000000000000000000000000000000000000082527f040000000000000000000000000000000000000000000000000000000000000060048301526024820152602081604481600060645af180156104a157600090612d3a575b67ffffffffffffffff91501690565b6020823d8211612d6b575b81612d5260209383610595565b810103126128a9575067ffffffffffffffff9051612d2b565b3d9150612d45565b919082608091031261006f578151916020810151916060604083015192015190565b93929161ffff916040519563617f933d60e11b87527f0202020201000000000000000000000000000000000000000000000000000000600488015260248701526044860152166064840152608483015260009060808360a4818560645af1908115612e32578283948493612e0b575b5093929190565b9250509250612e28915060803d811161049a576104818183610595565b9193909238612e04565b6040513d84823e3d90fd5b93929167ffffffffffffffff916040519563617f933d60e11b87527f0404040401000000000000000000000000000000000000000000000000000000600488015260248701526044860152166064840152608483015260009060808360a4818560645af1908115612e32578283948493612e0b57509392919056fea164736f6c6343000814000a";
450
450
 
451
451
  type TransferWithAllowanceScalarTestsContractConstructorParams =
452
452
  | [signer?: Signer]
@@ -379,7 +379,7 @@ const _abi = [
379
379
  ] as const;
380
380
 
381
381
  const _bytecode =
382
- "0x608060405234801561001057600080fd5b506141dd806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80634717f97c1461005157806386affd16146100a2578063eae36abd146100b7578063f20eac20146100ca575b600080fd5b60005460ff80821691610100810482169162010000820481169163010000009004165b6040805160ff9586168152938516602085015291151583830152909216606082015290519081900360800190f35b6100b56100b0366004614012565b6100dd565b005b6100746100c53660046140fe565b610aa2565b6100b56100d8366004614012565b610e03565b6000806000806100ff8b604001518c606001518c602001518c60200151613373565b93509350935093506101108461345e565b61ffff168860ff1614801561013357506101298361345e565b61ffff168760ff16145b801561014a575061014382613501565b1515861515145b8015610164575061015a8161345e565b61ffff168560ff16145b6101b55760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064015b60405180910390fd5b6101d18b604001518c602001518c600001518c60000151613592565b929650909450925090506101e48461345e565b61ffff168860ff1614801561020757506101fd8361345e565b61ffff168760ff16145b801561021e575061021782613501565b1515861515145b8015610238575061022e8161345e565b61ffff168560ff16145b6102845760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b8a5160608c01518b518b5161029b939291906135b1565b929650909450925090506102ae8461345e565b61ffff168860ff161480156102d157506102c78361345e565b61ffff168760ff16145b80156102e857506102e182613501565b1515861515145b801561030257506102f88161345e565b61ffff168560ff16145b61034e5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b61036a8b604001518c602001518c602001518c600001516135d0565b9296509094509250905061037d8461345e565b61ffff168860ff161480156103a057506103968361345e565b61ffff168760ff16145b80156103b757506103b082613501565b1515861515145b80156103d157506103c78161345e565b61ffff168560ff16145b61041d5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b6104398b600001518c606001518c602001518c600001516135ef565b9296509094509250905061044c8461345e565b61ffff168860ff1614801561046f57506104658361345e565b61ffff168760ff16145b8015610486575061047f82613501565b1515861515145b80156104a057506104968161345e565b61ffff168560ff16145b6104ec5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b6105088b604001518c606001518c600001518c6000015161360e565b9296509094509250905061051b8461345e565b61ffff168860ff1614801561053e57506105348361345e565b61ffff168760ff16145b8015610555575061054e82613501565b1515861515145b801561056f57506105658161345e565b61ffff168560ff16145b6105bb5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b6105d78b604001518c606001518c602001518c6000015161362d565b929650909450925090506105ea8461345e565b61ffff168860ff1614801561060d57506106038361345e565b61ffff168760ff16145b8015610624575061061d82613501565b1515861515145b801561063e57506106348161345e565b61ffff168560ff16145b61068a5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b6106a68b604001518c602001518c600001518c6020015161364c565b929650909450925090506106b98461345e565b61ffff168860ff161480156106dc57506106d28361345e565b61ffff168760ff16145b80156106f357506106ec82613501565b1515861515145b801561070d57506107038161345e565b61ffff168560ff16145b6107595760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b6107758b600001518c606001518c600001518c6020015161366b565b929650909450925090506107888461345e565b61ffff168860ff161480156107ab57506107a18361345e565b61ffff168760ff16145b80156107c257506107bb82613501565b1515861515145b80156107dc57506107d28161345e565b61ffff168560ff16145b6108285760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b6108448b604001518c602001518c602001518c6020015161368a565b929650909450925090506108578461345e565b61ffff168860ff1614801561087a57506108708361345e565b61ffff168760ff16145b8015610891575061088a82613501565b1515861515145b80156108ab57506108a18161345e565b61ffff168560ff16145b6108f75760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b6109138b600001518c606001518c602001518c602001516136a9565b929650909450925090506109268461345e565b61ffff168860ff16148015610949575061093f8361345e565b61ffff168760ff16145b8015610960575061095982613501565b1515861515145b801561097a57506109708161345e565b61ffff168560ff16145b6109c65760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b6109e28b604001518c606001518c600001518c602001516136c8565b929650909450925090506109f58461345e565b61ffff168860ff16148015610a185750610a0e8361345e565b61ffff168760ff16145b8015610a2f5750610a2882613501565b1515861515145b8015610a495750610a3f8161345e565b61ffff168560ff16145b610a955760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b5050505050505050505050565b600080600080610af060405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610b256040518060a0016040528060008152602001600081526020016000815260200160008152602001600060ff1681525090565b610b5a6040518060a0016040528060008152602001600081526020016000815260200160008152602001600060ff1681525090565b610b638b6136e7565b8352610b6e8a6136e7565b6020840152610b7f60ff8c16613750565b6040840152610b9060ff8b16613750565b6060840152610ba160ff8c166137ba565b6080840152610bb260ff8b166137ba565b60a0840152610bc360ff8c16613826565b60c0840152610bd460ff8b16613826565b60e0840152610be2896136e7565b8252610bf060ff8a16613750565b6020830152610c0160ff8a166137ba565b6040830152610c1260ff8a16613826565b606083015260ff89166080830152610c29886136e7565b8152610c3760ff8916613750565b6020820152610c4860ff89166137ba565b6040820152610c5960ff8916613826565b606082015260ff881660808201528251602084015183518351600093849384938493610c8793929190613896565b9350935093509350610c98846138b4565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055610cd3836138b4565b600060016101000a81548160ff021916908360ff160217905550610cf682613501565b6000805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055610d35816138b4565b6000805460ff92831663010000009081027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff8316811793849055610d9c948c948c948c949383169083161792610100820483169262010000830481169291909104166100dd565b600054610dcd9088908890889060ff8082169161010081048216916201000082048116916301000000900416610e03565b505060005460ff8082169f610100830482169f5062010000830482169e506301000000909204169b509950505050505050505050565b600080600080610e258b608001518c60a001518c604001518c604001516138c4565b9350935093509350610e36846138e2565b63ffffffff168860ff16148015610e5d5750610e51836138e2565b63ffffffff168760ff16145b8015610e745750610e6d82613501565b1515861515145b8015610e905750610e84816138e2565b63ffffffff168560ff16145b610edc5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b610ef88b608001518c602001518c600001518c600001516138f2565b92965090945092509050610f0b846138e2565b63ffffffff168860ff16148015610f325750610f26836138e2565b63ffffffff168760ff16145b8015610f495750610f4282613501565b1515861515145b8015610f655750610f59816138e2565b63ffffffff168560ff16145b610fb15760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b8a5160a08c01518b518b51610fc893929190613911565b92965090945092509050610fdb846138e2565b63ffffffff168860ff161480156110025750610ff6836138e2565b63ffffffff168760ff16145b8015611019575061101282613501565b1515861515145b80156110355750611029816138e2565b63ffffffff168560ff16145b6110815760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b61109d8b608001518c602001518c604001518c60000151613930565b929650909450925090506110b0846138e2565b63ffffffff168860ff161480156110d757506110cb836138e2565b63ffffffff168760ff16145b80156110ee57506110e782613501565b1515861515145b801561110a57506110fe816138e2565b63ffffffff168560ff16145b6111565760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6111728b600001518c60a001518c604001518c6000015161394f565b92965090945092509050611185846138e2565b63ffffffff168860ff161480156111ac57506111a0836138e2565b63ffffffff168760ff16145b80156111c357506111bc82613501565b1515861515145b80156111df57506111d3816138e2565b63ffffffff168560ff16145b61122b5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6112478b608001518c60a001518c604001518c6000015161396e565b9296509094509250905061125a846138e2565b63ffffffff168860ff161480156112815750611275836138e2565b63ffffffff168760ff16145b8015611298575061129182613501565b1515861515145b80156112b457506112a8816138e2565b63ffffffff168560ff16145b6113005760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b61131c8b608001518c602001518c602001518c6000015161398d565b9296509094509250905061132f846138e2565b63ffffffff168860ff16148015611356575061134a836138e2565b63ffffffff168760ff16145b801561136d575061136682613501565b1515861515145b8015611389575061137d816138e2565b63ffffffff168560ff16145b6113d55760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6113f18b600001518c60a001518c602001518c600001516139ad565b92965090945092509050611404846138e2565b63ffffffff168860ff1614801561142b575061141f836138e2565b63ffffffff168760ff16145b8015611442575061143b82613501565b1515861515145b801561145e5750611452816138e2565b63ffffffff168560ff16145b6114aa5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6114c68b608001518c60a001518c600001518c600001516139cd565b929650909450925090506114d9846138e2565b63ffffffff168860ff1614801561150057506114f4836138e2565b63ffffffff168760ff16145b8015611517575061151082613501565b1515861515145b80156115335750611527816138e2565b63ffffffff168560ff16145b61157f5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b61159b8b608001518c602001518c600001518c602001516139ec565b929650909450925090506115ae846138e2565b63ffffffff168860ff161480156115d557506115c9836138e2565b63ffffffff168760ff16145b80156115ec57506115e582613501565b1515861515145b801561160857506115fc816138e2565b63ffffffff168560ff16145b6116545760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6116708b600001518c60a001518c600001518c60200151613a0c565b92965090945092509050611683846138e2565b63ffffffff168860ff161480156116aa575061169e836138e2565b63ffffffff168760ff16145b80156116c157506116ba82613501565b1515861515145b80156116dd57506116d1816138e2565b63ffffffff168560ff16145b6117295760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6117458b608001518c602001518c604001518c60200151613a2c565b92965090945092509050611758846138e2565b63ffffffff168860ff1614801561177f5750611773836138e2565b63ffffffff168760ff16145b8015611796575061178f82613501565b1515861515145b80156117b257506117a6816138e2565b63ffffffff168560ff16145b6117fe5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b61181a8b600001518c60a001518c604001518c60200151613a4c565b9296509094509250905061182d846138e2565b63ffffffff168860ff161480156118545750611848836138e2565b63ffffffff168760ff16145b801561186b575061186482613501565b1515861515145b8015611887575061187b816138e2565b63ffffffff168560ff16145b6118d35760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6118ef8b608001518c602001518c602001518c60200151613a6c565b92965090945092509050611902846138e2565b63ffffffff168860ff16148015611929575061191d836138e2565b63ffffffff168760ff16145b8015611940575061193982613501565b1515861515145b801561195c5750611950816138e2565b63ffffffff168560ff16145b6119a85760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6119c48b600001518c60a001518c602001518c60200151613a8c565b929650909450925090506119d7846138e2565b63ffffffff168860ff161480156119fe57506119f2836138e2565b63ffffffff168760ff16145b8015611a155750611a0e82613501565b1515861515145b8015611a315750611a25816138e2565b63ffffffff168560ff16145b611a7d5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b611a998b608001518c60a001518c600001518c60200151613aac565b92965090945092509050611aac846138e2565b63ffffffff168860ff16148015611ad35750611ac7836138e2565b63ffffffff168760ff16145b8015611aea5750611ae382613501565b1515861515145b8015611b065750611afa816138e2565b63ffffffff168560ff16145b611b525760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b611b6e8b608001518c602001518c600001518c60400151613acc565b92965090945092509050611b81846138e2565b63ffffffff168860ff16148015611ba85750611b9c836138e2565b63ffffffff168760ff16145b8015611bbf5750611bb882613501565b1515861515145b8015611bdb5750611bcf816138e2565b63ffffffff168560ff16145b611c275760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b611c438b600001518c60a001518c600001518c60400151613aeb565b92965090945092509050611c56846138e2565b63ffffffff168860ff16148015611c7d5750611c71836138e2565b63ffffffff168760ff16145b8015611c945750611c8d82613501565b1515861515145b8015611cb05750611ca4816138e2565b63ffffffff168560ff16145b611cfc5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b611d188b608001518c602001518c604001518c60400151613b0a565b92965090945092509050611d2b846138e2565b63ffffffff168860ff16148015611d525750611d46836138e2565b63ffffffff168760ff16145b8015611d695750611d6282613501565b1515861515145b8015611d855750611d79816138e2565b63ffffffff168560ff16145b611dd15760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b611ded8b600001518c60a001518c604001518c60400151613b29565b92965090945092509050611e00846138e2565b63ffffffff168860ff16148015611e275750611e1b836138e2565b63ffffffff168760ff16145b8015611e3e5750611e3782613501565b1515861515145b8015611e5a5750611e4e816138e2565b63ffffffff168560ff16145b611ea65760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b611ec28b608001518c602001518c602001518c60400151613b48565b92965090945092509050611ed5846138e2565b63ffffffff168860ff16148015611efc5750611ef0836138e2565b63ffffffff168760ff16145b8015611f135750611f0c82613501565b1515861515145b8015611f2f5750611f23816138e2565b63ffffffff168560ff16145b611f7b5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b611f978b600001518c60a001518c602001518c60400151613b68565b92965090945092509050611faa846138e2565b63ffffffff168860ff16148015611fd15750611fc5836138e2565b63ffffffff168760ff16145b8015611fe85750611fe182613501565b1515861515145b80156120045750611ff8816138e2565b63ffffffff168560ff16145b6120505760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b61206c8b608001518c60a001518c600001518c60400151613b88565b9296509094509250905061207f846138e2565b63ffffffff168860ff161480156120a6575061209a836138e2565b63ffffffff168760ff16145b80156120bd57506120b682613501565b1515861515145b80156120d957506120cd816138e2565b63ffffffff168560ff16145b6121255760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6121418b604001518c60a001518c600001518c60000151613ba7565b92965090945092509050612154846138e2565b63ffffffff168860ff1614801561217b575061216f836138e2565b63ffffffff168760ff16145b8015612192575061218b82613501565b1515861515145b80156121ae57506121a2816138e2565b63ffffffff168560ff16145b6121fa5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6122168b608001518c606001518c600001518c60000151613bc7565b92965090945092509050612229846138e2565b63ffffffff168860ff161480156122505750612244836138e2565b63ffffffff168760ff16145b8015612267575061226082613501565b1515861515145b80156122835750612277816138e2565b63ffffffff168560ff16145b6122cf5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6122eb8b604001518c60a001518c602001518c60000151613be7565b929650909450925090506122fe846138e2565b63ffffffff168860ff161480156123255750612319836138e2565b63ffffffff168760ff16145b801561233c575061233582613501565b1515861515145b8015612358575061234c816138e2565b63ffffffff168560ff16145b6123a45760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6123c08b608001518c606001518c602001518c60000151613c07565b929650909450925090506123d3846138e2565b63ffffffff168860ff161480156123fa57506123ee836138e2565b63ffffffff168760ff16145b8015612411575061240a82613501565b1515861515145b801561242d5750612421816138e2565b63ffffffff168560ff16145b6124795760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6124958b604001518c60a001518c604001518c60000151613c27565b929650909450925090506124a8846138e2565b63ffffffff168860ff161480156124cf57506124c3836138e2565b63ffffffff168760ff16145b80156124e657506124df82613501565b1515861515145b801561250257506124f6816138e2565b63ffffffff168560ff16145b61254e5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b61256a8b608001518c606001518c604001518c60000151613c47565b9296509094509250905061257d846138e2565b63ffffffff168860ff161480156125a45750612598836138e2565b63ffffffff168760ff16145b80156125bb57506125b482613501565b1515861515145b80156125d757506125cb816138e2565b63ffffffff168560ff16145b6126235760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b61263f8b608001518c60a001518c602001518c60000151613c67565b92965090945092509050612652846138e2565b63ffffffff168860ff16148015612679575061266d836138e2565b63ffffffff168760ff16145b8015612690575061268982613501565b1515861515145b80156126ac57506126a0816138e2565b63ffffffff168560ff16145b6126f85760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6127148b604001518c60a001518c600001518c60200151613c87565b92965090945092509050612727846138e2565b63ffffffff168860ff1614801561274e5750612742836138e2565b63ffffffff168760ff16145b8015612765575061275e82613501565b1515861515145b80156127815750612775816138e2565b63ffffffff168560ff16145b6127cd5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6127e98b608001518c606001518c600001518c60200151613ca7565b929650909450925090506127fc846138e2565b63ffffffff168860ff161480156128235750612817836138e2565b63ffffffff168760ff16145b801561283a575061283382613501565b1515861515145b8015612856575061284a816138e2565b63ffffffff168560ff16145b6128a25760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6128be8b604001518c60a001518c602001518c60200151613cc7565b929650909450925090506128d1846138e2565b63ffffffff168860ff161480156128f857506128ec836138e2565b63ffffffff168760ff16145b801561290f575061290882613501565b1515861515145b801561292b575061291f816138e2565b63ffffffff168560ff16145b6129775760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6129938b608001518c606001518c602001518c60200151613ce6565b929650909450925090506129a6846138e2565b63ffffffff168860ff161480156129cd57506129c1836138e2565b63ffffffff168760ff16145b80156129e457506129dd82613501565b1515861515145b8015612a0057506129f4816138e2565b63ffffffff168560ff16145b612a4c5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b612a688b604001518c60a001518c604001518c60200151613d05565b92965090945092509050612a7b846138e2565b63ffffffff168860ff16148015612aa25750612a96836138e2565b63ffffffff168760ff16145b8015612ab95750612ab282613501565b1515861515145b8015612ad55750612ac9816138e2565b63ffffffff168560ff16145b612b215760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b612b3d8b608001518c606001518c604001518c60200151613d24565b92965090945092509050612b50846138e2565b63ffffffff168860ff16148015612b775750612b6b836138e2565b63ffffffff168760ff16145b8015612b8e5750612b8782613501565b1515861515145b8015612baa5750612b9e816138e2565b63ffffffff168560ff16145b612bf65760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b612c128b608001518c60a001518c602001518c60200151613d43565b92965090945092509050612c25846138e2565b63ffffffff168860ff16148015612c4c5750612c40836138e2565b63ffffffff168760ff16145b8015612c635750612c5c82613501565b1515861515145b8015612c7f5750612c73816138e2565b63ffffffff168560ff16145b612ccb5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b612ce78b608001518c60a001518c604001518c60200151613d62565b92965090945092509050612cfa846138e2565b63ffffffff168860ff16148015612d215750612d15836138e2565b63ffffffff168760ff16145b8015612d385750612d3182613501565b1515861515145b8015612d545750612d48816138e2565b63ffffffff168560ff16145b612da05760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b612dbc8b604001518c60a001518c600001518c60400151613d81565b92965090945092509050612dcf846138e2565b63ffffffff168860ff16148015612df65750612dea836138e2565b63ffffffff168760ff16145b8015612e0d5750612e0682613501565b1515861515145b8015612e295750612e1d816138e2565b63ffffffff168560ff16145b612e755760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b612e918b608001518c606001518c600001518c60400151613da1565b92965090945092509050612ea4846138e2565b63ffffffff168860ff16148015612ecb5750612ebf836138e2565b63ffffffff168760ff16145b8015612ee25750612edb82613501565b1515861515145b8015612efe5750612ef2816138e2565b63ffffffff168560ff16145b612f4a5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b612f668b604001518c60a001518c602001518c60400151613dc1565b92965090945092509050612f79846138e2565b63ffffffff168860ff16148015612fa05750612f94836138e2565b63ffffffff168760ff16145b8015612fb75750612fb082613501565b1515861515145b8015612fd35750612fc7816138e2565b63ffffffff168560ff16145b61301f5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b61303b8b608001518c606001518c602001518c60400151613de0565b9296509094509250905061304e846138e2565b63ffffffff168860ff161480156130755750613069836138e2565b63ffffffff168760ff16145b801561308c575061308582613501565b1515861515145b80156130a8575061309c816138e2565b63ffffffff168560ff16145b6130f45760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6131108b604001518c60a001518c604001518c60400151613dff565b92965090945092509050613123846138e2565b63ffffffff168860ff1614801561314a575061313e836138e2565b63ffffffff168760ff16145b8015613161575061315a82613501565b1515861515145b801561317d5750613171816138e2565b63ffffffff168560ff16145b6131c95760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6131e58b608001518c606001518c604001518c60400151613e1e565b929650909450925090506131f8846138e2565b63ffffffff168860ff1614801561321f5750613213836138e2565b63ffffffff168760ff16145b8015613236575061322f82613501565b1515861515145b80156132525750613246816138e2565b63ffffffff168560ff16145b61329e5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6132ba8b608001518c60a001518c602001518c60400151613e3d565b929650909450925090506132cd846138e2565b63ffffffff168860ff161480156132f457506132e8836138e2565b63ffffffff168760ff16145b801561330b575061330482613501565b1515861515145b8015613327575061331b816138e2565b63ffffffff168560ff16145b610a955760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b600080808080808080606463c2ff267a613391600280808087613e58565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffffffff0000000000000000000000000000000000000000000000000000009091166004820152602481018f9052604481018e9052606481018d9052608481018c905260a4016080604051808303816000875af1158015613424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134489190614152565b929f919e509c50909a5098505050505050505050565b60006064630cfed56160025b60f81b846040518363ffffffff1660e01b81526004016134b89291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6020604051808303816000875af11580156134d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134fb91906141b7565b92915050565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260006004820181905260248201839052908190606490630cfed561906044016020604051808303816000875af1158015613565573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061358991906141b7565b15159392505050565b600080808080808080606463c2ff267a61339160026001808087613e58565b600080808080808080606463c2ff267a61339160016002818087613e58565b600080808080808080606463c2ff267a61339160026001818187613e58565b600080808080808080606463c2ff267a61339160016002808287613e58565b600080808080808080606463c2ff267a61339160028060018087613e58565b600080808080808080606463c2ff267a61339160028080600187613e58565b600080808080808080606463c2ff267a61339160026001808287613e58565b600080808080808080606463c2ff267a61339160016002818187613e58565b600080808080808080606463c2ff267a61339160026001818087613e58565b600080808080808080606463c2ff267a61339160016002808087613e58565b600080808080808080606463c2ff267a61339160028060018187613e58565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0100000000000000000000000000000000000000000000000000000000000000600482015260ff8216602482015260009060649063d9b60b60906044016134b8565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0200000000000000000000000000000000000000000000000000000000000000600482015261ffff8216602482015260009060649063d9b60b60906044016134b8565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0300000000000000000000000000000000000000000000000000000000000000600482015263ffffffff8216602482015260009060649063d9b60b60906044016134b8565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b60906044016134b8565b600080808080808080606463c2ff267a613391600180808087613e58565b60006064630cfed561600161346a565b600080808080808080606463c2ff267a613391600380808087613e58565b60006064630cfed561600361346a565b600080808080808080606463c2ff267a61339160036001808087613e58565b600080808080808080606463c2ff267a61339160016003818087613e58565b600080808080808080606463c2ff267a61339160036001818187613e58565b600080808080808080606463c2ff267a61339160016003808287613e58565b600080808080808080606463c2ff267a61339160038080600187613e58565b600080808080808080606463c2ff267a6133916003600160028187613e58565b600080808080808080606463c2ff267a6133916001600360028287613e58565b600080808080808080606463c2ff267a61339160038060018087613e58565b600080808080808080606463c2ff267a6133916003600180600287613e58565b600080808080808080606463c2ff267a6133916001600381600287613e58565b600080808080808080606463c2ff267a6133916003600181600287613e58565b600080808080808080606463c2ff267a6133916001600380600287613e58565b600080808080808080606463c2ff267a6133916003600160028087613e58565b600080808080808080606463c2ff267a6133916001600360028087613e58565b600080808080808080606463c2ff267a6133916003806001600287613e58565b600080808080808080606463c2ff267a61339160036001808287613e58565b600080808080808080606463c2ff267a61339160016003818187613e58565b600080808080808080606463c2ff267a61339160036001818087613e58565b600080808080808080606463c2ff267a61339160016003808087613e58565b600080808080808080606463c2ff267a6133916003600160028287613e58565b600080808080808080606463c2ff267a6133916001600360028187613e58565b600080808080808080606463c2ff267a61339160038060018187613e58565b600080808080808080606463c2ff267a6133916002600360018087613e58565b600080808080808080606463c2ff267a6133916003600260018087613e58565b600080808080808080606463c2ff267a6133916002600381600187613e58565b600080808080808080606463c2ff267a6133916003600280600187613e58565b600080808080808080606463c2ff267a6133916002600380600187613e58565b600080808080808080606463c2ff267a6133916003600281600187613e58565b600080808080808080606463c2ff267a6133916003806002600187613e58565b600080808080808080606463c2ff267a6133916002600360018287613e58565b600080808080808080606463c2ff267a6133916003600260018187613e58565b600080808080808080606463c2ff267a61339160026003818087613e58565b600080808080808080606463c2ff267a61339160036002808087613e58565b600080808080808080606463c2ff267a61339160026003808287613e58565b600080808080808080606463c2ff267a61339160036002818187613e58565b600080808080808080606463c2ff267a61339160038060028087613e58565b600080808080808080606463c2ff267a61339160038080600287613e58565b600080808080808080606463c2ff267a6133916002600360018187613e58565b600080808080808080606463c2ff267a6133916003600260018287613e58565b600080808080808080606463c2ff267a61339160026003818187613e58565b600080808080808080606463c2ff267a61339160036002808287613e58565b600080808080808080606463c2ff267a61339160026003808087613e58565b600080808080808080606463c2ff267a61339160036002818087613e58565b600080808080808080606463c2ff267a613391600380600281875b6000816002811115613e6c57613e6c614188565b60ff166008846006811115613e8357613e83614188565b61ffff16901b61ffff166010866006811115613ea157613ea1614188565b62ffffff16901b62ffffff166018886006811115613ec157613ec1614188565b63ffffffff16901b63ffffffff1660208a6006811115613ee357613ee3614188565b64ffffffffff16901b1717171760d81b9695505050505050565b604051610100810167ffffffffffffffff81118282101715613f48577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803560ff81168114613f5f57600080fd5b919050565b600060a08284031215613f7657600080fd5b60405160a0810181811067ffffffffffffffff82111715613fc0577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b806040525080915082358152602083013560208201526040830135604082015260608301356060820152613ff660808401613f4e565b60808201525092915050565b80358015158114613f5f57600080fd5b60008060008060008060008789036102c081121561402f57600080fd5b6101008082121561403f57600080fd5b614047613efd565b91508935825260208a0135602083015260408a0135604083015260608a0135606083015260808a0135608083015260a08a013560a083015260c08a013560c083015260e08a013560e08301528198506140a28b828c01613f64565b975050506140b4896101a08a01613f64565b94506140c36102408901613f4e565b93506140d26102608901613f4e565b92506140e16102808901614002565b91506140f06102a08901613f4e565b905092959891949750929550565b6000806000806080858703121561411457600080fd5b61411d85613f4e565b935061412b60208601613f4e565b925061413960408601613f4e565b915061414760608601613f4e565b905092959194509250565b6000806000806080858703121561416857600080fd5b505082516020840151604085015160609095015191969095509092509050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6000602082840312156141c957600080fd5b505191905056fea164736f6c6343000813000a";
382
+ "0x6080806040523461001657612fb7908161001c8239f35b600080fdfe6080604090808252600436101561001557600080fd5b600091823560e01c9182634717f97c1461049a5750816386affd161461047c578163eae36abd14610073575063f20eac201461005057600080fd5b346100705761006d610061366105ab565b95949094939193611008565b80f35b80fd5b82346100705760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100705760ff908160043516600435036100705781602435166024350361007057816044351660443503610070578160643516606435036100705782516100e581610502565b81815281602082015281848201528160608201528160808201528160a08201528160c08201528160e0820152610119612aca565b610121612aca565b9161012d600435612b89565b815261013a602435612b89565b602082015261014c8560043516612cf2565b8682015261015d8560243516612cf2565b606082015261016f8560043516612e0e565b60808201526101818560243516612e0e565b60a08201526101938560043516612f30565b60c08201526101a58560243516612f30565b60e08201526101b5604435612b89565b82526101c48560443516612cf2565b60208301526101d68560443516612e0e565b868301526101e78560443516612f30565b606083015284604435166080830152610201606435612b89565b83526102108560643516612cf2565b60208401526102228560643516612e0e565b868401526102338560643516612f30565b60608401528460643516608084015280516020820151835185519189519363617f933d60e11b85527f01010101000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a4818860645af1801561047257916103c26103716103e2959388979561042699898c8b928c9461042a575b61033a949550906102d86103059392612c2a565b167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008d5416178c55612c2a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff61ff008c549260081b169116178a55612af5565b88547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1690151560101b62ff000016178855612c2a565b63ff00000087549160181b167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff821617808855898160181c16918a80808460101c169360081c1691168787876107a5565b845490878260181c1693888360101c169389808560081c16941692611008565b549251928284938260181c1691818160101c1691808260081c16911685929360ff919594826060948160808801991687521660208601521515604085015216910152565b0390f35b5091505061033a915061030561045a6102d89460803d60801161046b575b610452818361056a565b810190612cd0565b9296509194509092909150846102c4565b503d610448565b87513d87823e3d90fd5b82346100705761006d61048e366105ab565b959490949391936107a5565b8390346104fe57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104fe57905460ff8082168352600882901c81166020840152601082901c81161515604084015260189190911c166060820152608090f35b5080fd5b610100810190811067ffffffffffffffff82111761051f57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60a0810190811067ffffffffffffffff82111761051f57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761051f57604052565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc81016102c0811261073b576101001361073b5760409182516105ed81610502565b60043581526024356020820152604435848201526064356060820152608435608082015260a43560a082015260c43560c082015260e43560e08201529260a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefc84011261073b57805161065f8161054e565b61010435815261012435602082015261014435828201526101643560608201526101843560ff8116810361073b57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe5c91608060a094015294011261073b578051906106ca8261054e565b6101a43582526101c43560208301526101e435908201526102043560608201526102243560ff8116810361073b576080820152906102443560ff8116810361073b57906102643560ff8116810361073b579061028435801515810361073b57906102a43560ff8116810361073b5790565b600080fd5b1561074757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c6564000000006044820152fd5b9294919593956040840151606085015160208401516020840151916040519363617f933d60e11b85527f02020202000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f175761085e91600091600092600091600093610f71575b5061083d61ffff91612d66565b1660ff8b16149283610f55575b5082610f3d575b5081610f23575b50610740565b6040840151602085015183518351916040519363617f933d60e11b85527f02010101000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f17576108e991600091600092600091600093610f71575061083d61ffff91612d66565b8351606085015183518351916040519363617f933d60e11b85527f01020101000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f175761097191600091600092600091600093610f71575061083d61ffff91612d66565b6040840151602085015160208401518351916040519363617f933d60e11b85527f02010201000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f17576109ff91600091600092600091600093610f71575061083d61ffff91612d66565b8351606085015160208401518351916040519363617f933d60e11b85527f01020201000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f1757610a8a91600091600092600091600093610f71575061083d61ffff91612d66565b6040840151606085015183518351916040519363617f933d60e11b85527f02020101000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f1757610b1591600091600092600091600093610f71575061083d61ffff91612d66565b6040840151606085015160208401518351916040519363617f933d60e11b85527f02020201000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f1757610ba391600091600092600091600093610f71575061083d61ffff91612d66565b6040840151602085015183516020840151916040519363617f933d60e11b85527f02010102000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f1757610c3191600091600092600091600093610f71575061083d61ffff91612d66565b8351606085015183516020840151916040519363617f933d60e11b85527f01020102000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f1757610cbc91600091600092600091600093610f71575061083d61ffff91612d66565b6040840151602085015160208401516020840151916040519363617f933d60e11b85527f02010202000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f1757610d4d91600091600092600091600093610f71575061083d61ffff91612d66565b8351606085015160208401516020840151916040519363617f933d60e11b85527f01020202000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f1757610ddb91600091600092600091600093610f71575061083d61ffff91612d66565b6020606060408601519501519251910151916040519463617f933d60e11b86527f02020102000000000000000000000000000000000000000000000000000000006004870152602486015260448501526064840152608483015260808260a481600060645af1918215610f1757610e8e95600095600096600093600096610ee4575b5061ffff610e6c60ff92612d66565b169116149586610ec6575b505084610eac575b505082610e90575b5050610740565b565b60ff919250610ea161ffff91612d66565b169116143880610e87565b610eb891929450612af5565b151590151514913880610e7f565b60ff91929650610ed861ffff91612d66565b16911614933880610e77565b61ffff9850610e6c965060ff9450610f0b915060803d60801161046b57610452818361056a565b91999197509450610e5d565b6040513d6000823e3d90fd5b61ffff9150610f3190612d66565b1660ff87161438610858565b610f48919250612af5565b1515851515149038610851565b61ffff919350610f6490612d66565b1660ff8b1614913861084a565b905061ffff935061083d9250610f96915060803d60801161046b57610452818361056a565b9194509092909190610830565b15610faa57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c6564000000006044820152fd5b929491959395608084015160a085015160408401516040840151916040519363617f933d60e11b85527f03030303000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f17576110c391600091600092600091600093612a96575b506110a263ffffffff91612e84565b1660ff8b16149283612a78575b5082612a60575b5081612a44575b50610fa3565b6080840151602085015183518351916040519363617f933d60e11b85527f03010101000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f175761115091600091600092600091600093612a9657506110a263ffffffff91612e84565b835160a085015183518351916040519363617f933d60e11b85527f01030101000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f17576111da91600091600092600091600093612a9657506110a263ffffffff91612e84565b6080840151602085015160408401518351916040519363617f933d60e11b85527f03010301000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f175761126a91600091600092600091600093612a9657506110a263ffffffff91612e84565b835160a085015160408401518351916040519363617f933d60e11b85527f01030301000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f17576112f791600091600092600091600093612a9657506110a263ffffffff91612e84565b608084015160a085015160408401518351916040519363617f933d60e11b85527f03030301000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f175761138791600091600092600091600093612a9657506110a263ffffffff91612e84565b6080840151602085015160208401518351916040519363617f933d60e11b85527f03010201000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f175761141791600091600092600091600093612a9657506110a263ffffffff91612e84565b835160a085015160208401518351916040519363617f933d60e11b85527f01030201000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f17576114a491600091600092600091600093612a9657506110a263ffffffff91612e84565b608084015160a085015183518351916040519363617f933d60e11b85527f03030101000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f175761153191600091600092600091600093612a9657506110a263ffffffff91612e84565b6080840151602085015183516020840151916040519363617f933d60e11b85527f03010102000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f17576115c191600091600092600091600093612a9657506110a263ffffffff91612e84565b835160a085015183516020840151916040519363617f933d60e11b85527f01030102000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f175761164e91600091600092600091600093612a9657506110a263ffffffff91612e84565b6080840151602085015160408401516020840151916040519363617f933d60e11b85527f03010302000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f17576116e191600091600092600091600093612a9657506110a263ffffffff91612e84565b835160a085015160408401516020840151916040519363617f933d60e11b85527f01030302000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f175761177191600091600092600091600093612a9657506110a263ffffffff91612e84565b6080840151602085015160208401516020840151916040519363617f933d60e11b85527f03010202000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f175761180491600091600092600091600093612a9657506110a263ffffffff91612e84565b835160a085015160208401516020840151916040519363617f933d60e11b85527f01030202000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f175761189491600091600092600091600093612a9657506110a263ffffffff91612e84565b608084015160a085015183516020840151916040519363617f933d60e11b85527f03030102000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f175761192491600091600092600091600093612a9657506110a263ffffffff91612e84565b6080840151602085015183516040840151916040519363617f933d60e11b85527f03010103000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f17576119b491600091600092600091600093612a9657506110a263ffffffff91612e84565b835160a085015183516040840151916040519363617f933d60e11b85527f01030103000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f1757611a4191600091600092600091600093612a9657506110a263ffffffff91612e84565b6080840151602085015160408401516040840151916040519363617f933d60e11b85527f03010303000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f1757611ad491600091600092600091600093612a9657506110a263ffffffff91612e84565b835160a085015160408401516040840151916040519363617f933d60e11b85527f01030303000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f1757611b6491600091600092600091600093612a9657506110a263ffffffff91612e84565b6080840151602085015160208401516040840151916040519363617f933d60e11b85527f03010203000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f1757611bf791600091600092600091600093612a9657506110a263ffffffff91612e84565b835160a085015160208401516040840151916040519363617f933d60e11b85527f01030203000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f1757611c8791600091600092600091600093612a9657506110a263ffffffff91612e84565b608084015160a085015183516040840151916040519363617f933d60e11b85527f03030103000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f1757611d1791600091600092600091600093612a9657506110a263ffffffff91612e84565b604084015160a085015183518351916040519363617f933d60e11b85527f02030101000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f1757611da491600091600092600091600093612a9657506110a263ffffffff91612e84565b6080840151606085015183518351916040519363617f933d60e11b85527f03020101000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f1757611e3191600091600092600091600093612a9657506110a263ffffffff91612e84565b604084015160a085015160208401518351916040519363617f933d60e11b85527f02030201000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f1757611ec191600091600092600091600093612a9657506110a263ffffffff91612e84565b6080840151606085015160208401518351916040519363617f933d60e11b85527f03020201000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f1757611f5191600091600092600091600093612a9657506110a263ffffffff91612e84565b604084015160a085015160408401518351916040519363617f933d60e11b85527f02030301000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f1757611fe191600091600092600091600093612a9657506110a263ffffffff91612e84565b6080840151606085015160408401518351916040519363617f933d60e11b85527f03020301000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f175761207191600091600092600091600093612a9657506110a263ffffffff91612e84565b608084015160a085015160208401518351916040519363617f933d60e11b85527f03030201000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f175761210191600091600092600091600093612a9657506110a263ffffffff91612e84565b604084015160a085015183516020840151916040519363617f933d60e11b85527f02030102000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f175761219191600091600092600091600093612a9657506110a263ffffffff91612e84565b6080840151606085015183516020840151916040519363617f933d60e11b85527f03020102000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f175761222191600091600092600091600093612a9657506110a263ffffffff91612e84565b604084015160a085015160208401516020840151916040519363617f933d60e11b85527f02030202000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f17576122b491600091600092600091600093612a9657506110a263ffffffff91612e84565b6080840151606085015160208401516020840151916040519363617f933d60e11b85527f03020202000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f175761234791600091600092600091600093612a9657506110a263ffffffff91612e84565b604084015160a085015160408401516020840151916040519363617f933d60e11b85527f02030302000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f17576123da91600091600092600091600093612a9657506110a263ffffffff91612e84565b6080840151606085015160408401516020840151916040519363617f933d60e11b85527f03020302000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f175761246d91600091600092600091600093612a9657506110a263ffffffff91612e84565b608084015160a085015160208401516020840151916040519363617f933d60e11b85527f03030202000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f175761250091600091600092600091600093612a9657506110a263ffffffff91612e84565b608084015160a085015160408401516020840151916040519363617f933d60e11b85527f03030302000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f175761259391600091600092600091600093612a9657506110a263ffffffff91612e84565b604084015160a085015183516040840151916040519363617f933d60e11b85527f02030103000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f175761262391600091600092600091600093612a9657506110a263ffffffff91612e84565b6080840151606085015183516040840151916040519363617f933d60e11b85527f03020103000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f17576126b391600091600092600091600093612a9657506110a263ffffffff91612e84565b604084015160a085015160208401516040840151916040519363617f933d60e11b85527f02030203000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f175761274691600091600092600091600093612a9657506110a263ffffffff91612e84565b6080840151606085015160208401516040840151916040519363617f933d60e11b85527f03020203000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f17576127d991600091600092600091600093612a9657506110a263ffffffff91612e84565b604084015160a085015160408401516040840151916040519363617f933d60e11b85527f02030303000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f175761286c91600091600092600091600093612a9657506110a263ffffffff91612e84565b6080840151606085015160408401516040840151916040519363617f933d60e11b85527f03020303000000000000000000000000000000000000000000000000000000006004860152602485015260448401526064830152608482015260808160a481600060645af1908115610f17576128ff91600091600092600091600093612a9657506110a263ffffffff91612e84565b6040602060a06080870151960151930151910151916040519463617f933d60e11b86527f03030203000000000000000000000000000000000000000000000000000000006004870152602486015260448501526064840152608483015260808260a481600060645af1918215610f1757610e8e95600095600096600093600096612a0f575b5063ffffffff61299560ff92612e84565b1691161495866129ef575b5050846129d5575b5050826129b7575b5050610fa3565b60ff9192506129ca63ffffffff91612e84565b1691161438806129b0565b6129e191929450612af5565b1515901515149138806129a8565b60ff91929650612a0363ffffffff91612e84565b169116149338806129a0565b63ffffffff9850612995965060ff9450612a38915060803d60801161046b57610452818361056a565b91999197509450612984565b63ffffffff9150612a5490612e84565b1660ff871614386110bd565b612a6b919250612af5565b15158515151490386110b6565b63ffffffff919350612a8990612e84565b1660ff8b161491386110af565b905063ffffffff93506110a29250612abd915060803d60801161046b57610452818361056a565b9194509092909190611093565b60405190612ad78261054e565b60006080838281528260208201528260408201528260608201520152565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260009182600483015260248201526020816044818560645af1918215612b7d578092612b49575b5050151590565b9091506020823d8211612b75575b81612b646020938361056a565b810103126100705750513880612b42565b3d9150612b57565b604051903d90823e3d90fd5b60ff604051917fd9b60b600000000000000000000000000000000000000000000000000000000083527f01000000000000000000000000000000000000000000000000000000000000006004840152166024820152602081604481600060645af1908115610f1757600091612bfc575090565b906020823d8211612c22575b81612c156020938361056a565b8101031261007057505190565b3d9150612c08565b604051907f0cfed5610000000000000000000000000000000000000000000000000000000082527f010000000000000000000000000000000000000000000000000000000000000060048301526024820152602081604481600060645af18015610f1757600090612c9e575b60ff91501690565b6020823d8211612cc8575b81612cb66020938361056a565b81010312610070575060ff9051612c96565b3d9150612ca9565b919082608091031261073b578151916020810151916060604083015192015190565b61ffff604051917fd9b60b600000000000000000000000000000000000000000000000000000000083527f02000000000000000000000000000000000000000000000000000000000000006004840152166024820152602081604481600060645af1908115610f1757600091612bfc575090565b604051907f0cfed5610000000000000000000000000000000000000000000000000000000082527f020000000000000000000000000000000000000000000000000000000000000060048301526024820152602081604481600060645af18015610f1757600090612ddb575b61ffff91501690565b6020823d8211612e06575b81612df36020938361056a565b81010312610070575061ffff9051612dd2565b3d9150612de6565b63ffffffff604051917fd9b60b600000000000000000000000000000000000000000000000000000000083527f03000000000000000000000000000000000000000000000000000000000000006004840152166024820152602081604481600060645af1908115610f1757600091612bfc575090565b604051907f0cfed5610000000000000000000000000000000000000000000000000000000082527f030000000000000000000000000000000000000000000000000000000000000060048301526024820152602081604481600060645af18015610f1757600090612efb575b63ffffffff91501690565b6020823d8211612f28575b81612f136020938361056a565b81010312610070575063ffffffff9051612ef0565b3d9150612f06565b67ffffffffffffffff604051917fd9b60b600000000000000000000000000000000000000000000000000000000083527f04000000000000000000000000000000000000000000000000000000000000006004840152166024820152602081604481600060645af1908115610f1757600091612bfc57509056fea164736f6c6343000814000a";
383
383
 
384
384
  type TransferWithAllowanceTestsContractConstructorParams =
385
385
  | [signer?: Signer]
@@ -135,7 +135,7 @@ const _abi = [
135
135
  ] as const;
136
136
 
137
137
  const _bytecode =
138
- "0x608060405234801561001057600080fd5b506107d9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80637cec31671461003b5780639472a02f14610060575b600080fd5b61004e6100493660046104dc565b610073565b60405190815260200160405180910390f35b61004e61006e366004610540565b610173565b60008061008761008285610624565b61024d565b9050600061009761008285610624565b90503373ffffffffffffffffffffffffffffffffffffffff167f86b9e54279ae959fbb5485c1a43102ceeb10c3712961eb6de7eef4fe4e12fbc960405161010f906020808252600e908201527f76616c6964617465416e64416464000000000000000000000000000000000000604082015260600190565b60405180910390a2600061012383836102ff565b9050600061013182336103c5565b60405181815290915033907fd73a9e0671758b5fc976ed98254a2ef4ce7b2d203e813d04b2bf96d9fd5c9ca89060200160405180910390a29695505050505050565b60008061018261008284610624565b90503373ffffffffffffffffffffffffffffffffffffffff167f86b9e54279ae959fbb5485c1a43102ceeb10c3712961eb6de7eef4fe4e12fbc96040516101fa9060208082526011908201527f76616c6964617465416e6452657475726e000000000000000000000000000000604082015260600190565b60405180910390a2600061020e82336103c5565b60405181815290915033907fd73a9e0671758b5fc976ed98254a2ef4ce7b2d203e813d04b2bf96d9fd5c9ca89060200160405180910390a29392505050565b805160208201516040517fe4f36e1000000000000000000000000000000000000000000000000000000000815260009260649263e4f36e10926102b6927f0500000000000000000000000000000000000000000000000000000000000000929091600401610716565b6020604051808303816000875af11580156102d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f991906107b3565b92915050565b60006064638c5d015061031460058085610467565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101869052604481018590526064015b6020604051808303816000875af115801561039a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103be91906107b3565b9392505050565b60408051606083901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208201528151601481830301815260348201928390527f3c6f0e6800000000000000000000000000000000000000000000000000000000909252600091606491633c6f0e689161037b917f0500000000000000000000000000000000000000000000000000000000000000918891603801610716565b600081600281111561047b5761047b6106e7565b60ff166008846006811115610492576104926106e7565b61ffff16901b61ffff1660108660068111156104b0576104b06106e7565b62ffffff16901b171760e81b949350505050565b6000604082840312156104d657600080fd5b50919050565b600080604083850312156104ef57600080fd5b823567ffffffffffffffff8082111561050757600080fd5b610513868387016104c4565b9350602085013591508082111561052957600080fd5b50610536858286016104c4565b9150509250929050565b60006020828403121561055257600080fd5b813567ffffffffffffffff81111561056957600080fd5b610575848285016104c4565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156105cf576105cf61057d565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561061c5761061c61057d565b604052919050565b60006040823603121561063657600080fd5b61063e6105ac565b8235815260208084013567ffffffffffffffff8082111561065e57600080fd5b9085019036601f83011261067157600080fd5b8135818111156106835761068361057d565b6106b3847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016105d5565b915080825236848285010111156106c957600080fd5b80848401858401376000908201840152918301919091525092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7fff000000000000000000000000000000000000000000000000000000000000008416815260006020848184015260606040840152835180606085015260005b8181101561077257858101830151858201608001528201610756565b5060006080828601015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010192505050949350505050565b6000602082840312156107c557600080fd5b505191905056fea164736f6c6343000813000a";
138
+ "0x6080806040523461001657610614908161001c8239f35b600080fdfe6040608081526004908136101561001557600080fd5b6000803560e01c80637cec31671461013457639472a02f1461003657600080fd5b3461012d577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc9060208236011261012d5783359167ffffffffffffffff8311610130578390833603011261012d575061009f61009a6020946100fc9336910161033c565b610481565b82518481526011858201527f76616c6964617465416e6452657475726e000000000000000000000000000000848201527f86b9e54279ae959fbb5485c1a43102ceeb10c3712961eb6de7eef4fe4e12fbc960603392a23390610516565b9080518281527fd73a9e0671758b5fc976ed98254a2ef4ce7b2d203e813d04b2bf96d9fd5c9ca8843392a251908152f35b80fd5b5080fd5b5091346102c8577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc92828436011261012d57813567ffffffffffffffff948582116102c857848183360301126102c8576024359586116102c857849086360301126101305761009a6101af61009a6101b9933690870161033c565b953690850161033c565b835194602095868152600e878201527f76616c6964617465416e64416464000000000000000000000000000000000000868201527f86b9e54279ae959fbb5485c1a43102ceeb10c3712961eb6de7eef4fe4e12fbc960603392a27f05050000000000000000000000000000000000000000000000000000000000008551947f8c5d015000000000000000000000000000000000000000000000000000000000865285015260248401526044830152838260648184825af19081156102bd57809161028b575b506100fc91503390610516565b90508382813d83116102b6575b6102a281836102cc565b8101031261012d57506100fc90513861027e565b503d610298565b8351903d90823e3d90fd5b8280fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761030d57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b91906040838203126103e7576040805167ffffffffffffffff949181018581118282101761030d5760405280948235825260209283810135908282116103e7570184601f820112156103e757803591821161030d57604051946103c6857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601876102cc565b8286528483830101116103e757816000928580930183880137850101520152565b600080fd5b909291927f05000000000000000000000000000000000000000000000000000000000000008252602090818301526060604083015283519384606084015260005b85811061046d575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006080809697860101520116010190565b81810183015184820160800152820161042d565b60206104c2918181519101519060405193849283927fe4f36e10000000000000000000000000000000000000000000000000000000008452600484016103ec565b0381600060645af190811561050a576000916104dc575090565b906020823d8211610502575b816104f5602093836102cc565b8101031261012d57505190565b3d91506104e8565b6040513d6000823e3d90fd5b907fffffffffffffffffffffffffffffffffffffffff0000000000000000000000006040519160601b16602082015260148152604081019181831067ffffffffffffffff84111761030d57827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0836105bb81602095856040527f3c6f0e68000000000000000000000000000000000000000000000000000000008652604482016103ec565b030181600060645af190811561050a576000916105d9575b50905090565b602090813d8111610600575b6105ef81866102cc565b8101031261012d57505180386105d3565b503d6105e556fea164736f6c6343000814000a";
139
139
 
140
140
  type ValidateCiphertext128TestsContractConstructorParams =
141
141
  | [signer?: Signer]
@@ -155,7 +155,7 @@ const _abi = [
155
155
  ] as const;
156
156
 
157
157
  const _bytecode =
158
- "0x608060405234801561001057600080fd5b5061078b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80637c0c3e5b116100505780637c0c3e5b146100c1578063f9ffef0e146100d4578063ff0890a6146100e757600080fd5b80630d336a211461006c5780635f8ad01514610083575b600080fd5b6000545b6040519081526020015b60405180910390f35b60408051808201825260008082526020918201528151808301835260025480825260035491830191825283519081529051918101919091520161007a565b6100706100cf366004610561565b6100fd565b6100706100e2366004610561565b610162565b60015460ff16604051901515815260200161007a565b600080610109836101a1565b90506101148161025a565b805160025560200151600355600061012b8261032e565b6000819055600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681179055949350505050565b60008061016e836101a1565b9050600061017c6001610388565b9050600061018a8383610398565b905060006101978261032e565b9695505050505050565b80518051602091820151918301516040517f0135e466000000000000000000000000000000000000000000000000000000008152600093606493630135e46693610211937f060000000000000000000000000000000000000000000000000000000000000093919060040161069d565b6020604051808303816000875af1158015610230573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102549190610741565b92915050565b60408051808201825260008082526020820181905291517f1f4491de0000000000000000000000000000000000000000000000000000000081527f06000000000000000000000000000000000000000000000000000000000000006004820152602481018490529091908190606490631f4491de9060440160408051808303816000875af11580156102f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610314919061075a565b604080518082019091529182526020820152949350505050565b60006064630cfed56160065b60f81b846040518363ffffffff1660e01b81526004016102119291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6000606463d9b60b60600661033a565b60006064638c5d01506103ad6006808561045d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101869052604481018590526064016020604051808303816000875af1158015610432573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104569190610741565b9392505050565b60008160028111156104715761047161066e565b60ff1660088460068111156104885761048861066e565b61ffff16901b61ffff1660108660068111156104a6576104a661066e565b62ffffff16901b171760e81b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561050c5761050c6104ba565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610559576105596104ba565b604052919050565b6000602080838503121561057457600080fd5b823567ffffffffffffffff8082111561058c57600080fd5b9084019081860360608112156105a157600080fd5b6105a96104e9565b60408212156105b757600080fd5b6105bf6104e9565b843581528585013586820152815260408401359150828211156105e157600080fd5b818401935087601f8501126105f557600080fd5b8335915082821115610609576106096104ba565b610639857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011601610512565b9250818352878583860101111561064f57600080fd5b8185850186850137600091830185019190915292830152509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7fff000000000000000000000000000000000000000000000000000000000000008516815260006020858184015284604084015260806060840152835180608085015260005b818110156106ff5785810183015185820160a0015282016106e3565b50600060a0828601015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505095945050505050565b60006020828403121561075357600080fd5b5051919050565b6000806040838503121561076d57600080fd5b50508051602090910151909290915056fea164736f6c6343000813000a";
158
+ "0x6080806040523461001657610750908161001c8239f35b600080fdfe60806040818152600436101561001457600080fd5b600091823560e01c9081630d336a21146103b5575080635f8ad0151461034a5780637c0c3e5b14610219578063f9ffef0e1461009d5763ff0890a61461005957600080fd5b3461009957817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100995760209060ff6001541690519015158152f35b5080fd5b5034610099576100b46100af36610479565b61057e565b8151927fd9b60b600000000000000000000000000000000000000000000000000000000084527f060000000000000000000000000000000000000000000000000000000000000060048501526001602485015260209384816044818560645af190811561020f5782916101e2575b508351927f8c5d01500000000000000000000000000000000000000000000000000000000084527f0606000000000000000000000000000000000000000000000000000000000000600485015260248401526044830152838260648184825af19081156101d75780916101a2575b5061019b91506106a5565b9051908152f35b90508382813d83116101d0575b6101b98183610438565b810103126101cd575061019b905138610190565b80fd5b503d6101af565b8351903d90823e3d90fd5b90508481813d8311610208575b6101f98183610438565b81010312610099575138610122565b503d6101ef565b84513d84823e3d90fd5b5090346101cd5761022c6100af36610479565b91816020825161023b816103ed565b828152015280517f1f4491de0000000000000000000000000000000000000000000000000000000081527f0600000000000000000000000000000000000000000000000000000000000000600482015283602482015281816044818660645af190811561033e5783908492610304575b5093816020956102d1938786516102c1816103ed565b83815201526002556003556106a5565b80925560017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008154161760015551908152f35b809250838092503d8311610337575b61031d8183610438565b81010312610333578051602091820151916102ab565b8280fd5b503d610313565b505051903d90823e3d90fd5b5090346101cd57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101cd5760208251610387816103ed565b82815201528051610397816103ed565b60025490818152602060035491019081528251918252516020820152f35b83903461009957817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009957602091548152f35b6040810190811067ffffffffffffffff82111761040957604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761040957604052565b6020907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc918083830112610579576004359267ffffffffffffffff90818511610579578484030193606085126105795760408051956104d7876103ed565b12610579576040516104e8816103ed565b8160040135815260248201358482015285526044810135908282116105795701836023820112156105795760048101359182116104095760405193610554847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160186610438565b8285526024838301011161057957816000926024859301838701378401015282015290565b600080fd5b80518051906020918280809301519401516040519485927f0135e4660000000000000000000000000000000000000000000000000000000084527f06000000000000000000000000000000000000000000000000000000000000006004850152602484015260448301526080606483015280519081608484015260005b82811061068d575050817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83600060a480968601015201168101030181600060645af190811561068157600091610655575b50905090565b82813d831161067a575b6106698183610438565b810103126101cd575051803861064f565b503d61065f565b6040513d6000823e3d90fd5b81810185015187820160a401528594879450016105fb565b604051907f0cfed5610000000000000000000000000000000000000000000000000000000082527f060000000000000000000000000000000000000000000000000000000000000060048301526024820152602081604481600060645af190811561068157600091610715575090565b906020823d821161073b575b8161072e60209383610438565b810103126101cd57505190565b3d915061072156fea164736f6c6343000814000a";
159
159
 
160
160
  type ValidateCiphertext256TestsContractConstructorParams =
161
161
  | [signer?: Signer]
@@ -205,7 +205,7 @@ const _abi = [
205
205
  ] as const;
206
206
 
207
207
  const _bytecode =
208
- "0x608060405234801561001057600080fd5b5061098a806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639472a02f116100505780639472a02f146100ba578063c849026f146100cd578063ff0890a6146100e057600080fd5b80630d336a21146100775780635f8ad015146100955780637cec3167146100a7575b600080fd5b60005460ff165b60405160ff90911681526020015b60405180910390f35b6001545b60405190815260200161008c565b6100996100b536600461068d565b6100fb565b6100996100c83660046106f1565b6101fb565b61007e6100db3660046106f1565b6102d6565b600054610100900460ff16604051901515815260200161008c565b60008061010f61010a856107d5565b610394565b9050600061011f61010a856107d5565b90503373ffffffffffffffffffffffffffffffffffffffff167f86b9e54279ae959fbb5485c1a43102ceeb10c3712961eb6de7eef4fe4e12fbc9604051610197906020808252600e908201527f76616c6964617465416e64416464000000000000000000000000000000000000604082015260600190565b60405180910390a260006101ab8383610446565b905060006101b9823361050c565b60405181815290915033907fbcf87026c8d6901e63ff4319c81a91288cc9d7c1f80f57d621fdaee0c3427d089060200160405180910390a29695505050505050565b60008061020a61010a846107d5565b90503373ffffffffffffffffffffffffffffffffffffffff167f86b9e54279ae959fbb5485c1a43102ceeb10c3712961eb6de7eef4fe4e12fbc96040516102829060208082526011908201527f76616c6964617465416e6452657475726e000000000000000000000000000000604082015260600190565b60405180910390a26000610296823361050c565b60405181815290915033907fbcf87026c8d6901e63ff4319c81a91288cc9d7c1f80f57d621fdaee0c3427d08906020015b60405180910390a29392505050565b6000806102e561010a846107d5565b90506102f0816105ae565b60015560006102fe82610608565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001660ff83161761010017905560405190915033907f86b9e54279ae959fbb5485c1a43102ceeb10c3712961eb6de7eef4fe4e12fbc9906102c79060208082526010908201527f76616c6964617465416e6453746f726500000000000000000000000000000000604082015260600190565b805160208201516040517fe4f36e1000000000000000000000000000000000000000000000000000000000815260009260649263e4f36e10926103fd927f01000000000000000000000000000000000000000000000000000000000000009290916004016108c7565b6020604051808303816000875af115801561041c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104409190610964565b92915050565b60006064638c5d015061045b60018085610618565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101869052604481018590526064015b6020604051808303816000875af11580156104e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105059190610964565b9392505050565b60408051606083901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208201528151601481830301815260348201928390527f3c6f0e6800000000000000000000000000000000000000000000000000000000909252600091606491633c6f0e68916104c2917f01000000000000000000000000000000000000000000000000000000000000009188916038016108c7565b6000606463c50c9c0260015b60f81b846040518363ffffffff1660e01b81526004016103fd9291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b60006064630cfed56160016105ba565b600081600281111561062c5761062c610898565b60ff16600884600681111561064357610643610898565b61ffff16901b61ffff16601086600681111561066157610661610898565b62ffffff16901b171760e81b949350505050565b60006040828403121561068757600080fd5b50919050565b600080604083850312156106a057600080fd5b823567ffffffffffffffff808211156106b857600080fd5b6106c486838701610675565b935060208501359150808211156106da57600080fd5b506106e785828601610675565b9150509250929050565b60006020828403121561070357600080fd5b813567ffffffffffffffff81111561071a57600080fd5b61072684828501610675565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156107805761078061072e565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107cd576107cd61072e565b604052919050565b6000604082360312156107e757600080fd5b6107ef61075d565b8235815260208084013567ffffffffffffffff8082111561080f57600080fd5b9085019036601f83011261082257600080fd5b8135818111156108345761083461072e565b610864847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610786565b9150808252368482850101111561087a57600080fd5b80848401858401376000908201840152918301919091525092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7fff000000000000000000000000000000000000000000000000000000000000008416815260006020848184015260606040840152835180606085015260005b8181101561092357858101830151858201608001528201610907565b5060006080828601015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010192505050949350505050565b60006020828403121561097657600080fd5b505191905056fea164736f6c6343000813000a";
208
+ "0x60808060405234610016576108dd908161001c8239f35b600080fdfe608060408181526004918236101561001657600080fd5b600092833560e01c9182630d336a211461050a575081635f8ad015146104cd5781637cec3167146103365781639472a02f1461028b578163c849026f146100ac575063ff0890a61461006757600080fd5b346100a857817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100a85760ff6020925460081c1690519015158152f35b5080fd5b8383346100a8576100cd6100c8366100c336610545565b61060a565b61074a565b928151937fc50c9c020000000000000000000000000000000000000000000000000000000085527f0100000000000000000000000000000000000000000000000000000000000000808387015281602487015260209586816044818960645af1908115610281578691610250575b506001558351927f0cfed561000000000000000000000000000000000000000000000000000000008452830152602482015283816044818660645af18015610244578390610212575b60ff91501691610100837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008354161717905580518381526010848201527f76616c6964617465416e6453746f726500000000000000000000000000000000828201527f86b9e54279ae959fbb5485c1a43102ceeb10c3712961eb6de7eef4fe4e12fbc960603392a251908152f35b508381813d831161023d575b610228818361059a565b810103126102395760ff9051610184565b8280fd5b503d61021e565b505051903d90823e3d90fd5b90508681813d831161027a575b610267818361059a565b8101031261027657518761013b565b8580fd5b503d61025d565b85513d88823e3d90fd5b5050346100a8576020906103056102a86100c8366100c336610545565b82518481526011858201527f76616c6964617465416e6452657475726e000000000000000000000000000000848201527f86b9e54279ae959fbb5485c1a43102ceeb10c3712961eb6de7eef4fe4e12fbc960603392a233906107df565b9080518281527fbcf87026c8d6901e63ff4319c81a91288cc9d7c1f80f57d621fdaee0c3427d08843392a251908152f35b905034610239577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc9282843601126104b857813567ffffffffffffffff9485821161023957848183360301126102395760243595861161023957849086360301126100a8576100c86103b16100c86103bb933690870161060a565b953690850161060a565b835194602095868152600e878201527f76616c6964617465416e64416464000000000000000000000000000000000000868201527f86b9e54279ae959fbb5485c1a43102ceeb10c3712961eb6de7eef4fe4e12fbc960603392a27f01010000000000000000000000000000000000000000000000000000000000008551947f8c5d015000000000000000000000000000000000000000000000000000000000865285015260248401526044830152838260648184825af19081156104c257809161048d575b50610305915033906107df565b90508382813d83116104bb575b6104a4818361059a565b810103126104b85750610305905138610480565b80fd5b503d61049a565b8351903d90823e3d90fd5b5050346100a857817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100a8576020906001549051908152f35b8490346100a857817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100a85760ff60209254168152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc90602082820112610595576004359167ffffffffffffffff831161059557826040920301126105955760040190565b600080fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176105db57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b9190604083820312610595576040805167ffffffffffffffff94918101858111828210176105db576040528094823582526020928381013590828211610595570184601f820112156105955780359182116105db5760405194610694857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f860116018761059a565b82865284838301011161059557816000928580930183880137850101520152565b909291927f01000000000000000000000000000000000000000000000000000000000000008252602090818301526060604083015283519384606084015260005b858110610736575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006080809697860101520116010190565b8181018301518482016080015282016106f6565b602061078b918181519101519060405193849283927fe4f36e10000000000000000000000000000000000000000000000000000000008452600484016106b5565b0381600060645af19081156107d3576000916107a5575090565b906020823d82116107cb575b816107be6020938361059a565b810103126104b857505190565b3d91506107b1565b6040513d6000823e3d90fd5b907fffffffffffffffffffffffffffffffffffffffff0000000000000000000000006040519160601b16602082015260148152604081019181831067ffffffffffffffff8411176105db57827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08361088481602095856040527f3c6f0e68000000000000000000000000000000000000000000000000000000008652604482016106b5565b030181600060645af19081156107d3576000916108a2575b50905090565b602090813d81116108c9575b6108b8818661059a565b810103126104b8575051803861089c565b503d6108ae56fea164736f6c6343000814000a";
209
209
 
210
210
  type ValidateCiphertextTestsContractConstructorParams =
211
211
  | [signer?: Signer]