@tradetrust-yl/token-registry 5.1.2 → 5.1.3

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 (255) hide show
  1. package/dist/app.js +566 -0
  2. package/dist/artifacts/TitleEscrow.sol/TitleEscrow.json +83 -9
  3. package/dist/artifacts/TitleEscrowFactory.sol/TitleEscrowFactory.json +22 -3
  4. package/dist/artifacts/TradeTrustToken.sol/TradeTrustToken.json +125 -2
  5. package/dist/artifacts/base/RegistryAccess.sol/RegistryAccess.dbg.json +1 -1
  6. package/dist/artifacts/base/SBTUpgradeable.sol/SBTUpgradeable.dbg.json +1 -1
  7. package/dist/artifacts/base/SBTUpgradeable.sol/SBTUpgradeable.json +2 -2
  8. package/dist/artifacts/base/TradeTrustSBT.sol/TradeTrustSBT.dbg.json +1 -1
  9. package/dist/artifacts/base/TradeTrustSBT.sol/TradeTrustSBT.json +43 -0
  10. package/dist/artifacts/base/TradeTrustTokenBase.sol/TradeTrustTokenBase.dbg.json +1 -1
  11. package/dist/artifacts/base/TradeTrustTokenBase.sol/TradeTrustTokenBase.json +86 -0
  12. package/dist/artifacts/base/TradeTrustTokenBaseURI.sol/TradeTrustTokenBaseURI.dbg.json +1 -1
  13. package/dist/artifacts/base/TradeTrustTokenBaseURI.sol/TradeTrustTokenBaseURI.json +43 -0
  14. package/dist/artifacts/base/TradeTrustTokenBurnable.sol/TradeTrustTokenBurnable.dbg.json +1 -1
  15. package/dist/artifacts/base/TradeTrustTokenBurnable.sol/TradeTrustTokenBurnable.json +43 -0
  16. package/dist/artifacts/base/TradeTrustTokenMintable.sol/TradeTrustTokenMintable.dbg.json +1 -1
  17. package/dist/artifacts/base/TradeTrustTokenMintable.sol/TradeTrustTokenMintable.json +86 -0
  18. package/dist/artifacts/base/TradeTrustTokenRestorable.sol/TradeTrustTokenRestorable.dbg.json +1 -1
  19. package/dist/artifacts/base/TradeTrustTokenRestorable.sol/TradeTrustTokenRestorable.json +43 -0
  20. package/dist/artifacts/interfaces/IERC721MetadataUpgradeable.sol/IERC721MetadataUpgradeable.dbg.json +1 -1
  21. package/dist/artifacts/interfaces/ISBTUpgradeable.sol/ISBTUpgradeable.dbg.json +1 -1
  22. package/dist/artifacts/interfaces/ITitleEscrow.sol/ITitleEscrow.dbg.json +1 -1
  23. package/dist/artifacts/interfaces/ITitleEscrow.sol/ITitleEscrow.json +42 -6
  24. package/dist/artifacts/interfaces/ITitleEscrowFactory.sol/ITitleEscrowFactory.dbg.json +1 -1
  25. package/dist/artifacts/interfaces/ITitleEscrowSignable.sol/ITitleEscrowSignable.dbg.json +1 -1
  26. package/dist/artifacts/interfaces/ITitleEscrowSignable.sol/ITitleEscrowSignable.json +42 -6
  27. package/dist/artifacts/interfaces/ITradeTrustSBT.sol/ITradeTrustSBT.dbg.json +1 -1
  28. package/dist/artifacts/interfaces/ITradeTrustToken.sol/ITradeTrustToken.dbg.json +1 -1
  29. package/dist/artifacts/interfaces/ITradeTrustToken.sol/ITradeTrustToken.json +18 -0
  30. package/dist/artifacts/interfaces/ITradeTrustTokenBurnable.sol/ITradeTrustTokenBurnable.dbg.json +1 -1
  31. package/dist/artifacts/interfaces/ITradeTrustTokenMintable.sol/ITradeTrustTokenMintable.dbg.json +1 -1
  32. package/dist/artifacts/interfaces/ITradeTrustTokenMintable.sol/ITradeTrustTokenMintable.json +18 -0
  33. package/dist/artifacts/interfaces/ITradeTrustTokenRestorable.sol/ITradeTrustTokenRestorable.dbg.json +1 -1
  34. package/dist/artifacts/interfaces/RegistryAccessErrors.sol/RegistryAccessErrors.dbg.json +1 -1
  35. package/dist/artifacts/interfaces/SigHelperErrors.sol/SigHelperErrors.dbg.json +1 -1
  36. package/dist/artifacts/interfaces/TDocDeployerErrors.sol/TDocDeployerErrors.dbg.json +1 -1
  37. package/dist/artifacts/interfaces/TitleEscrowErrors.sol/TitleEscrowErrors.dbg.json +1 -1
  38. package/dist/artifacts/interfaces/TitleEscrowFactoryErrors.sol/TitleEscrowFactoryErrors.dbg.json +1 -1
  39. package/dist/artifacts/interfaces/TitleEscrowSignableErrors.sol/TitleEscrowSignableErrors.dbg.json +1 -1
  40. package/dist/artifacts/interfaces/TradeTrustTokenErrors.sol/TradeTrustTokenErrors.dbg.json +1 -1
  41. package/dist/artifacts/interfaces/TradeTrustTokenErrors.sol/TradeTrustTokenErrors.json +5 -0
  42. package/dist/artifacts/mocks/ERC721ReceiverMock.sol/ERC721ReceiverMock.dbg.json +1 -1
  43. package/dist/artifacts/mocks/ERC721ReceiverMock.sol/ERC721ReceiverMock.json +2 -2
  44. package/dist/artifacts/mocks/SBTUpgradeableMock.sol/SBTUpgradeableMock.dbg.json +1 -1
  45. package/dist/artifacts/mocks/SBTUpgradeableMock.sol/SBTUpgradeableMock.json +2 -2
  46. package/dist/artifacts/mocks/SigHelperMock.sol/SigHelperMock.dbg.json +1 -1
  47. package/dist/artifacts/mocks/SimpleCaller.sol/SimpleCaller.dbg.json +1 -1
  48. package/dist/artifacts/mocks/TitleEscrowFactoryCallerMock.sol/TitleEscrowFactoryCallerMock.dbg.json +1 -1
  49. package/dist/artifacts/mocks/TitleEscrowFactoryGetterMock.sol/TitleEscrowFactoryGetterMock.dbg.json +1 -1
  50. package/dist/artifacts/mocks/TitleEscrowMock.sol/TitleEscrowMock.dbg.json +1 -1
  51. package/dist/artifacts/mocks/TitleEscrowMock.sol/TitleEscrowMock.json +83 -9
  52. package/dist/artifacts/mocks/TradeTrustTokenMock.sol/TradeTrustTokenMock.dbg.json +1 -1
  53. package/dist/artifacts/mocks/TradeTrustTokenMock.sol/TradeTrustTokenMock.json +125 -2
  54. package/dist/artifacts/presets/TitleEscrowSignable.sol/TitleEscrowSignable.dbg.json +1 -1
  55. package/dist/artifacts/presets/TitleEscrowSignable.sol/TitleEscrowSignable.json +87 -8
  56. package/dist/artifacts/presets/TradeTrustTokenStandard.sol/TradeTrustTokenStandard.dbg.json +1 -1
  57. package/dist/artifacts/presets/TradeTrustTokenStandard.sol/TradeTrustTokenStandard.json +88 -2
  58. package/dist/artifacts/utils/SigHelper.sol/SigHelper.dbg.json +1 -1
  59. package/dist/artifacts/utils/TDocDeployer.sol/TDocDeployer.dbg.json +1 -1
  60. package/dist/artifacts/utils/TDocDeployer.sol/TDocDeployer.json +2 -2
  61. package/dist/constants/default-address.js +5 -3
  62. package/dist/constants/role-hash.js +5 -3
  63. package/dist/contracts/@openzeppelin/contracts/index.ts +2 -0
  64. package/dist/contracts/@openzeppelin/contracts/metatx/ERC2771Context.js +5 -0
  65. package/dist/contracts/@openzeppelin/contracts/metatx/ERC2771Context.ts +111 -0
  66. package/dist/contracts/@openzeppelin/contracts/metatx/index.js +5 -0
  67. package/dist/contracts/@openzeppelin/contracts/{proxy/utils → metatx}/index.ts +1 -1
  68. package/dist/contracts/@openzeppelin/contracts/proxy/Clones.js +5 -0
  69. package/dist/contracts/@openzeppelin/contracts/proxy/Clones.ts +70 -0
  70. package/dist/contracts/@openzeppelin/contracts/proxy/index.ts +1 -2
  71. package/dist/contracts/@openzeppelin/contracts/utils/Create2.js +5 -0
  72. package/dist/contracts/@openzeppelin/contracts/utils/Create2.ts +70 -0
  73. package/dist/contracts/@openzeppelin/contracts/utils/index.ts +1 -0
  74. package/dist/contracts/@openzeppelin/contracts-upgradeable/index.ts +2 -0
  75. package/dist/contracts/@openzeppelin/{contracts/proxy/utils/Initializable.ts → contracts-upgradeable/metatx/ERC2771ContextUpgradeable.ts} +46 -5
  76. package/dist/contracts/@openzeppelin/contracts-upgradeable/metatx/index.ts +5 -0
  77. package/dist/contracts/contracts/TitleEscrow.ts +62 -12
  78. package/dist/contracts/contracts/TitleEscrowFactory.ts +18 -1
  79. package/dist/contracts/contracts/TradeTrustToken.js +2 -1
  80. package/dist/contracts/contracts/TradeTrustToken.ts +120 -0
  81. package/dist/contracts/contracts/base/TradeTrustSBT.ts +29 -0
  82. package/dist/contracts/contracts/base/TradeTrustTokenBase.js +2 -1
  83. package/dist/contracts/contracts/base/TradeTrustTokenBase.ts +88 -0
  84. package/dist/contracts/contracts/base/TradeTrustTokenBaseURI.ts +29 -0
  85. package/dist/contracts/contracts/base/TradeTrustTokenBurnable.ts +29 -0
  86. package/dist/contracts/contracts/base/TradeTrustTokenMintable.js +2 -1
  87. package/dist/contracts/contracts/base/TradeTrustTokenMintable.ts +88 -0
  88. package/dist/contracts/contracts/base/TradeTrustTokenRestorable.ts +29 -0
  89. package/dist/contracts/contracts/interfaces/ITitleEscrow.ts +30 -12
  90. package/dist/contracts/contracts/interfaces/ITitleEscrowSignable.ts +30 -12
  91. package/dist/contracts/contracts/interfaces/ITradeTrustToken.ts +22 -0
  92. package/dist/contracts/contracts/interfaces/ITradeTrustTokenMintable.ts +22 -1
  93. package/dist/contracts/contracts/mocks/TitleEscrowMock.ts +62 -12
  94. package/dist/contracts/contracts/mocks/TradeTrustTokenMock.js +2 -1
  95. package/dist/contracts/contracts/mocks/TradeTrustTokenMock.ts +120 -0
  96. package/dist/contracts/contracts/presets/TitleEscrowSignable.ts +62 -12
  97. package/dist/contracts/contracts/presets/TradeTrustTokenStandard.js +2 -1
  98. package/dist/contracts/contracts/presets/TradeTrustTokenStandard.ts +88 -0
  99. package/dist/contracts/factories/@openzeppelin/contracts/access/IAccessControl__factory.js +3 -1
  100. package/dist/contracts/factories/@openzeppelin/contracts/index.js +4 -3
  101. package/dist/contracts/factories/@openzeppelin/contracts/index.ts +1 -0
  102. package/dist/contracts/factories/@openzeppelin/contracts/interfaces/IERC1967__factory.js +3 -1
  103. package/dist/contracts/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable__factory.js +3 -1
  104. package/dist/contracts/factories/@openzeppelin/contracts/interfaces/index.js +1 -2
  105. package/dist/contracts/factories/@openzeppelin/contracts/metatx/ERC2771Context__factory.js +45 -0
  106. package/dist/contracts/factories/@openzeppelin/contracts/metatx/ERC2771Context__factory.ts +58 -0
  107. package/dist/contracts/factories/@openzeppelin/contracts/metatx/index.js +12 -0
  108. package/dist/contracts/factories/@openzeppelin/contracts/{proxy/utils → metatx}/index.ts +1 -1
  109. package/dist/contracts/factories/@openzeppelin/contracts/proxy/Clones__factory.js +44 -0
  110. package/dist/contracts/factories/@openzeppelin/contracts/proxy/Clones__factory.ts +70 -0
  111. package/dist/contracts/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils__factory.js +4 -2
  112. package/dist/contracts/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils__factory.ts +1 -1
  113. package/dist/contracts/factories/@openzeppelin/contracts/proxy/beacon/IBeacon__factory.js +3 -1
  114. package/dist/contracts/factories/@openzeppelin/contracts/proxy/index.js +9 -5
  115. package/dist/contracts/factories/@openzeppelin/contracts/proxy/index.ts +1 -1
  116. package/dist/contracts/factories/@openzeppelin/contracts/token/ERC721/IERC721Receiver__factory.js +3 -1
  117. package/dist/contracts/factories/@openzeppelin/contracts/token/index.js +1 -2
  118. package/dist/contracts/factories/@openzeppelin/contracts/utils/Address__factory.js +4 -2
  119. package/dist/contracts/factories/@openzeppelin/contracts/utils/Address__factory.ts +1 -1
  120. package/dist/contracts/factories/@openzeppelin/contracts/utils/Create2__factory.js +44 -0
  121. package/dist/contracts/factories/@openzeppelin/contracts/utils/Create2__factory.ts +70 -0
  122. package/dist/contracts/factories/@openzeppelin/contracts/utils/Errors__factory.js +3 -1
  123. package/dist/contracts/factories/@openzeppelin/contracts/utils/Pausable__factory.js +3 -1
  124. package/dist/contracts/factories/@openzeppelin/contracts/utils/Strings__factory.js +12 -2
  125. package/dist/contracts/factories/@openzeppelin/contracts/utils/Strings__factory.ts +11 -1
  126. package/dist/contracts/factories/@openzeppelin/contracts/utils/cryptography/ECDSA__factory.js +3 -1
  127. package/dist/contracts/factories/@openzeppelin/contracts/utils/index.js +8 -2
  128. package/dist/contracts/factories/@openzeppelin/contracts/utils/index.ts +1 -0
  129. package/dist/contracts/factories/@openzeppelin/contracts/utils/introspection/IERC165__factory.js +3 -1
  130. package/dist/contracts/factories/@openzeppelin/contracts/utils/math/SafeCast__factory.js +3 -1
  131. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable__factory.js +3 -1
  132. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.js +3 -1
  133. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/index.js +4 -3
  134. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/index.ts +1 -0
  135. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/metatx/ERC2771ContextUpgradeable__factory.js +63 -0
  136. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/metatx/ERC2771ContextUpgradeable__factory.ts +85 -0
  137. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/metatx/index.js +12 -0
  138. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/metatx/index.ts +5 -0
  139. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/proxy/index.js +1 -2
  140. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.js +3 -1
  141. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.js +3 -1
  142. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.js +3 -1
  143. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable__factory.js +3 -1
  144. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/utils/index.js +1 -2
  145. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable__factory.js +3 -1
  146. package/dist/contracts/factories/@openzeppelin/index.js +1 -2
  147. package/dist/contracts/factories/contracts/TitleEscrowFactory__factory.js +23 -7
  148. package/dist/contracts/factories/contracts/TitleEscrowFactory__factory.ts +34 -6
  149. package/dist/contracts/factories/contracts/TitleEscrow__factory.js +72 -12
  150. package/dist/contracts/factories/contracts/TitleEscrow__factory.ts +95 -12
  151. package/dist/contracts/factories/contracts/TradeTrustToken__factory.js +102 -6
  152. package/dist/contracts/factories/contracts/TradeTrustToken__factory.ts +128 -1
  153. package/dist/contracts/factories/contracts/base/RegistryAccess__factory.js +3 -1
  154. package/dist/contracts/factories/contracts/base/SBTUpgradeable__factory.js +4 -2
  155. package/dist/contracts/factories/contracts/base/SBTUpgradeable__factory.ts +1 -1
  156. package/dist/contracts/factories/contracts/base/TradeTrustSBT__factory.js +35 -1
  157. package/dist/contracts/factories/contracts/base/TradeTrustSBT__factory.ts +43 -0
  158. package/dist/contracts/factories/contracts/base/TradeTrustTokenBaseURI__factory.js +35 -1
  159. package/dist/contracts/factories/contracts/base/TradeTrustTokenBaseURI__factory.ts +43 -0
  160. package/dist/contracts/factories/contracts/base/TradeTrustTokenBase__factory.js +69 -1
  161. package/dist/contracts/factories/contracts/base/TradeTrustTokenBase__factory.ts +86 -0
  162. package/dist/contracts/factories/contracts/base/TradeTrustTokenBurnable__factory.js +35 -1
  163. package/dist/contracts/factories/contracts/base/TradeTrustTokenBurnable__factory.ts +43 -0
  164. package/dist/contracts/factories/contracts/base/TradeTrustTokenMintable__factory.js +69 -1
  165. package/dist/contracts/factories/contracts/base/TradeTrustTokenMintable__factory.ts +86 -0
  166. package/dist/contracts/factories/contracts/base/TradeTrustTokenRestorable__factory.js +35 -1
  167. package/dist/contracts/factories/contracts/base/TradeTrustTokenRestorable__factory.ts +43 -0
  168. package/dist/contracts/factories/contracts/index.js +1 -2
  169. package/dist/contracts/factories/contracts/interfaces/IERC721MetadataUpgradeable__factory.js +3 -1
  170. package/dist/contracts/factories/contracts/interfaces/ISBTUpgradeable__factory.js +3 -1
  171. package/dist/contracts/factories/contracts/interfaces/ITitleEscrowFactory__factory.js +3 -1
  172. package/dist/contracts/factories/contracts/interfaces/ITitleEscrowSignable__factory.js +38 -6
  173. package/dist/contracts/factories/contracts/interfaces/ITitleEscrowSignable__factory.ts +42 -6
  174. package/dist/contracts/factories/contracts/interfaces/ITitleEscrow__factory.js +38 -6
  175. package/dist/contracts/factories/contracts/interfaces/ITitleEscrow__factory.ts +42 -6
  176. package/dist/contracts/factories/contracts/interfaces/ITradeTrustSBT__factory.js +3 -1
  177. package/dist/contracts/factories/contracts/interfaces/ITradeTrustTokenBurnable__factory.js +3 -1
  178. package/dist/contracts/factories/contracts/interfaces/ITradeTrustTokenMintable__factory.js +17 -1
  179. package/dist/contracts/factories/contracts/interfaces/ITradeTrustTokenMintable__factory.ts +18 -0
  180. package/dist/contracts/factories/contracts/interfaces/ITradeTrustTokenRestorable__factory.js +3 -1
  181. package/dist/contracts/factories/contracts/interfaces/ITradeTrustToken__factory.js +17 -1
  182. package/dist/contracts/factories/contracts/interfaces/ITradeTrustToken__factory.ts +18 -0
  183. package/dist/contracts/factories/contracts/interfaces/RegistryAccessErrors__factory.js +3 -1
  184. package/dist/contracts/factories/contracts/interfaces/SigHelperErrors__factory.js +3 -1
  185. package/dist/contracts/factories/contracts/interfaces/TDocDeployerErrors__factory.js +3 -1
  186. package/dist/contracts/factories/contracts/interfaces/TitleEscrowErrors__factory.js +3 -1
  187. package/dist/contracts/factories/contracts/interfaces/TitleEscrowFactoryErrors__factory.js +3 -1
  188. package/dist/contracts/factories/contracts/interfaces/TitleEscrowSignableErrors__factory.js +3 -1
  189. package/dist/contracts/factories/contracts/interfaces/TradeTrustTokenErrors__factory.js +7 -1
  190. package/dist/contracts/factories/contracts/interfaces/TradeTrustTokenErrors__factory.ts +5 -0
  191. package/dist/contracts/factories/contracts/mocks/ERC721ReceiverMock__factory.js +4 -2
  192. package/dist/contracts/factories/contracts/mocks/ERC721ReceiverMock__factory.ts +1 -1
  193. package/dist/contracts/factories/contracts/mocks/SBTUpgradeableMock__factory.js +4 -2
  194. package/dist/contracts/factories/contracts/mocks/SBTUpgradeableMock__factory.ts +1 -1
  195. package/dist/contracts/factories/contracts/mocks/SigHelperMock__factory.js +3 -1
  196. package/dist/contracts/factories/contracts/mocks/SimpleCaller__factory.js +3 -1
  197. package/dist/contracts/factories/contracts/mocks/TitleEscrowFactoryCallerMock__factory.js +3 -1
  198. package/dist/contracts/factories/contracts/mocks/TitleEscrowFactoryGetterMock__factory.js +3 -1
  199. package/dist/contracts/factories/contracts/mocks/TitleEscrowMock__factory.js +72 -12
  200. package/dist/contracts/factories/contracts/mocks/TitleEscrowMock__factory.ts +95 -12
  201. package/dist/contracts/factories/contracts/mocks/TradeTrustTokenMock__factory.js +102 -6
  202. package/dist/contracts/factories/contracts/mocks/TradeTrustTokenMock__factory.ts +128 -1
  203. package/dist/contracts/factories/contracts/presets/TitleEscrowSignable__factory.js +75 -11
  204. package/dist/contracts/factories/contracts/presets/TitleEscrowSignable__factory.ts +99 -11
  205. package/dist/contracts/factories/contracts/presets/TradeTrustTokenStandard__factory.js +70 -2
  206. package/dist/contracts/factories/contracts/presets/TradeTrustTokenStandard__factory.ts +87 -1
  207. package/dist/contracts/factories/contracts/utils/SigHelper__factory.js +3 -1
  208. package/dist/contracts/factories/contracts/utils/TDocDeployer__factory.js +4 -2
  209. package/dist/contracts/factories/contracts/utils/TDocDeployer__factory.ts +1 -1
  210. package/dist/contracts/factories/index.js +1 -2
  211. package/dist/contracts/hardhat.d.ts +70 -16
  212. package/dist/contracts/index.js +29 -2
  213. package/dist/contracts/index.ts +8 -0
  214. package/dist/index.js +1 -2
  215. package/dist/models/common.js +5 -0
  216. package/dist/models/freightForwarder.js +5 -0
  217. package/dist/models/shipOwner.js +5 -0
  218. package/dist/services/admin/adminRepository.js +77 -0
  219. package/dist/services/crypto.js +215 -0
  220. package/dist/services/database.js +36 -0
  221. package/dist/services/freightForwarder/freightForwarderRepository.js +94 -0
  222. package/dist/services/shipOwner/shipOwnerController.js +77 -0
  223. package/dist/services/shipOwner/shipOwnerRepository.js +94 -0
  224. package/dist/services/shipOwner/shipOwnerRoutes.js +18 -0
  225. package/dist/types/app.d.ts +1 -0
  226. package/dist/types/constants/contract-address.d.ts +43 -3
  227. package/dist/types/models/common.d.ts +23 -0
  228. package/dist/types/models/freightForwarder.d.ts +15 -0
  229. package/dist/types/models/shipOwner.d.ts +25 -0
  230. package/dist/types/services/admin/adminRepository.d.ts +9 -0
  231. package/dist/types/services/crypto.d.ts +27 -0
  232. package/dist/types/services/database.d.ts +3 -0
  233. package/dist/types/services/freightForwarder/freightForwarderRepository.d.ts +10 -0
  234. package/dist/types/services/shipOwner/shipOwnerController.d.ts +6 -0
  235. package/dist/types/services/shipOwner/shipOwnerRepository.d.ts +10 -0
  236. package/dist/types/services/shipOwner/shipOwnerRoutes.d.ts +2 -0
  237. package/dist/types/utils/extractFactoryAddress.d.ts +10 -0
  238. package/dist/types/utils/extractTokenAddress.d.ts +10 -0
  239. package/dist/types/utils/get-event-from-receipt.d.ts +1 -1
  240. package/dist/types/utils/index.d.ts +1 -0
  241. package/dist/types/utils/run.d.ts +9 -0
  242. package/dist/utils/compute-interface-id.js +5 -3
  243. package/dist/utils/compute-title-escrow-address.js +5 -3
  244. package/dist/utils/encode-init-params.js +5 -3
  245. package/dist/utils/extractFactoryAddress.js +58 -0
  246. package/dist/utils/extractTokenAddress.js +58 -0
  247. package/dist/utils/get-event-from-receipt.js +5 -3
  248. package/dist/utils/index.js +11 -0
  249. package/dist/utils/run.js +36 -0
  250. package/package.json +16 -3
  251. package/dist/contracts/factories/@openzeppelin/contracts/proxy/utils/Initializable__factory.js +0 -37
  252. package/dist/contracts/factories/@openzeppelin/contracts/proxy/utils/Initializable__factory.ts +0 -49
  253. package/dist/contracts/factories/@openzeppelin/contracts/proxy/utils/index.js +0 -12
  254. /package/dist/contracts/@openzeppelin/{contracts/proxy/utils/Initializable.js → contracts-upgradeable/metatx/ERC2771ContextUpgradeable.js} +0 -0
  255. /package/dist/contracts/@openzeppelin/{contracts/proxy/utils → contracts-upgradeable/metatx}/index.js +0 -0
@@ -5,7 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.TradeTrustTokenStandard__factory = void 0;
7
7
  var _ethers = require("ethers");
8
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ // @ts-nocheck
8
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
9
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
10
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ // @ts-nocheck
9
11
  const _abi = [{
10
12
  inputs: [],
11
13
  stateMutability: "nonpayable",
@@ -50,6 +52,10 @@ const _abi = [{
50
52
  inputs: [],
51
53
  name: "NotInitializing",
52
54
  type: "error"
55
+ }, {
56
+ inputs: [],
57
+ name: "NotTokenIssuer",
58
+ type: "error"
53
59
  }, {
54
60
  inputs: [],
55
61
  name: "RemarkLengthExceeded",
@@ -161,6 +167,26 @@ const _abi = [{
161
167
  }],
162
168
  name: "RoleRevoked",
163
169
  type: "event"
170
+ }, {
171
+ anonymous: false,
172
+ inputs: [{
173
+ indexed: true,
174
+ internalType: "address",
175
+ name: "actor",
176
+ type: "address"
177
+ }, {
178
+ indexed: true,
179
+ internalType: "uint256",
180
+ name: "tokenId",
181
+ type: "uint256"
182
+ }, {
183
+ indexed: true,
184
+ internalType: "address",
185
+ name: "accepter",
186
+ type: "address"
187
+ }],
188
+ name: "TokenAccepterAssigned",
189
+ type: "event"
164
190
  }, {
165
191
  anonymous: false,
166
192
  inputs: [{
@@ -340,6 +366,20 @@ const _abi = [{
340
366
  outputs: [],
341
367
  stateMutability: "nonpayable",
342
368
  type: "function"
369
+ }, {
370
+ inputs: [{
371
+ internalType: "uint256",
372
+ name: "tokenId",
373
+ type: "uint256"
374
+ }],
375
+ name: "issuerOf",
376
+ outputs: [{
377
+ internalType: "address",
378
+ name: "",
379
+ type: "address"
380
+ }],
381
+ stateMutability: "view",
382
+ type: "function"
343
383
  }, {
344
384
  inputs: [{
345
385
  internalType: "address",
@@ -516,6 +556,20 @@ const _abi = [{
516
556
  outputs: [],
517
557
  stateMutability: "nonpayable",
518
558
  type: "function"
559
+ }, {
560
+ inputs: [{
561
+ internalType: "uint256",
562
+ name: "tokenId",
563
+ type: "uint256"
564
+ }, {
565
+ internalType: "address",
566
+ name: "accepter",
567
+ type: "address"
568
+ }],
569
+ name: "setTokenAccepter",
570
+ outputs: [],
571
+ stateMutability: "nonpayable",
572
+ type: "function"
519
573
  }, {
520
574
  inputs: [{
521
575
  internalType: "bytes4",
@@ -550,6 +604,20 @@ const _abi = [{
550
604
  }],
551
605
  stateMutability: "view",
552
606
  type: "function"
607
+ }, {
608
+ inputs: [{
609
+ internalType: "uint256",
610
+ name: "tokenId",
611
+ type: "uint256"
612
+ }],
613
+ name: "tokenAccepterOf",
614
+ outputs: [{
615
+ internalType: "address",
616
+ name: "",
617
+ type: "address"
618
+ }],
619
+ stateMutability: "view",
620
+ type: "function"
553
621
  }, {
554
622
  inputs: [{
555
623
  internalType: "uint256",
@@ -597,7 +665,7 @@ const _abi = [{
597
665
  stateMutability: "nonpayable",
598
666
  type: "function"
599
667
  }];
600
- const _bytecode = "0x60806040523480156200001157600080fd5b50600062000024620001ab60201b60201c565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015620000735750825b9050600060018367ffffffffffffffff16148015620000a9575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015620000b8575080155b15620000f0576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315620001415760018560000160086101000a81548160ff0219169083151502179055505b8315620001a05760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2600160405162000197919062000234565b60405180910390a15b505050505062000251565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b6000819050919050565b600067ffffffffffffffff82169050919050565b6000819050919050565b60006200021c620002166200021084620001d3565b620001f1565b620001dd565b9050919050565b6200022e81620001fb565b82525050565b60006020820190506200024b600083018462000223565b92915050565b6145a280620002616000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80636010a5e711610104578063a47d1f5e116100a2578063d539139311610071578063d539139314610556578063d547741f14610574578063e2339ea314610590578063fe9d9303146105ac576101cf565b8063a47d1f5e146104ce578063a7f0b3de146104ec578063ab67aa581461050a578063c87b56dd14610526576101cf565b80637fb2977d116100de5780637fb2977d1461044457806391d148541461046257806395d89b4114610492578063a217fddf146104b0576101cf565b80636010a5e7146103b45780636352211e146103e457806370a0823114610414576101cf565b80632f2ff15d11610171578063439fab911161014b578063439fab911461032e57806355f804b31461034a5780635c975abb146103665780635e089da714610384576101cf565b80632f2ff15d146102d8578063325689f9146102f457806336568abe14610312576101cf565b806314e30d20116101ad57806314e30d2014610240578063150b7a021461025c5780631e4e00911461028c578063248a9ca3146102a8576101cf565b806301ffc9a7146101d457806306fdde031461020457806311d4d7b514610222575b600080fd5b6101ee60048036038101906101e99190612d81565b6105c8565b6040516101fb9190612dc9565b60405180910390f35b61020c610622565b6040516102199190612e74565b60405180910390f35b61022a6106b4565b6040516102379190612eaf565b60405180910390f35b61025a60048036038101906102559190612f2f565b6106d8565b005b61027660048036038101906102719190613140565b610781565b60405161028391906131d2565b60405180910390f35b6102a660048036038101906102a19190613219565b610795565b005b6102c260048036038101906102bd9190613259565b6107b1565b6040516102cf9190612eaf565b60405180910390f35b6102f260048036038101906102ed9190613286565b6107df565b005b6102fc610801565b6040516103099190613325565b60405180910390f35b61032c60048036038101906103279190613286565b61082b565b005b61034860048036038101906103439190613340565b6108a6565b005b610364600480360381019061035f919061342a565b610abe565b005b61036e610ad8565b60405161037b9190612dc9565b60405180910390f35b61039e60048036038101906103999190613473565b610afd565b6040516103ab91906134e2565b60405180910390f35b6103ce60048036038101906103c991906134fd565b610d01565b6040516103db91906134e2565b60405180910390f35b6103fe60048036038101906103f99190613585565b610d4e565b60405161040b91906134e2565b60405180910390f35b61042e600480360381019061042991906135b2565b610dff565b60405161043b91906135ee565b60405180910390f35b61044c610eb6565b6040516104599190612eaf565b60405180910390f35b61047c60048036038101906104779190613286565b610eda565b6040516104899190612dc9565b60405180910390f35b61049a610f53565b6040516104a79190612e74565b60405180910390f35b6104b8610fe5565b6040516104c59190612eaf565b60405180910390f35b6104d6610fec565b6040516104e3919061365e565b60405180910390f35b6104f461107a565b60405161050191906135ee565b60405180910390f35b610524600480360381019061051f9190613140565b611084565b005b610540600480360381019061053b9190613585565b6110e6565b60405161054d9190612e74565b60405180910390f35b61055e61118d565b60405161056b9190612eaf565b60405180910390f35b61058e60048036038101906105899190613286565b6111b1565b005b6105aa60048036038101906105a59190612f2f565b6111d3565b005b6105c660048036038101906105c19190613473565b61127c565b005b6000807bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061061b575061061a82611301565b5b9050919050565b606060008054610631906136af565b80601f016020809104026020016040519081016040528092919081815260200182805461065d906136af565b80156106aa5780601f1061067f576101008083540402835291602001916106aa565b820191906000526020600020905b81548152906001019060200180831161068d57829003601f168201915b5050505050905090565b7f4aca127bf16f434830a404b92851a3555910944351935eae88740d1cef5ffaad81565b6000801b6106e58161137b565b82826078828290501115610725576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61072d61138f565b84846002918261073e92919061388d565b507f2dfab123508590223226491c2b89d1862427468e1b0c1cd660e5622e63eaf3eb3386866040516107729392919061398a565b60405180910390a15050505050565b600063150b7a0260e01b9050949350505050565b6000801b6107a28161137b565b6107ac8383611401565b505050565b6000806107bc61146c565b905080600001600084815260200190815260200160002060010154915050919050565b6107e8826107b1565b6107f18161137b565b6107fb8383611494565b50505050565b6000603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610833611595565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610897576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108a1828261159d565b505050565b60006108b061169f565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff161480156108fe5750825b9050600060018367ffffffffffffffff16148015610933575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015610941575080155b15610978576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083156109c85760018560000160086101000a81548160ff0219169083151502179055505b600080878060200190518101906109df9190613a6a565b915091506000806000848060200190518101906109fc9190613b36565b9250925092504360358190555083603460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a558383836116c7565b50505050508315610ab65760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051610aad9190613c10565b60405180910390a15b505050505050565b6000801b610acb8161137b565b610ad4826116e7565b5050565b600080610ae36116fa565b90508060000160009054906101000a900460ff1691505090565b6000610b07611722565b7f4aca127bf16f434830a404b92851a3555910944351935eae88740d1cef5ffaad610b318161137b565b83836078828290501115610b71576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b7a87611763565b610bb0576040517f3f6cc76800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16610bd088610d4e565b73ffffffffffffffffffffffffffffffffffffffff1614610c1d576040517fd5475a0b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610c27610801565b73ffffffffffffffffffffffffffffffffffffffff1663dc48b34f308a6040518363ffffffff1660e01b8152600401610c61929190613c2b565b602060405180830381865afa158015610c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca29190613c69565b9050610cf3818989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506117cf565b809450505050509392505050565b6000610d0b611722565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610d358161137b565b610d428787878787611845565b91505095945050505050565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ded90613d08565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6690613d9a565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7fe5fe4715ff8709ff44f5e6bb664620f9349f5f6ae81a532eba2a43b9598ba7eb81565b600080610ee561146c565b905080600001600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691505092915050565b606060018054610f62906136af565b80601f0160208091040260200160405190810160405280929190818152602001828054610f8e906136af565b8015610fdb5780601f10610fb057610100808354040283529160200191610fdb565b820191906000526020600020905b815481529060010190602001808311610fbe57829003601f168201915b5050505050905090565b6000801b81565b60028054610ff9906136af565b80601f0160208091040260200160405190810160405280929190818152602001828054611025906136af565b80156110725780601f1061104757610100808354040283529160200191611072565b820191906000526020600020905b81548152906001019060200180831161105557829003601f168201915b505050505081565b6000603554905090565b61109561108f611595565b8361198d565b6110d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cb90613e2c565b60405180910390fd5b6110e084848484611a1c565b50505050565b60606110f182611763565b611130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112790613ebe565b60405180910390fd5b600061113a611a78565b9050600081511161115a5760405180602001604052806000815250611185565b8061116484611a87565b604051602001611175929190613f1a565b6040516020818303038152906040525b915050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6111ba826107b1565b6111c38161137b565b6111cd838361159d565b50505050565b6000801b6111e08161137b565b82826078828290501115611220576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611228611b55565b84846002918261123992919061388d565b507f861794963cbbb129f46f21f0076eb396185f0dcecba7890e911f3d6508d8d45f33868660405161126d9392919061398a565b60405180910390a15050505050565b611284611722565b7fe5fe4715ff8709ff44f5e6bb664620f9349f5f6ae81a532eba2a43b9598ba7eb6112ae8161137b565b828260788282905011156112ee576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112f9868686611bc7565b505050505050565b60007f5e089da7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611374575061137382611cdd565b5b9050919050565b61138c81611387611595565b611d57565b50565b611397611da8565b60006113a16116fa565b905060008160000160006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6113e9611595565b6040516113f691906134e2565b60405180910390a150565b600061140b61146c565b90506000611418846107b1565b905082826000016000868152602001908152602001600020600101819055508281857fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff60405160405180910390a450505050565b60007f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800905090565b60008061149f61146c565b90506114ab8484610eda565b61158957600181600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611525611595565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061158f565b60009150505b92915050565b600033905090565b6000806115a861146c565b90506115b48484610eda565b1561169357600081600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061162f611595565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a46001915050611699565b60009150505b92915050565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b6116cf611de8565b6116d98383611e28565b6116e281611e46565b505050565b80603390816116f69190613f99565b5050565b60007fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300905090565b61172a610ad8565b15611761576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff1663ab67aa58308585856040518563ffffffff1660e01b815260040161180e949392919061406b565b600060405180830381600087803b15801561182857600080fd5b505af115801561183c573d6000803e3d6000fd5b50505050505050565b600082826078828290501115611887576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61189086611763565b156118c7576040517f55c7e8ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006118d1610801565b73ffffffffffffffffffffffffffffffffffffffff1663780900dc886040518263ffffffff1660e01b815260040161190991906135ee565b6020604051808303816000875af1158015611928573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194c9190613c69565b905061197e81888b8b8a8a60405160200161196a94939291906140b7565b604051602081830303815290604052611f46565b80935050505095945050505050565b600061199882611763565b6119d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ce90614169565b60405180910390fd5b60006119e283610d4e565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161491505092915050565b611a27848484611fa1565b611a33848484846121fc565b611a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a69906141fb565b60405180910390fd5b50505050565b6060611a8261237e565b905090565b606060006001611a9684612410565b01905060008167ffffffffffffffff811115611ab557611ab4613015565b5b6040519080825280601f01601f191660200182016040528015611ae75781602001600182028036833780820191505090505b509050600082602001820190505b600115611b4a578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611b3e57611b3d61421b565b5b04945060008503611af5575b819350505050919050565b611b5d611722565b6000611b676116fa565b905060018160000160006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611baf611595565b604051611bbc91906134e2565b60405180910390a150565b6000611bd1610801565b73ffffffffffffffffffffffffffffffffffffffff1663dc48b34f30866040518363ffffffff1660e01b8152600401611c0b929190613c2b565b602060405180830381865afa158015611c28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4c9190613c69565b90508073ffffffffffffffffffffffffffffffffffffffff16638fb33c3c84846040518363ffffffff1660e01b8152600401611c8992919061424a565b600060405180830381600087803b158015611ca357600080fd5b505af1158015611cb7573d6000803e3d6000fd5b50505050611cd761dead85604051806020016040528060008152506117cf565b50505050565b60007f6010a5e7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d505750611d4f82612563565b5b9050919050565b611d618282610eda565b611da45780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401611d9b92919061426e565b60405180910390fd5b5050565b611db0610ad8565b611de6576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b611df06125dd565b611e26576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b611e30611de8565b611e3a82826125fd565b611e42612613565b5050565b611e4e611de8565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611eb4576040517f05bb467c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ec16000801b82611494565b50611eec7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a682611494565b50611f177f4aca127bf16f434830a404b92851a3555910944351935eae88740d1cef5ffaad82611494565b50611f427fe5fe4715ff8709ff44f5e6bb664620f9349f5f6ae81a532eba2a43b9598ba7eb82611494565b5050565b611f508383612625565b611f5d60008484846121fc565b611f9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f93906141fb565b60405180910390fd5b505050565b8273ffffffffffffffffffffffffffffffffffffffff16611fc182610d4e565b73ffffffffffffffffffffffffffffffffffffffff1614612017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200e90614309565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207d9061439b565b60405180910390fd5b6120918383836127fe565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120e191906143ea565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612138919061441e565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46121f7838383612977565b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff163b1115612371578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612241611595565b8786866040518563ffffffff1660e01b8152600401612263949392919061406b565b6020604051808303816000875af192505050801561229f57506040513d601f19601f8201168201806040525081019061229c9190614467565b60015b612321573d80600081146122cf576040519150601f19603f3d011682016040523d82523d6000602084013e6122d4565b606091505b506000815103612319576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612310906141fb565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612376565b600190505b949350505050565b60606033805461238d906136af565b80601f01602080910402602001604051908101604052809291908181526020018280546123b9906136af565b80156124065780601f106123db57610100808354040283529160200191612406565b820191906000526020600020905b8154815290600101906020018083116123e957829003601f168201915b5050505050905090565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061246e577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816124645761246361421b565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106124ab576d04ee2d6d415b85acef810000000083816124a1576124a061421b565b5b0492506020810190505b662386f26fc1000083106124da57662386f26fc1000083816124d0576124cf61421b565b5b0492506010810190505b6305f5e1008310612503576305f5e10083816124f9576124f861421b565b5b0492506008810190505b612710831061252857612710838161251e5761251d61421b565b5b0492506004810190505b6064831061254b57606483816125415761254061421b565b5b0492506002810190505b600a831061255a576001810190505b80915050919050565b60007ffe9d9303000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806125d657506125d58261297c565b5b9050919050565b60006125e761169f565b60000160089054906101000a900460ff16905090565b612605611de8565b61260f828261298e565b5050565b61261b611de8565b6126236129ba565b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268b906144e0565b60405180910390fd5b61269d81611763565b156126dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d49061454c565b60405180910390fd5b6126e9600083836127fe565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612739919061441e565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46127fa60008383612977565b5050565b612806611722565b6128118383836129ee565b600061281b610801565b73ffffffffffffffffffffffffffffffffffffffff1663dc48b34f30846040518363ffffffff1660e01b8152600401612855929190613c2b565b602060405180830381865afa158015612872573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128969190613c69565b90503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561290057508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561293a575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612971576040517ff7e6817a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b505050565b600061298782612aa6565b9050919050565b612996611de8565b81600090816129a59190613f99565b5080600190816129b59190613f99565b505050565b6129c2611de8565b60006129cc6116fa565b905060008160000160006101000a81548160ff02191690831515021790555050565b61dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015612a5f57503073ffffffffffffffffffffffffffffffffffffffff16612a4682610d4e565b73ffffffffffffffffffffffffffffffffffffffff1614155b15612a96576040517fd5475a0b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612aa1838383612ab8565b505050565b6000612ab182612ad0565b9050919050565b612ac0611722565b612acb838383612b4a565b505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612b435750612b4282612b4f565b5b9050919050565b505050565b60007f95a63a27000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612bc25750612bc182612bc9565b5b9050919050565b60007fb8950977000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612c9457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612ca45750612ca382612cab565b5b9050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612d5e81612d29565b8114612d6957600080fd5b50565b600081359050612d7b81612d55565b92915050565b600060208284031215612d9757612d96612d1f565b5b6000612da584828501612d6c565b91505092915050565b60008115159050919050565b612dc381612dae565b82525050565b6000602082019050612dde6000830184612dba565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e1e578082015181840152602081019050612e03565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e4682612de4565b612e508185612def565b9350612e60818560208601612e00565b612e6981612e2a565b840191505092915050565b60006020820190508181036000830152612e8e8184612e3b565b905092915050565b6000819050919050565b612ea981612e96565b82525050565b6000602082019050612ec46000830184612ea0565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612eef57612eee612eca565b5b8235905067ffffffffffffffff811115612f0c57612f0b612ecf565b5b602083019150836001820283011115612f2857612f27612ed4565b5b9250929050565b60008060208385031215612f4657612f45612d1f565b5b600083013567ffffffffffffffff811115612f6457612f63612d24565b5b612f7085828601612ed9565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612fa782612f7c565b9050919050565b612fb781612f9c565b8114612fc257600080fd5b50565b600081359050612fd481612fae565b92915050565b6000819050919050565b612fed81612fda565b8114612ff857600080fd5b50565b60008135905061300a81612fe4565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61304d82612e2a565b810181811067ffffffffffffffff8211171561306c5761306b613015565b5b80604052505050565b600061307f612d15565b905061308b8282613044565b919050565b600067ffffffffffffffff8211156130ab576130aa613015565b5b6130b482612e2a565b9050602081019050919050565b82818337600083830152505050565b60006130e36130de84613090565b613075565b9050828152602081018484840111156130ff576130fe613010565b5b61310a8482856130c1565b509392505050565b600082601f83011261312757613126612eca565b5b81356131378482602086016130d0565b91505092915050565b6000806000806080858703121561315a57613159612d1f565b5b600061316887828801612fc5565b945050602061317987828801612fc5565b935050604061318a87828801612ffb565b925050606085013567ffffffffffffffff8111156131ab576131aa612d24565b5b6131b787828801613112565b91505092959194509250565b6131cc81612d29565b82525050565b60006020820190506131e760008301846131c3565b92915050565b6131f681612e96565b811461320157600080fd5b50565b600081359050613213816131ed565b92915050565b600080604083850312156132305761322f612d1f565b5b600061323e85828601613204565b925050602061324f85828601613204565b9150509250929050565b60006020828403121561326f5761326e612d1f565b5b600061327d84828501613204565b91505092915050565b6000806040838503121561329d5761329c612d1f565b5b60006132ab85828601613204565b92505060206132bc85828601612fc5565b9150509250929050565b6000819050919050565b60006132eb6132e66132e184612f7c565b6132c6565b612f7c565b9050919050565b60006132fd826132d0565b9050919050565b600061330f826132f2565b9050919050565b61331f81613304565b82525050565b600060208201905061333a6000830184613316565b92915050565b60006020828403121561335657613355612d1f565b5b600082013567ffffffffffffffff81111561337457613373612d24565b5b61338084828501613112565b91505092915050565b600067ffffffffffffffff8211156133a4576133a3613015565b5b6133ad82612e2a565b9050602081019050919050565b60006133cd6133c884613389565b613075565b9050828152602081018484840111156133e9576133e8613010565b5b6133f48482856130c1565b509392505050565b600082601f83011261341157613410612eca565b5b81356134218482602086016133ba565b91505092915050565b6000602082840312156134405761343f612d1f565b5b600082013567ffffffffffffffff81111561345e5761345d612d24565b5b61346a848285016133fc565b91505092915050565b60008060006040848603121561348c5761348b612d1f565b5b600061349a86828701612ffb565b935050602084013567ffffffffffffffff8111156134bb576134ba612d24565b5b6134c786828701612ed9565b92509250509250925092565b6134dc81612f9c565b82525050565b60006020820190506134f760008301846134d3565b92915050565b60008060008060006080868803121561351957613518612d1f565b5b600061352788828901612fc5565b955050602061353888828901612fc5565b945050604061354988828901612ffb565b935050606086013567ffffffffffffffff81111561356a57613569612d24565b5b61357688828901612ed9565b92509250509295509295909350565b60006020828403121561359b5761359a612d1f565b5b60006135a984828501612ffb565b91505092915050565b6000602082840312156135c8576135c7612d1f565b5b60006135d684828501612fc5565b91505092915050565b6135e881612fda565b82525050565b600060208201905061360360008301846135df565b92915050565b600081519050919050565b600082825260208201905092915050565b600061363082613609565b61363a8185613614565b935061364a818560208601612e00565b61365381612e2a565b840191505092915050565b600060208201905081810360008301526136788184613625565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806136c757607f821691505b6020821081036136da576136d9613680565b5b50919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261374d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613710565b6137578683613710565b95508019841693508086168417925050509392505050565b600061378a61378561378084612fda565b6132c6565b612fda565b9050919050565b6000819050919050565b6137a48361376f565b6137b86137b082613791565b84845461371d565b825550505050565b600090565b6137cd6137c0565b6137d881848461379b565b505050565b5b818110156137fc576137f16000826137c5565b6001810190506137de565b5050565b601f82111561384157613812816136eb565b61381b84613700565b8101602085101561382a578190505b61383e61383685613700565b8301826137dd565b50505b505050565b600082821c905092915050565b600061386460001984600802613846565b1980831691505092915050565b600061387d8383613853565b9150826002028217905092915050565b61389783836136e0565b67ffffffffffffffff8111156138b0576138af613015565b5b6138ba82546136af565b6138c5828285613800565b6000601f8311600181146138f457600084156138e2578287013590505b6138ec8582613871565b865550613954565b601f198416613902866136eb565b60005b8281101561392a57848901358255600182019150602085019450602081019050613905565b868310156139475784890135613943601f891682613853565b8355505b6001600288020188555050505b50505050505050565b60006139698385613614565b93506139768385846130c1565b61397f83612e2a565b840190509392505050565b600060408201905061399f60008301866134d3565b81810360208301526139b281848661395d565b9050949350505050565b60006139cf6139ca84613090565b613075565b9050828152602081018484840111156139eb576139ea613010565b5b6139f6848285612e00565b509392505050565b600082601f830112613a1357613a12612eca565b5b8151613a238482602086016139bc565b91505092915050565b6000613a3782612f7c565b9050919050565b613a4781613a2c565b8114613a5257600080fd5b50565b600081519050613a6481613a3e565b92915050565b60008060408385031215613a8157613a80612d1f565b5b600083015167ffffffffffffffff811115613a9f57613a9e612d24565b5b613aab858286016139fe565b9250506020613abc85828601613a55565b9150509250929050565b6000613ad9613ad484613389565b613075565b905082815260208101848484011115613af557613af4613010565b5b613b00848285612e00565b509392505050565b600082601f830112613b1d57613b1c612eca565b5b8151613b2d848260208601613ac6565b91505092915050565b600080600060608486031215613b4f57613b4e612d1f565b5b600084015167ffffffffffffffff811115613b6d57613b6c612d24565b5b613b7986828701613b08565b935050602084015167ffffffffffffffff811115613b9a57613b99612d24565b5b613ba686828701613b08565b9250506040613bb786828701613a55565b9150509250925092565b6000819050919050565b600067ffffffffffffffff82169050919050565b6000613bfa613bf5613bf084613bc1565b6132c6565b613bcb565b9050919050565b613c0a81613bdf565b82525050565b6000602082019050613c256000830184613c01565b92915050565b6000604082019050613c4060008301856134d3565b613c4d60208301846135df565b9392505050565b600081519050613c6381612fae565b92915050565b600060208284031215613c7f57613c7e612d1f565b5b6000613c8d84828501613c54565b91505092915050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b6000613cf2602983612def565b9150613cfd82613c96565b604082019050919050565b60006020820190508181036000830152613d2181613ce5565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000613d84602a83612def565b9150613d8f82613d28565b604082019050919050565b60006020820190508181036000830152613db381613d77565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000613e16603183612def565b9150613e2182613dba565b604082019050919050565b60006020820190508181036000830152613e4581613e09565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613ea8602f83612def565b9150613eb382613e4c565b604082019050919050565b60006020820190508181036000830152613ed781613e9b565b9050919050565b600081905092915050565b6000613ef482612de4565b613efe8185613ede565b9350613f0e818560208601612e00565b80840191505092915050565b6000613f268285613ee9565b9150613f328284613ee9565b91508190509392505050565b60008190508160005260206000209050919050565b601f821115613f9457613f6581613f3e565b613f6e84613700565b81016020851015613f7d578190505b613f91613f8985613700565b8301826137dd565b50505b505050565b613fa282612de4565b67ffffffffffffffff811115613fbb57613fba613015565b5b613fc582546136af565b613fd0828285613f53565b600060209050601f8311600181146140035760008415613ff1578287015190505b613ffb8582613871565b865550614063565b601f19841661401186613f3e565b60005b8281101561403957848901518255600182019150602085019450602081019050614014565b868310156140565784890151614052601f891682613853565b8355505b6001600288020188555050505b505050505050565b600060808201905061408060008301876134d3565b61408d60208301866134d3565b61409a60408301856135df565b81810360608301526140ac8184613625565b905095945050505050565b60006060820190506140cc60008301876134d3565b6140d960208301866134d3565b81810360408301526140ec81848661395d565b905095945050505050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000614153602c83612def565b915061415e826140f7565b604082019050919050565b6000602082019050818103600083015261418281614146565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006141e5603283612def565b91506141f082614189565b604082019050919050565b60006020820190508181036000830152614214816141d8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000602082019050818103600083015261426581848661395d565b90509392505050565b600060408201905061428360008301856134d3565b6142906020830184612ea0565b9392505050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b60006142f3602583612def565b91506142fe82614297565b604082019050919050565b60006020820190508181036000830152614322816142e6565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614385602483612def565b915061439082614329565b604082019050919050565b600060208201905081810360008301526143b481614378565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006143f582612fda565b915061440083612fda565b9250828203905081811115614418576144176143bb565b5b92915050565b600061442982612fda565b915061443483612fda565b925082820190508082111561444c5761444b6143bb565b5b92915050565b60008151905061446181612d55565b92915050565b60006020828403121561447d5761447c612d1f565b5b600061448b84828501614452565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006144ca602083612def565b91506144d582614494565b602082019050919050565b600060208201905081810360008301526144f9816144bd565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614536601c83612def565b915061454182614500565b602082019050919050565b6000602082019050818103600083015261456581614529565b905091905056fea2646970667358221220c8c47ea15779c19146e50f1bccd5c8e5337034b28f513276744af0c21532b11464736f6c63430008160033";
668
+ const _bytecode = "0x60806040523480156200001157600080fd5b50600062000024620001ab60201b60201c565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015620000735750825b9050600060018367ffffffffffffffff16148015620000a9575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015620000b8575080155b15620000f0576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315620001415760018560000160086101000a81548160ff0219169083151502179055505b8315620001a05760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2600160405162000197919062000253565b60405180910390a15b505050505062000270565b600080620001be620001c760201b60201c565b90508091505090565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0060001b905090565b6000819050919050565b600067ffffffffffffffff82169050919050565b6000819050919050565b60006200023b620002356200022f84620001f2565b62000210565b620001fc565b9050919050565b6200024d816200021a565b82525050565b60006020820190506200026a600083018462000242565b92915050565b614bea80620002806000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80636352211e1161010f578063a4e2ee11116100a2578063d539139311610071578063d5391393146105f3578063d547741f14610611578063e2339ea31461062d578063fe9d930314610649576101f0565b8063a4e2ee1114610559578063a7f0b3de14610589578063ab67aa58146105a7578063c87b56dd146105c3576101f0565b806391d14854116100de57806391d14854146104cf57806395d89b41146104ff578063a217fddf1461051d578063a47d1f5e1461053b576101f0565b80636352211e146104215780636f0fac8e1461045157806370a08231146104815780637fb2977d146104b1576101f0565b80632f2ff15d1161018757806355f804b31161015657806355f804b3146103875780635c975abb146103a35780635e089da7146103c15780636010a5e7146103f1576101f0565b80632f2ff15d14610315578063325689f91461033157806336568abe1461034f578063439fab911461036b576101f0565b8063150b7a02116101c3578063150b7a021461027d57806318bf4555146102ad5780631e4e0091146102c9578063248a9ca3146102e5576101f0565b806301ffc9a7146101f557806306fdde031461022557806311d4d7b51461024357806314e30d2014610261575b600080fd5b61020f600480360381019061020a9190613265565b610665565b60405161021c91906132ad565b60405180910390f35b61022d6106bf565b60405161023a9190613358565b60405180910390f35b61024b610751565b6040516102589190613393565b60405180910390f35b61027b60048036038101906102769190613413565b610775565b005b61029760048036038101906102929190613624565b610825565b6040516102a491906136b6565b60405180910390f35b6102c760048036038101906102c291906136d1565b610839565b005b6102e360048036038101906102de919061373d565b610a02565b005b6102ff60048036038101906102fa919061377d565b610a1e565b60405161030c9190613393565b60405180910390f35b61032f600480360381019061032a91906137aa565b610a4c565b005b610339610a6e565b6040516103469190613849565b60405180910390f35b610369600480360381019061036491906137aa565b610a98565b005b61038560048036038101906103809190613864565b610b13565b005b6103a1600480360381019061039c919061394e565b610d2b565b005b6103ab610d45565b6040516103b891906132ad565b60405180910390f35b6103db60048036038101906103d69190613997565b610d6a565b6040516103e89190613a06565b60405180910390f35b61040b60048036038101906104069190613a21565b61100d565b6040516104189190613a06565b60405180910390f35b61043b60048036038101906104369190613aa9565b61105a565b6040516104489190613a06565b60405180910390f35b61046b60048036038101906104669190613aa9565b61110b565b6040516104789190613a06565b60405180910390f35b61049b60048036038101906104969190613ad6565b611148565b6040516104a89190613b12565b60405180910390f35b6104b96111ff565b6040516104c69190613393565b60405180910390f35b6104e960048036038101906104e491906137aa565b611223565b6040516104f691906132ad565b60405180910390f35b61050761129c565b6040516105149190613358565b60405180910390f35b61052561132e565b6040516105329190613393565b60405180910390f35b610543611335565b6040516105509190613b82565b60405180910390f35b610573600480360381019061056e9190613aa9565b6113c3565b6040516105809190613a06565b60405180910390f35b610591611400565b60405161059e9190613b12565b60405180910390f35b6105c160048036038101906105bc9190613624565b61140a565b005b6105dd60048036038101906105d89190613aa9565b61146c565b6040516105ea9190613358565b60405180910390f35b6105fb611513565b6040516106089190613393565b60405180910390f35b61062b600480360381019061062691906137aa565b611537565b005b61064760048036038101906106429190613413565b611559565b005b610663600480360381019061065e9190613997565b611609565b005b6000807bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106b857506106b7826117b1565b5b9050919050565b6060600080546106ce90613bd3565b80601f01602080910402602001604051908101604052809291908181526020018280546106fa90613bd3565b80156107475780601f1061071c57610100808354040283529160200191610747565b820191906000526020600020905b81548152906001019060200180831161072a57829003601f168201915b5050505050905090565b7f4aca127bf16f434830a404b92851a3555910944351935eae88740d1cef5ffaad81565b6000801b6107828161182b565b828260788282905011156107c2576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107ca61183f565b8484600291826107db929190613db1565b507f2dfab123508590223226491c2b89d1862427468e1b0c1cd660e5622e63eaf3eb6108056118b1565b868660405161081693929190613eae565b60405180910390a15050505050565b600063150b7a0260e01b9050949350505050565b6108416118b9565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661086b8161182b565b610874836118fa565b6108aa576040517f3f6cc76800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108b26118b1565b73ffffffffffffffffffffffffffffffffffffffff166033600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610949576040517ffef57ea300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816034600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16836109bb6118b1565b73ffffffffffffffffffffffffffffffffffffffff167f066072621ea7f47380c761f70a3169016f0f5f293dccdf650318fc6bae08488260405160405180910390a4505050565b6000801b610a0f8161182b565b610a198383611966565b505050565b600080610a296119d1565b905080600001600084815260200190815260200160002060010154915050919050565b610a5582610a1e565b610a5e8161182b565b610a6883836119f9565b50505050565b6000603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610aa06118b1565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b04576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b0e8282611afa565b505050565b6000610b1d611bfc565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015610b6b5750825b9050600060018367ffffffffffffffff16148015610ba0575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015610bae575080155b15610be5576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315610c355760018560000160086101000a81548160ff0219169083151502179055505b60008087806020019051810190610c4c9190613f8e565b91509150600080600084806020019051810190610c69919061405a565b9250925092504360378190555083603660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610cc2838383611c10565b50505050508315610d235760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051610d1a9190614134565b60405180910390a15b505050505050565b6000801b610d388161182b565b610d4182611c30565b5050565b600080610d50611c43565b90508060000160009054906101000a900460ff1691505090565b6000610d746118b9565b7f4aca127bf16f434830a404b92851a3555910944351935eae88740d1cef5ffaad610d9e8161182b565b83836078828290501115610dde576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610de7876118fa565b610e1d576040517f3f6cc76800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16610e3d8861105a565b73ffffffffffffffffffffffffffffffffffffffff1614610e8a576040517fd5475a0b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e926118b1565b73ffffffffffffffffffffffffffffffffffffffff166033600089815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f29576040517ffef57ea300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f33610a6e565b73ffffffffffffffffffffffffffffffffffffffff1663dc48b34f308a6040518363ffffffff1660e01b8152600401610f6d92919061414f565b602060405180830381865afa158015610f8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fae919061418d565b9050610fff818989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611c6b565b809450505050509392505050565b60006110176118b9565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66110418161182b565b61104e8787878787611ce1565b91505095945050505050565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611102576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f99061422c565b60405180910390fd5b80915050919050565b60006034600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111af906142be565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7fe5fe4715ff8709ff44f5e6bb664620f9349f5f6ae81a532eba2a43b9598ba7eb81565b60008061122e6119d1565b905080600001600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691505092915050565b6060600180546112ab90613bd3565b80601f01602080910402602001604051908101604052809291908181526020018280546112d790613bd3565b80156113245780601f106112f957610100808354040283529160200191611324565b820191906000526020600020905b81548152906001019060200180831161130757829003601f168201915b5050505050905090565b6000801b81565b6002805461134290613bd3565b80601f016020809104026020016040519081016040528092919081815260200182805461136e90613bd3565b80156113bb5780601f10611390576101008083540402835291602001916113bb565b820191906000526020600020905b81548152906001019060200180831161139e57829003601f168201915b505050505081565b60006033600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000603754905090565b61141b6114156118b1565b83611e82565b61145a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145190614350565b60405180910390fd5b61146684848484611f11565b50505050565b6060611477826118fa565b6114b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ad906143e2565b60405180910390fd5b60006114c0611f6d565b905060008151116114e0576040518060200160405280600081525061150b565b806114ea84611f7c565b6040516020016114fb92919061443e565b6040516020818303038152906040525b915050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61154082610a1e565b6115498161182b565b6115538383611afa565b50505050565b6000801b6115668161182b565b828260788282905011156115a6576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115ae61204a565b8484600291826115bf929190613db1565b507f861794963cbbb129f46f21f0076eb396185f0dcecba7890e911f3d6508d8d45f6115e96118b1565b86866040516115fa93929190613eae565b60405180910390a15050505050565b6116116118b9565b7fe5fe4715ff8709ff44f5e6bb664620f9349f5f6ae81a532eba2a43b9598ba7eb61163b8161182b565b8282607882829050111561167b576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006116856118b1565b905060006034600089815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361172e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611725906144d4565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461179c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179390614566565b60405180910390fd5b6117a78888886120bc565b5050505050505050565b60007f5e089da7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806118245750611823826121d2565b5b9050919050565b61183c816118376118b1565b61224c565b50565b61184761229d565b6000611851611c43565b905060008160000160006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6118996118b1565b6040516118a69190613a06565b60405180910390a150565b600033905090565b6118c1610d45565b156118f8576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60006119706119d1565b9050600061197d84610a1e565b905082826000016000868152602001908152602001600020600101819055508281857fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff60405160405180910390a450505050565b60007f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800905090565b600080611a046119d1565b9050611a108484611223565b611aee57600181600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611a8a6118b1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050611af4565b60009150505b92915050565b600080611b056119d1565b9050611b118484611223565b15611bf057600081600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611b8c6118b1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a46001915050611bf6565b60009150505b92915050565b600080611c076122dd565b90508091505090565b611c18612308565b611c228383612348565b611c2b81612366565b505050565b8060359081611c3f91906145e1565b5050565b60007fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300905090565b3073ffffffffffffffffffffffffffffffffffffffff1663ab67aa58308585856040518563ffffffff1660e01b8152600401611caa94939291906146b3565b600060405180830381600087803b158015611cc457600080fd5b505af1158015611cd8573d6000803e3d6000fd5b50505050505050565b600082826078828290501115611d23576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d2c866118fa565b15611d63576040517f55c7e8ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d6b6118b1565b6033600088815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000611dc6610a6e565b73ffffffffffffffffffffffffffffffffffffffff1663780900dc886040518263ffffffff1660e01b8152600401611dfe9190613b12565b6020604051808303816000875af1158015611e1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e41919061418d565b9050611e7381888b8b8a8a604051602001611e5f94939291906146ff565b604051602081830303815290604052612466565b80935050505095945050505050565b6000611e8d826118fa565b611ecc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec3906147b1565b60405180910390fd5b6000611ed78361105a565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161491505092915050565b611f1c8484846124c1565b611f288484848461271c565b611f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5e90614843565b60405180910390fd5b50505050565b6060611f7761289e565b905090565b606060006001611f8b84612930565b01905060008167ffffffffffffffff811115611faa57611fa96134f9565b5b6040519080825280601f01601f191660200182016040528015611fdc5781602001600182028036833780820191505090505b509050600082602083010190505b60011561203f578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161203357612032614863565b5b04945060008503611fea575b819350505050919050565b6120526118b9565b600061205c611c43565b905060018160000160006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586120a46118b1565b6040516120b19190613a06565b60405180910390a150565b60006120c6610a6e565b73ffffffffffffffffffffffffffffffffffffffff1663dc48b34f30866040518363ffffffff1660e01b815260040161210092919061414f565b602060405180830381865afa15801561211d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612141919061418d565b90508073ffffffffffffffffffffffffffffffffffffffff16638fb33c3c84846040518363ffffffff1660e01b815260040161217e929190614892565b600060405180830381600087803b15801561219857600080fd5b505af11580156121ac573d6000803e3d6000fd5b505050506121cc61dead8560405180602001604052806000815250611c6b565b50505050565b60007f78afe0b2000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612245575061224482612a83565b5b9050919050565b6122568282611223565b6122995780826040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526004016122909291906148b6565b60405180910390fd5b5050565b6122a5610d45565b6122db576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0060001b905090565b612310612afd565b612346576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b612350612308565b61235a8282612b1d565b612362612b33565b5050565b61236e612308565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123d4576040517f05bb467c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123e16000801b826119f9565b5061240c7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6826119f9565b506124377f4aca127bf16f434830a404b92851a3555910944351935eae88740d1cef5ffaad826119f9565b506124627fe5fe4715ff8709ff44f5e6bb664620f9349f5f6ae81a532eba2a43b9598ba7eb826119f9565b5050565b6124708383612b3d565b61247d600084848461271c565b6124bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b390614843565b60405180910390fd5b505050565b8273ffffffffffffffffffffffffffffffffffffffff166124e18261105a565b73ffffffffffffffffffffffffffffffffffffffff1614612537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252e90614951565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259d906149e3565b60405180910390fd5b6125b1838383612d16565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126019190614a32565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126589190614a66565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612717838383612e8f565b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff163b1115612891578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026127616118b1565b8786866040518563ffffffff1660e01b815260040161278394939291906146b3565b6020604051808303816000875af19250505080156127bf57506040513d601f19601f820116820180604052508101906127bc9190614aaf565b60015b612841573d80600081146127ef576040519150601f19603f3d011682016040523d82523d6000602084013e6127f4565b606091505b506000815103612839576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283090614843565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612896565b600190505b949350505050565b6060603580546128ad90613bd3565b80601f01602080910402602001604051908101604052809291908181526020018280546128d990613bd3565b80156129265780601f106128fb57610100808354040283529160200191612926565b820191906000526020600020905b81548152906001019060200180831161290957829003601f168201915b5050505050905090565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061298e577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161298457612983614863565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106129cb576d04ee2d6d415b85acef810000000083816129c1576129c0614863565b5b0492506020810190505b662386f26fc1000083106129fa57662386f26fc1000083816129f0576129ef614863565b5b0492506010810190505b6305f5e1008310612a23576305f5e1008381612a1957612a18614863565b5b0492506008810190505b6127108310612a48576127108381612a3e57612a3d614863565b5b0492506004810190505b60648310612a6b5760648381612a6157612a60614863565b5b0492506002810190505b600a8310612a7a576001810190505b80915050919050565b60007ffe9d9303000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612af65750612af582612e94565b5b9050919050565b6000612b07611bfc565b60000160089054906101000a900460ff16905090565b612b25612308565b612b2f8282612ea6565b5050565b612b3b612308565b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba390614b28565b60405180910390fd5b612bb5816118fa565b15612bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bec90614b94565b60405180910390fd5b612c0160008383612d16565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c519190614a66565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612d1260008383612e8f565b5050565b612d1e6118b9565b612d29838383612ed2565b6000612d33610a6e565b73ffffffffffffffffffffffffffffffffffffffff1663dc48b34f30846040518363ffffffff1660e01b8152600401612d6d92919061414f565b602060405180830381865afa158015612d8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dae919061418d565b90503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612e1857508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612e52575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612e89576040517ff7e6817a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b505050565b6000612e9f82612f8a565b9050919050565b612eae612308565b8160009081612ebd91906145e1565b508060019081612ecd91906145e1565b505050565b61dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015612f4357503073ffffffffffffffffffffffffffffffffffffffff16612f2a8261105a565b73ffffffffffffffffffffffffffffffffffffffff1614155b15612f7a576040517fd5475a0b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612f85838383612f9c565b505050565b6000612f9582612fb4565b9050919050565b612fa46118b9565b612faf83838361302e565b505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480613027575061302682613033565b5b9050919050565b505050565b60007f95a63a27000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806130a657506130a5826130ad565b5b9050919050565b60007fb8950977000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061317857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061318857506131878261318f565b5b9050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6132428161320d565b811461324d57600080fd5b50565b60008135905061325f81613239565b92915050565b60006020828403121561327b5761327a613203565b5b600061328984828501613250565b91505092915050565b60008115159050919050565b6132a781613292565b82525050565b60006020820190506132c2600083018461329e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156133025780820151818401526020810190506132e7565b60008484015250505050565b6000601f19601f8301169050919050565b600061332a826132c8565b61333481856132d3565b93506133448185602086016132e4565b61334d8161330e565b840191505092915050565b60006020820190508181036000830152613372818461331f565b905092915050565b6000819050919050565b61338d8161337a565b82525050565b60006020820190506133a86000830184613384565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126133d3576133d26133ae565b5b8235905067ffffffffffffffff8111156133f0576133ef6133b3565b5b60208301915083600182028301111561340c5761340b6133b8565b5b9250929050565b6000806020838503121561342a57613429613203565b5b600083013567ffffffffffffffff81111561344857613447613208565b5b613454858286016133bd565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061348b82613460565b9050919050565b61349b81613480565b81146134a657600080fd5b50565b6000813590506134b881613492565b92915050565b6000819050919050565b6134d1816134be565b81146134dc57600080fd5b50565b6000813590506134ee816134c8565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6135318261330e565b810181811067ffffffffffffffff821117156135505761354f6134f9565b5b80604052505050565b60006135636131f9565b905061356f8282613528565b919050565b600067ffffffffffffffff82111561358f5761358e6134f9565b5b6135988261330e565b9050602081019050919050565b82818337600083830152505050565b60006135c76135c284613574565b613559565b9050828152602081018484840111156135e3576135e26134f4565b5b6135ee8482856135a5565b509392505050565b600082601f83011261360b5761360a6133ae565b5b813561361b8482602086016135b4565b91505092915050565b6000806000806080858703121561363e5761363d613203565b5b600061364c878288016134a9565b945050602061365d878288016134a9565b935050604061366e878288016134df565b925050606085013567ffffffffffffffff81111561368f5761368e613208565b5b61369b878288016135f6565b91505092959194509250565b6136b08161320d565b82525050565b60006020820190506136cb60008301846136a7565b92915050565b600080604083850312156136e8576136e7613203565b5b60006136f6858286016134df565b9250506020613707858286016134a9565b9150509250929050565b61371a8161337a565b811461372557600080fd5b50565b60008135905061373781613711565b92915050565b6000806040838503121561375457613753613203565b5b600061376285828601613728565b925050602061377385828601613728565b9150509250929050565b60006020828403121561379357613792613203565b5b60006137a184828501613728565b91505092915050565b600080604083850312156137c1576137c0613203565b5b60006137cf85828601613728565b92505060206137e0858286016134a9565b9150509250929050565b6000819050919050565b600061380f61380a61380584613460565b6137ea565b613460565b9050919050565b6000613821826137f4565b9050919050565b600061383382613816565b9050919050565b61384381613828565b82525050565b600060208201905061385e600083018461383a565b92915050565b60006020828403121561387a57613879613203565b5b600082013567ffffffffffffffff81111561389857613897613208565b5b6138a4848285016135f6565b91505092915050565b600067ffffffffffffffff8211156138c8576138c76134f9565b5b6138d18261330e565b9050602081019050919050565b60006138f16138ec846138ad565b613559565b90508281526020810184848401111561390d5761390c6134f4565b5b6139188482856135a5565b509392505050565b600082601f830112613935576139346133ae565b5b81356139458482602086016138de565b91505092915050565b60006020828403121561396457613963613203565b5b600082013567ffffffffffffffff81111561398257613981613208565b5b61398e84828501613920565b91505092915050565b6000806000604084860312156139b0576139af613203565b5b60006139be868287016134df565b935050602084013567ffffffffffffffff8111156139df576139de613208565b5b6139eb868287016133bd565b92509250509250925092565b613a0081613480565b82525050565b6000602082019050613a1b60008301846139f7565b92915050565b600080600080600060808688031215613a3d57613a3c613203565b5b6000613a4b888289016134a9565b9550506020613a5c888289016134a9565b9450506040613a6d888289016134df565b935050606086013567ffffffffffffffff811115613a8e57613a8d613208565b5b613a9a888289016133bd565b92509250509295509295909350565b600060208284031215613abf57613abe613203565b5b6000613acd848285016134df565b91505092915050565b600060208284031215613aec57613aeb613203565b5b6000613afa848285016134a9565b91505092915050565b613b0c816134be565b82525050565b6000602082019050613b276000830184613b03565b92915050565b600081519050919050565b600082825260208201905092915050565b6000613b5482613b2d565b613b5e8185613b38565b9350613b6e8185602086016132e4565b613b778161330e565b840191505092915050565b60006020820190508181036000830152613b9c8184613b49565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613beb57607f821691505b602082108103613bfe57613bfd613ba4565b5b50919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613c717fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613c34565b613c7b8683613c34565b95508019841693508086168417925050509392505050565b6000613cae613ca9613ca4846134be565b6137ea565b6134be565b9050919050565b6000819050919050565b613cc883613c93565b613cdc613cd482613cb5565b848454613c41565b825550505050565b600090565b613cf1613ce4565b613cfc818484613cbf565b505050565b5b81811015613d2057613d15600082613ce9565b600181019050613d02565b5050565b601f821115613d6557613d3681613c0f565b613d3f84613c24565b81016020851015613d4e578190505b613d62613d5a85613c24565b830182613d01565b50505b505050565b600082821c905092915050565b6000613d8860001984600802613d6a565b1980831691505092915050565b6000613da18383613d77565b9150826002028217905092915050565b613dbb8383613c04565b67ffffffffffffffff811115613dd457613dd36134f9565b5b613dde8254613bd3565b613de9828285613d24565b6000601f831160018114613e185760008415613e06578287013590505b613e108582613d95565b865550613e78565b601f198416613e2686613c0f565b60005b82811015613e4e57848901358255600182019150602085019450602081019050613e29565b86831015613e6b5784890135613e67601f891682613d77565b8355505b6001600288020188555050505b50505050505050565b6000613e8d8385613b38565b9350613e9a8385846135a5565b613ea38361330e565b840190509392505050565b6000604082019050613ec360008301866139f7565b8181036020830152613ed6818486613e81565b9050949350505050565b6000613ef3613eee84613574565b613559565b905082815260208101848484011115613f0f57613f0e6134f4565b5b613f1a8482856132e4565b509392505050565b600082601f830112613f3757613f366133ae565b5b8151613f47848260208601613ee0565b91505092915050565b6000613f5b82613460565b9050919050565b613f6b81613f50565b8114613f7657600080fd5b50565b600081519050613f8881613f62565b92915050565b60008060408385031215613fa557613fa4613203565b5b600083015167ffffffffffffffff811115613fc357613fc2613208565b5b613fcf85828601613f22565b9250506020613fe085828601613f79565b9150509250929050565b6000613ffd613ff8846138ad565b613559565b905082815260208101848484011115614019576140186134f4565b5b6140248482856132e4565b509392505050565b600082601f830112614041576140406133ae565b5b8151614051848260208601613fea565b91505092915050565b60008060006060848603121561407357614072613203565b5b600084015167ffffffffffffffff81111561409157614090613208565b5b61409d8682870161402c565b935050602084015167ffffffffffffffff8111156140be576140bd613208565b5b6140ca8682870161402c565b92505060406140db86828701613f79565b9150509250925092565b6000819050919050565b600067ffffffffffffffff82169050919050565b600061411e614119614114846140e5565b6137ea565b6140ef565b9050919050565b61412e81614103565b82525050565b60006020820190506141496000830184614125565b92915050565b600060408201905061416460008301856139f7565b6141716020830184613b03565b9392505050565b60008151905061418781613492565b92915050565b6000602082840312156141a3576141a2613203565b5b60006141b184828501614178565b91505092915050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006142166029836132d3565b9150614221826141ba565b604082019050919050565b6000602082019050818103600083015261424581614209565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b60006142a8602a836132d3565b91506142b38261424c565b604082019050919050565b600060208201905081810360008301526142d78161429b565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b600061433a6031836132d3565b9150614345826142de565b604082019050919050565b600060208201905081810360008301526143698161432d565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006143cc602f836132d3565b91506143d782614370565b604082019050919050565b600060208201905081810360008301526143fb816143bf565b9050919050565b600081905092915050565b6000614418826132c8565b6144228185614402565b93506144328185602086016132e4565b80840191505092915050565b600061444a828561440d565b9150614456828461440d565b91508190509392505050565b7f54726164655472757374546f6b656e4275726e61626c653a206163636570746560008201527f72206e6f742073657420666f7220746f6b656e00000000000000000000000000602082015250565b60006144be6033836132d3565b91506144c982614462565b604082019050919050565b600060208201905081810360008301526144ed816144b1565b9050919050565b7f54726164655472757374546f6b656e4275726e61626c653a2063616c6c65722060008201527f6e6f742061737369676e65642061636365707465720000000000000000000000602082015250565b60006145506035836132d3565b915061455b826144f4565b604082019050919050565b6000602082019050818103600083015261457f81614543565b9050919050565b60008190508160005260206000209050919050565b601f8211156145dc576145ad81614586565b6145b684613c24565b810160208510156145c5578190505b6145d96145d185613c24565b830182613d01565b50505b505050565b6145ea826132c8565b67ffffffffffffffff811115614603576146026134f9565b5b61460d8254613bd3565b61461882828561459b565b600060209050601f83116001811461464b5760008415614639578287015190505b6146438582613d95565b8655506146ab565b601f19841661465986614586565b60005b828110156146815784890151825560018201915060208501945060208101905061465c565b8683101561469e578489015161469a601f891682613d77565b8355505b6001600288020188555050505b505050505050565b60006080820190506146c860008301876139f7565b6146d560208301866139f7565b6146e26040830185613b03565b81810360608301526146f48184613b49565b905095945050505050565b600060608201905061471460008301876139f7565b61472160208301866139f7565b8181036040830152614734818486613e81565b905095945050505050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b600061479b602c836132d3565b91506147a68261473f565b604082019050919050565b600060208201905081810360008301526147ca8161478e565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600061482d6032836132d3565b9150614838826147d1565b604082019050919050565b6000602082019050818103600083015261485c81614820565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600060208201905081810360008301526148ad818486613e81565b90509392505050565b60006040820190506148cb60008301856139f7565b6148d86020830184613384565b9392505050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b600061493b6025836132d3565b9150614946826148df565b604082019050919050565b6000602082019050818103600083015261496a8161492e565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006149cd6024836132d3565b91506149d882614971565b604082019050919050565b600060208201905081810360008301526149fc816149c0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614a3d826134be565b9150614a48836134be565b9250828203905081811115614a6057614a5f614a03565b5b92915050565b6000614a71826134be565b9150614a7c836134be565b9250828201905080821115614a9457614a93614a03565b5b92915050565b600081519050614aa981613239565b92915050565b600060208284031215614ac557614ac4613203565b5b6000614ad384828501614a9a565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000614b126020836132d3565b9150614b1d82614adc565b602082019050919050565b60006020820190508181036000830152614b4181614b05565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614b7e601c836132d3565b9150614b8982614b48565b602082019050919050565b60006020820190508181036000830152614bad81614b71565b905091905056fea264697066735822122091a3e1f82ef57b41696d0d5abbe889411bd6cc1cd36eda8786e6b4c4bd04cb8b64736f6c63430008160033";
601
669
  const isSuperArgs = xs => xs.length > 1;
602
670
  class TradeTrustTokenStandard__factory extends _ethers.ContractFactory {
603
671
  constructor(...args) {
@@ -72,6 +72,11 @@ const _abi = [
72
72
  name: "NotInitializing",
73
73
  type: "error",
74
74
  },
75
+ {
76
+ inputs: [],
77
+ name: "NotTokenIssuer",
78
+ type: "error",
79
+ },
75
80
  {
76
81
  inputs: [],
77
82
  name: "RemarkLengthExceeded",
@@ -212,6 +217,31 @@ const _abi = [
212
217
  name: "RoleRevoked",
213
218
  type: "event",
214
219
  },
220
+ {
221
+ anonymous: false,
222
+ inputs: [
223
+ {
224
+ indexed: true,
225
+ internalType: "address",
226
+ name: "actor",
227
+ type: "address",
228
+ },
229
+ {
230
+ indexed: true,
231
+ internalType: "uint256",
232
+ name: "tokenId",
233
+ type: "uint256",
234
+ },
235
+ {
236
+ indexed: true,
237
+ internalType: "address",
238
+ name: "accepter",
239
+ type: "address",
240
+ },
241
+ ],
242
+ name: "TokenAccepterAssigned",
243
+ type: "event",
244
+ },
215
245
  {
216
246
  anonymous: false,
217
247
  inputs: [
@@ -445,6 +475,25 @@ const _abi = [
445
475
  stateMutability: "nonpayable",
446
476
  type: "function",
447
477
  },
478
+ {
479
+ inputs: [
480
+ {
481
+ internalType: "uint256",
482
+ name: "tokenId",
483
+ type: "uint256",
484
+ },
485
+ ],
486
+ name: "issuerOf",
487
+ outputs: [
488
+ {
489
+ internalType: "address",
490
+ name: "",
491
+ type: "address",
492
+ },
493
+ ],
494
+ stateMutability: "view",
495
+ type: "function",
496
+ },
448
497
  {
449
498
  inputs: [
450
499
  {
@@ -675,6 +724,24 @@ const _abi = [
675
724
  stateMutability: "nonpayable",
676
725
  type: "function",
677
726
  },
727
+ {
728
+ inputs: [
729
+ {
730
+ internalType: "uint256",
731
+ name: "tokenId",
732
+ type: "uint256",
733
+ },
734
+ {
735
+ internalType: "address",
736
+ name: "accepter",
737
+ type: "address",
738
+ },
739
+ ],
740
+ name: "setTokenAccepter",
741
+ outputs: [],
742
+ stateMutability: "nonpayable",
743
+ type: "function",
744
+ },
678
745
  {
679
746
  inputs: [
680
747
  {
@@ -720,6 +787,25 @@ const _abi = [
720
787
  stateMutability: "view",
721
788
  type: "function",
722
789
  },
790
+ {
791
+ inputs: [
792
+ {
793
+ internalType: "uint256",
794
+ name: "tokenId",
795
+ type: "uint256",
796
+ },
797
+ ],
798
+ name: "tokenAccepterOf",
799
+ outputs: [
800
+ {
801
+ internalType: "address",
802
+ name: "",
803
+ type: "address",
804
+ },
805
+ ],
806
+ stateMutability: "view",
807
+ type: "function",
808
+ },
723
809
  {
724
810
  inputs: [
725
811
  {
@@ -783,7 +869,7 @@ const _abi = [
783
869
  ] as const;
784
870
 
785
871
  const _bytecode =
786
- "0x60806040523480156200001157600080fd5b50600062000024620001ab60201b60201c565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015620000735750825b9050600060018367ffffffffffffffff16148015620000a9575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015620000b8575080155b15620000f0576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315620001415760018560000160086101000a81548160ff0219169083151502179055505b8315620001a05760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2600160405162000197919062000234565b60405180910390a15b505050505062000251565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b6000819050919050565b600067ffffffffffffffff82169050919050565b6000819050919050565b60006200021c620002166200021084620001d3565b620001f1565b620001dd565b9050919050565b6200022e81620001fb565b82525050565b60006020820190506200024b600083018462000223565b92915050565b6145a280620002616000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80636010a5e711610104578063a47d1f5e116100a2578063d539139311610071578063d539139314610556578063d547741f14610574578063e2339ea314610590578063fe9d9303146105ac576101cf565b8063a47d1f5e146104ce578063a7f0b3de146104ec578063ab67aa581461050a578063c87b56dd14610526576101cf565b80637fb2977d116100de5780637fb2977d1461044457806391d148541461046257806395d89b4114610492578063a217fddf146104b0576101cf565b80636010a5e7146103b45780636352211e146103e457806370a0823114610414576101cf565b80632f2ff15d11610171578063439fab911161014b578063439fab911461032e57806355f804b31461034a5780635c975abb146103665780635e089da714610384576101cf565b80632f2ff15d146102d8578063325689f9146102f457806336568abe14610312576101cf565b806314e30d20116101ad57806314e30d2014610240578063150b7a021461025c5780631e4e00911461028c578063248a9ca3146102a8576101cf565b806301ffc9a7146101d457806306fdde031461020457806311d4d7b514610222575b600080fd5b6101ee60048036038101906101e99190612d81565b6105c8565b6040516101fb9190612dc9565b60405180910390f35b61020c610622565b6040516102199190612e74565b60405180910390f35b61022a6106b4565b6040516102379190612eaf565b60405180910390f35b61025a60048036038101906102559190612f2f565b6106d8565b005b61027660048036038101906102719190613140565b610781565b60405161028391906131d2565b60405180910390f35b6102a660048036038101906102a19190613219565b610795565b005b6102c260048036038101906102bd9190613259565b6107b1565b6040516102cf9190612eaf565b60405180910390f35b6102f260048036038101906102ed9190613286565b6107df565b005b6102fc610801565b6040516103099190613325565b60405180910390f35b61032c60048036038101906103279190613286565b61082b565b005b61034860048036038101906103439190613340565b6108a6565b005b610364600480360381019061035f919061342a565b610abe565b005b61036e610ad8565b60405161037b9190612dc9565b60405180910390f35b61039e60048036038101906103999190613473565b610afd565b6040516103ab91906134e2565b60405180910390f35b6103ce60048036038101906103c991906134fd565b610d01565b6040516103db91906134e2565b60405180910390f35b6103fe60048036038101906103f99190613585565b610d4e565b60405161040b91906134e2565b60405180910390f35b61042e600480360381019061042991906135b2565b610dff565b60405161043b91906135ee565b60405180910390f35b61044c610eb6565b6040516104599190612eaf565b60405180910390f35b61047c60048036038101906104779190613286565b610eda565b6040516104899190612dc9565b60405180910390f35b61049a610f53565b6040516104a79190612e74565b60405180910390f35b6104b8610fe5565b6040516104c59190612eaf565b60405180910390f35b6104d6610fec565b6040516104e3919061365e565b60405180910390f35b6104f461107a565b60405161050191906135ee565b60405180910390f35b610524600480360381019061051f9190613140565b611084565b005b610540600480360381019061053b9190613585565b6110e6565b60405161054d9190612e74565b60405180910390f35b61055e61118d565b60405161056b9190612eaf565b60405180910390f35b61058e60048036038101906105899190613286565b6111b1565b005b6105aa60048036038101906105a59190612f2f565b6111d3565b005b6105c660048036038101906105c19190613473565b61127c565b005b6000807bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061061b575061061a82611301565b5b9050919050565b606060008054610631906136af565b80601f016020809104026020016040519081016040528092919081815260200182805461065d906136af565b80156106aa5780601f1061067f576101008083540402835291602001916106aa565b820191906000526020600020905b81548152906001019060200180831161068d57829003601f168201915b5050505050905090565b7f4aca127bf16f434830a404b92851a3555910944351935eae88740d1cef5ffaad81565b6000801b6106e58161137b565b82826078828290501115610725576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61072d61138f565b84846002918261073e92919061388d565b507f2dfab123508590223226491c2b89d1862427468e1b0c1cd660e5622e63eaf3eb3386866040516107729392919061398a565b60405180910390a15050505050565b600063150b7a0260e01b9050949350505050565b6000801b6107a28161137b565b6107ac8383611401565b505050565b6000806107bc61146c565b905080600001600084815260200190815260200160002060010154915050919050565b6107e8826107b1565b6107f18161137b565b6107fb8383611494565b50505050565b6000603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610833611595565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610897576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108a1828261159d565b505050565b60006108b061169f565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff161480156108fe5750825b9050600060018367ffffffffffffffff16148015610933575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015610941575080155b15610978576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083156109c85760018560000160086101000a81548160ff0219169083151502179055505b600080878060200190518101906109df9190613a6a565b915091506000806000848060200190518101906109fc9190613b36565b9250925092504360358190555083603460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a558383836116c7565b50505050508315610ab65760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051610aad9190613c10565b60405180910390a15b505050505050565b6000801b610acb8161137b565b610ad4826116e7565b5050565b600080610ae36116fa565b90508060000160009054906101000a900460ff1691505090565b6000610b07611722565b7f4aca127bf16f434830a404b92851a3555910944351935eae88740d1cef5ffaad610b318161137b565b83836078828290501115610b71576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b7a87611763565b610bb0576040517f3f6cc76800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16610bd088610d4e565b73ffffffffffffffffffffffffffffffffffffffff1614610c1d576040517fd5475a0b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610c27610801565b73ffffffffffffffffffffffffffffffffffffffff1663dc48b34f308a6040518363ffffffff1660e01b8152600401610c61929190613c2b565b602060405180830381865afa158015610c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca29190613c69565b9050610cf3818989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506117cf565b809450505050509392505050565b6000610d0b611722565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610d358161137b565b610d428787878787611845565b91505095945050505050565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ded90613d08565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6690613d9a565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7fe5fe4715ff8709ff44f5e6bb664620f9349f5f6ae81a532eba2a43b9598ba7eb81565b600080610ee561146c565b905080600001600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691505092915050565b606060018054610f62906136af565b80601f0160208091040260200160405190810160405280929190818152602001828054610f8e906136af565b8015610fdb5780601f10610fb057610100808354040283529160200191610fdb565b820191906000526020600020905b815481529060010190602001808311610fbe57829003601f168201915b5050505050905090565b6000801b81565b60028054610ff9906136af565b80601f0160208091040260200160405190810160405280929190818152602001828054611025906136af565b80156110725780601f1061104757610100808354040283529160200191611072565b820191906000526020600020905b81548152906001019060200180831161105557829003601f168201915b505050505081565b6000603554905090565b61109561108f611595565b8361198d565b6110d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cb90613e2c565b60405180910390fd5b6110e084848484611a1c565b50505050565b60606110f182611763565b611130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112790613ebe565b60405180910390fd5b600061113a611a78565b9050600081511161115a5760405180602001604052806000815250611185565b8061116484611a87565b604051602001611175929190613f1a565b6040516020818303038152906040525b915050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6111ba826107b1565b6111c38161137b565b6111cd838361159d565b50505050565b6000801b6111e08161137b565b82826078828290501115611220576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611228611b55565b84846002918261123992919061388d565b507f861794963cbbb129f46f21f0076eb396185f0dcecba7890e911f3d6508d8d45f33868660405161126d9392919061398a565b60405180910390a15050505050565b611284611722565b7fe5fe4715ff8709ff44f5e6bb664620f9349f5f6ae81a532eba2a43b9598ba7eb6112ae8161137b565b828260788282905011156112ee576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112f9868686611bc7565b505050505050565b60007f5e089da7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611374575061137382611cdd565b5b9050919050565b61138c81611387611595565b611d57565b50565b611397611da8565b60006113a16116fa565b905060008160000160006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6113e9611595565b6040516113f691906134e2565b60405180910390a150565b600061140b61146c565b90506000611418846107b1565b905082826000016000868152602001908152602001600020600101819055508281857fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff60405160405180910390a450505050565b60007f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800905090565b60008061149f61146c565b90506114ab8484610eda565b61158957600181600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611525611595565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061158f565b60009150505b92915050565b600033905090565b6000806115a861146c565b90506115b48484610eda565b1561169357600081600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061162f611595565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a46001915050611699565b60009150505b92915050565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b6116cf611de8565b6116d98383611e28565b6116e281611e46565b505050565b80603390816116f69190613f99565b5050565b60007fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300905090565b61172a610ad8565b15611761576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff1663ab67aa58308585856040518563ffffffff1660e01b815260040161180e949392919061406b565b600060405180830381600087803b15801561182857600080fd5b505af115801561183c573d6000803e3d6000fd5b50505050505050565b600082826078828290501115611887576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61189086611763565b156118c7576040517f55c7e8ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006118d1610801565b73ffffffffffffffffffffffffffffffffffffffff1663780900dc886040518263ffffffff1660e01b815260040161190991906135ee565b6020604051808303816000875af1158015611928573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194c9190613c69565b905061197e81888b8b8a8a60405160200161196a94939291906140b7565b604051602081830303815290604052611f46565b80935050505095945050505050565b600061199882611763565b6119d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ce90614169565b60405180910390fd5b60006119e283610d4e565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161491505092915050565b611a27848484611fa1565b611a33848484846121fc565b611a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a69906141fb565b60405180910390fd5b50505050565b6060611a8261237e565b905090565b606060006001611a9684612410565b01905060008167ffffffffffffffff811115611ab557611ab4613015565b5b6040519080825280601f01601f191660200182016040528015611ae75781602001600182028036833780820191505090505b509050600082602001820190505b600115611b4a578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611b3e57611b3d61421b565b5b04945060008503611af5575b819350505050919050565b611b5d611722565b6000611b676116fa565b905060018160000160006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611baf611595565b604051611bbc91906134e2565b60405180910390a150565b6000611bd1610801565b73ffffffffffffffffffffffffffffffffffffffff1663dc48b34f30866040518363ffffffff1660e01b8152600401611c0b929190613c2b565b602060405180830381865afa158015611c28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4c9190613c69565b90508073ffffffffffffffffffffffffffffffffffffffff16638fb33c3c84846040518363ffffffff1660e01b8152600401611c8992919061424a565b600060405180830381600087803b158015611ca357600080fd5b505af1158015611cb7573d6000803e3d6000fd5b50505050611cd761dead85604051806020016040528060008152506117cf565b50505050565b60007f6010a5e7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d505750611d4f82612563565b5b9050919050565b611d618282610eda565b611da45780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401611d9b92919061426e565b60405180910390fd5b5050565b611db0610ad8565b611de6576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b611df06125dd565b611e26576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b611e30611de8565b611e3a82826125fd565b611e42612613565b5050565b611e4e611de8565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611eb4576040517f05bb467c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ec16000801b82611494565b50611eec7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a682611494565b50611f177f4aca127bf16f434830a404b92851a3555910944351935eae88740d1cef5ffaad82611494565b50611f427fe5fe4715ff8709ff44f5e6bb664620f9349f5f6ae81a532eba2a43b9598ba7eb82611494565b5050565b611f508383612625565b611f5d60008484846121fc565b611f9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f93906141fb565b60405180910390fd5b505050565b8273ffffffffffffffffffffffffffffffffffffffff16611fc182610d4e565b73ffffffffffffffffffffffffffffffffffffffff1614612017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200e90614309565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207d9061439b565b60405180910390fd5b6120918383836127fe565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120e191906143ea565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612138919061441e565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46121f7838383612977565b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff163b1115612371578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612241611595565b8786866040518563ffffffff1660e01b8152600401612263949392919061406b565b6020604051808303816000875af192505050801561229f57506040513d601f19601f8201168201806040525081019061229c9190614467565b60015b612321573d80600081146122cf576040519150601f19603f3d011682016040523d82523d6000602084013e6122d4565b606091505b506000815103612319576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612310906141fb565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612376565b600190505b949350505050565b60606033805461238d906136af565b80601f01602080910402602001604051908101604052809291908181526020018280546123b9906136af565b80156124065780601f106123db57610100808354040283529160200191612406565b820191906000526020600020905b8154815290600101906020018083116123e957829003601f168201915b5050505050905090565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061246e577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816124645761246361421b565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106124ab576d04ee2d6d415b85acef810000000083816124a1576124a061421b565b5b0492506020810190505b662386f26fc1000083106124da57662386f26fc1000083816124d0576124cf61421b565b5b0492506010810190505b6305f5e1008310612503576305f5e10083816124f9576124f861421b565b5b0492506008810190505b612710831061252857612710838161251e5761251d61421b565b5b0492506004810190505b6064831061254b57606483816125415761254061421b565b5b0492506002810190505b600a831061255a576001810190505b80915050919050565b60007ffe9d9303000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806125d657506125d58261297c565b5b9050919050565b60006125e761169f565b60000160089054906101000a900460ff16905090565b612605611de8565b61260f828261298e565b5050565b61261b611de8565b6126236129ba565b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268b906144e0565b60405180910390fd5b61269d81611763565b156126dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d49061454c565b60405180910390fd5b6126e9600083836127fe565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612739919061441e565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46127fa60008383612977565b5050565b612806611722565b6128118383836129ee565b600061281b610801565b73ffffffffffffffffffffffffffffffffffffffff1663dc48b34f30846040518363ffffffff1660e01b8152600401612855929190613c2b565b602060405180830381865afa158015612872573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128969190613c69565b90503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561290057508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561293a575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612971576040517ff7e6817a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b505050565b600061298782612aa6565b9050919050565b612996611de8565b81600090816129a59190613f99565b5080600190816129b59190613f99565b505050565b6129c2611de8565b60006129cc6116fa565b905060008160000160006101000a81548160ff02191690831515021790555050565b61dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015612a5f57503073ffffffffffffffffffffffffffffffffffffffff16612a4682610d4e565b73ffffffffffffffffffffffffffffffffffffffff1614155b15612a96576040517fd5475a0b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612aa1838383612ab8565b505050565b6000612ab182612ad0565b9050919050565b612ac0611722565b612acb838383612b4a565b505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612b435750612b4282612b4f565b5b9050919050565b505050565b60007f95a63a27000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612bc25750612bc182612bc9565b5b9050919050565b60007fb8950977000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612c9457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612ca45750612ca382612cab565b5b9050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612d5e81612d29565b8114612d6957600080fd5b50565b600081359050612d7b81612d55565b92915050565b600060208284031215612d9757612d96612d1f565b5b6000612da584828501612d6c565b91505092915050565b60008115159050919050565b612dc381612dae565b82525050565b6000602082019050612dde6000830184612dba565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e1e578082015181840152602081019050612e03565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e4682612de4565b612e508185612def565b9350612e60818560208601612e00565b612e6981612e2a565b840191505092915050565b60006020820190508181036000830152612e8e8184612e3b565b905092915050565b6000819050919050565b612ea981612e96565b82525050565b6000602082019050612ec46000830184612ea0565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612eef57612eee612eca565b5b8235905067ffffffffffffffff811115612f0c57612f0b612ecf565b5b602083019150836001820283011115612f2857612f27612ed4565b5b9250929050565b60008060208385031215612f4657612f45612d1f565b5b600083013567ffffffffffffffff811115612f6457612f63612d24565b5b612f7085828601612ed9565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612fa782612f7c565b9050919050565b612fb781612f9c565b8114612fc257600080fd5b50565b600081359050612fd481612fae565b92915050565b6000819050919050565b612fed81612fda565b8114612ff857600080fd5b50565b60008135905061300a81612fe4565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61304d82612e2a565b810181811067ffffffffffffffff8211171561306c5761306b613015565b5b80604052505050565b600061307f612d15565b905061308b8282613044565b919050565b600067ffffffffffffffff8211156130ab576130aa613015565b5b6130b482612e2a565b9050602081019050919050565b82818337600083830152505050565b60006130e36130de84613090565b613075565b9050828152602081018484840111156130ff576130fe613010565b5b61310a8482856130c1565b509392505050565b600082601f83011261312757613126612eca565b5b81356131378482602086016130d0565b91505092915050565b6000806000806080858703121561315a57613159612d1f565b5b600061316887828801612fc5565b945050602061317987828801612fc5565b935050604061318a87828801612ffb565b925050606085013567ffffffffffffffff8111156131ab576131aa612d24565b5b6131b787828801613112565b91505092959194509250565b6131cc81612d29565b82525050565b60006020820190506131e760008301846131c3565b92915050565b6131f681612e96565b811461320157600080fd5b50565b600081359050613213816131ed565b92915050565b600080604083850312156132305761322f612d1f565b5b600061323e85828601613204565b925050602061324f85828601613204565b9150509250929050565b60006020828403121561326f5761326e612d1f565b5b600061327d84828501613204565b91505092915050565b6000806040838503121561329d5761329c612d1f565b5b60006132ab85828601613204565b92505060206132bc85828601612fc5565b9150509250929050565b6000819050919050565b60006132eb6132e66132e184612f7c565b6132c6565b612f7c565b9050919050565b60006132fd826132d0565b9050919050565b600061330f826132f2565b9050919050565b61331f81613304565b82525050565b600060208201905061333a6000830184613316565b92915050565b60006020828403121561335657613355612d1f565b5b600082013567ffffffffffffffff81111561337457613373612d24565b5b61338084828501613112565b91505092915050565b600067ffffffffffffffff8211156133a4576133a3613015565b5b6133ad82612e2a565b9050602081019050919050565b60006133cd6133c884613389565b613075565b9050828152602081018484840111156133e9576133e8613010565b5b6133f48482856130c1565b509392505050565b600082601f83011261341157613410612eca565b5b81356134218482602086016133ba565b91505092915050565b6000602082840312156134405761343f612d1f565b5b600082013567ffffffffffffffff81111561345e5761345d612d24565b5b61346a848285016133fc565b91505092915050565b60008060006040848603121561348c5761348b612d1f565b5b600061349a86828701612ffb565b935050602084013567ffffffffffffffff8111156134bb576134ba612d24565b5b6134c786828701612ed9565b92509250509250925092565b6134dc81612f9c565b82525050565b60006020820190506134f760008301846134d3565b92915050565b60008060008060006080868803121561351957613518612d1f565b5b600061352788828901612fc5565b955050602061353888828901612fc5565b945050604061354988828901612ffb565b935050606086013567ffffffffffffffff81111561356a57613569612d24565b5b61357688828901612ed9565b92509250509295509295909350565b60006020828403121561359b5761359a612d1f565b5b60006135a984828501612ffb565b91505092915050565b6000602082840312156135c8576135c7612d1f565b5b60006135d684828501612fc5565b91505092915050565b6135e881612fda565b82525050565b600060208201905061360360008301846135df565b92915050565b600081519050919050565b600082825260208201905092915050565b600061363082613609565b61363a8185613614565b935061364a818560208601612e00565b61365381612e2a565b840191505092915050565b600060208201905081810360008301526136788184613625565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806136c757607f821691505b6020821081036136da576136d9613680565b5b50919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261374d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613710565b6137578683613710565b95508019841693508086168417925050509392505050565b600061378a61378561378084612fda565b6132c6565b612fda565b9050919050565b6000819050919050565b6137a48361376f565b6137b86137b082613791565b84845461371d565b825550505050565b600090565b6137cd6137c0565b6137d881848461379b565b505050565b5b818110156137fc576137f16000826137c5565b6001810190506137de565b5050565b601f82111561384157613812816136eb565b61381b84613700565b8101602085101561382a578190505b61383e61383685613700565b8301826137dd565b50505b505050565b600082821c905092915050565b600061386460001984600802613846565b1980831691505092915050565b600061387d8383613853565b9150826002028217905092915050565b61389783836136e0565b67ffffffffffffffff8111156138b0576138af613015565b5b6138ba82546136af565b6138c5828285613800565b6000601f8311600181146138f457600084156138e2578287013590505b6138ec8582613871565b865550613954565b601f198416613902866136eb565b60005b8281101561392a57848901358255600182019150602085019450602081019050613905565b868310156139475784890135613943601f891682613853565b8355505b6001600288020188555050505b50505050505050565b60006139698385613614565b93506139768385846130c1565b61397f83612e2a565b840190509392505050565b600060408201905061399f60008301866134d3565b81810360208301526139b281848661395d565b9050949350505050565b60006139cf6139ca84613090565b613075565b9050828152602081018484840111156139eb576139ea613010565b5b6139f6848285612e00565b509392505050565b600082601f830112613a1357613a12612eca565b5b8151613a238482602086016139bc565b91505092915050565b6000613a3782612f7c565b9050919050565b613a4781613a2c565b8114613a5257600080fd5b50565b600081519050613a6481613a3e565b92915050565b60008060408385031215613a8157613a80612d1f565b5b600083015167ffffffffffffffff811115613a9f57613a9e612d24565b5b613aab858286016139fe565b9250506020613abc85828601613a55565b9150509250929050565b6000613ad9613ad484613389565b613075565b905082815260208101848484011115613af557613af4613010565b5b613b00848285612e00565b509392505050565b600082601f830112613b1d57613b1c612eca565b5b8151613b2d848260208601613ac6565b91505092915050565b600080600060608486031215613b4f57613b4e612d1f565b5b600084015167ffffffffffffffff811115613b6d57613b6c612d24565b5b613b7986828701613b08565b935050602084015167ffffffffffffffff811115613b9a57613b99612d24565b5b613ba686828701613b08565b9250506040613bb786828701613a55565b9150509250925092565b6000819050919050565b600067ffffffffffffffff82169050919050565b6000613bfa613bf5613bf084613bc1565b6132c6565b613bcb565b9050919050565b613c0a81613bdf565b82525050565b6000602082019050613c256000830184613c01565b92915050565b6000604082019050613c4060008301856134d3565b613c4d60208301846135df565b9392505050565b600081519050613c6381612fae565b92915050565b600060208284031215613c7f57613c7e612d1f565b5b6000613c8d84828501613c54565b91505092915050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b6000613cf2602983612def565b9150613cfd82613c96565b604082019050919050565b60006020820190508181036000830152613d2181613ce5565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000613d84602a83612def565b9150613d8f82613d28565b604082019050919050565b60006020820190508181036000830152613db381613d77565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000613e16603183612def565b9150613e2182613dba565b604082019050919050565b60006020820190508181036000830152613e4581613e09565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613ea8602f83612def565b9150613eb382613e4c565b604082019050919050565b60006020820190508181036000830152613ed781613e9b565b9050919050565b600081905092915050565b6000613ef482612de4565b613efe8185613ede565b9350613f0e818560208601612e00565b80840191505092915050565b6000613f268285613ee9565b9150613f328284613ee9565b91508190509392505050565b60008190508160005260206000209050919050565b601f821115613f9457613f6581613f3e565b613f6e84613700565b81016020851015613f7d578190505b613f91613f8985613700565b8301826137dd565b50505b505050565b613fa282612de4565b67ffffffffffffffff811115613fbb57613fba613015565b5b613fc582546136af565b613fd0828285613f53565b600060209050601f8311600181146140035760008415613ff1578287015190505b613ffb8582613871565b865550614063565b601f19841661401186613f3e565b60005b8281101561403957848901518255600182019150602085019450602081019050614014565b868310156140565784890151614052601f891682613853565b8355505b6001600288020188555050505b505050505050565b600060808201905061408060008301876134d3565b61408d60208301866134d3565b61409a60408301856135df565b81810360608301526140ac8184613625565b905095945050505050565b60006060820190506140cc60008301876134d3565b6140d960208301866134d3565b81810360408301526140ec81848661395d565b905095945050505050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000614153602c83612def565b915061415e826140f7565b604082019050919050565b6000602082019050818103600083015261418281614146565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006141e5603283612def565b91506141f082614189565b604082019050919050565b60006020820190508181036000830152614214816141d8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000602082019050818103600083015261426581848661395d565b90509392505050565b600060408201905061428360008301856134d3565b6142906020830184612ea0565b9392505050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b60006142f3602583612def565b91506142fe82614297565b604082019050919050565b60006020820190508181036000830152614322816142e6565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614385602483612def565b915061439082614329565b604082019050919050565b600060208201905081810360008301526143b481614378565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006143f582612fda565b915061440083612fda565b9250828203905081811115614418576144176143bb565b5b92915050565b600061442982612fda565b915061443483612fda565b925082820190508082111561444c5761444b6143bb565b5b92915050565b60008151905061446181612d55565b92915050565b60006020828403121561447d5761447c612d1f565b5b600061448b84828501614452565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006144ca602083612def565b91506144d582614494565b602082019050919050565b600060208201905081810360008301526144f9816144bd565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614536601c83612def565b915061454182614500565b602082019050919050565b6000602082019050818103600083015261456581614529565b905091905056fea2646970667358221220c8c47ea15779c19146e50f1bccd5c8e5337034b28f513276744af0c21532b11464736f6c63430008160033";
872
+ "0x60806040523480156200001157600080fd5b50600062000024620001ab60201b60201c565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015620000735750825b9050600060018367ffffffffffffffff16148015620000a9575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015620000b8575080155b15620000f0576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315620001415760018560000160086101000a81548160ff0219169083151502179055505b8315620001a05760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2600160405162000197919062000253565b60405180910390a15b505050505062000270565b600080620001be620001c760201b60201c565b90508091505090565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0060001b905090565b6000819050919050565b600067ffffffffffffffff82169050919050565b6000819050919050565b60006200023b620002356200022f84620001f2565b62000210565b620001fc565b9050919050565b6200024d816200021a565b82525050565b60006020820190506200026a600083018462000242565b92915050565b614bea80620002806000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80636352211e1161010f578063a4e2ee11116100a2578063d539139311610071578063d5391393146105f3578063d547741f14610611578063e2339ea31461062d578063fe9d930314610649576101f0565b8063a4e2ee1114610559578063a7f0b3de14610589578063ab67aa58146105a7578063c87b56dd146105c3576101f0565b806391d14854116100de57806391d14854146104cf57806395d89b41146104ff578063a217fddf1461051d578063a47d1f5e1461053b576101f0565b80636352211e146104215780636f0fac8e1461045157806370a08231146104815780637fb2977d146104b1576101f0565b80632f2ff15d1161018757806355f804b31161015657806355f804b3146103875780635c975abb146103a35780635e089da7146103c15780636010a5e7146103f1576101f0565b80632f2ff15d14610315578063325689f91461033157806336568abe1461034f578063439fab911461036b576101f0565b8063150b7a02116101c3578063150b7a021461027d57806318bf4555146102ad5780631e4e0091146102c9578063248a9ca3146102e5576101f0565b806301ffc9a7146101f557806306fdde031461022557806311d4d7b51461024357806314e30d2014610261575b600080fd5b61020f600480360381019061020a9190613265565b610665565b60405161021c91906132ad565b60405180910390f35b61022d6106bf565b60405161023a9190613358565b60405180910390f35b61024b610751565b6040516102589190613393565b60405180910390f35b61027b60048036038101906102769190613413565b610775565b005b61029760048036038101906102929190613624565b610825565b6040516102a491906136b6565b60405180910390f35b6102c760048036038101906102c291906136d1565b610839565b005b6102e360048036038101906102de919061373d565b610a02565b005b6102ff60048036038101906102fa919061377d565b610a1e565b60405161030c9190613393565b60405180910390f35b61032f600480360381019061032a91906137aa565b610a4c565b005b610339610a6e565b6040516103469190613849565b60405180910390f35b610369600480360381019061036491906137aa565b610a98565b005b61038560048036038101906103809190613864565b610b13565b005b6103a1600480360381019061039c919061394e565b610d2b565b005b6103ab610d45565b6040516103b891906132ad565b60405180910390f35b6103db60048036038101906103d69190613997565b610d6a565b6040516103e89190613a06565b60405180910390f35b61040b60048036038101906104069190613a21565b61100d565b6040516104189190613a06565b60405180910390f35b61043b60048036038101906104369190613aa9565b61105a565b6040516104489190613a06565b60405180910390f35b61046b60048036038101906104669190613aa9565b61110b565b6040516104789190613a06565b60405180910390f35b61049b60048036038101906104969190613ad6565b611148565b6040516104a89190613b12565b60405180910390f35b6104b96111ff565b6040516104c69190613393565b60405180910390f35b6104e960048036038101906104e491906137aa565b611223565b6040516104f691906132ad565b60405180910390f35b61050761129c565b6040516105149190613358565b60405180910390f35b61052561132e565b6040516105329190613393565b60405180910390f35b610543611335565b6040516105509190613b82565b60405180910390f35b610573600480360381019061056e9190613aa9565b6113c3565b6040516105809190613a06565b60405180910390f35b610591611400565b60405161059e9190613b12565b60405180910390f35b6105c160048036038101906105bc9190613624565b61140a565b005b6105dd60048036038101906105d89190613aa9565b61146c565b6040516105ea9190613358565b60405180910390f35b6105fb611513565b6040516106089190613393565b60405180910390f35b61062b600480360381019061062691906137aa565b611537565b005b61064760048036038101906106429190613413565b611559565b005b610663600480360381019061065e9190613997565b611609565b005b6000807bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106b857506106b7826117b1565b5b9050919050565b6060600080546106ce90613bd3565b80601f01602080910402602001604051908101604052809291908181526020018280546106fa90613bd3565b80156107475780601f1061071c57610100808354040283529160200191610747565b820191906000526020600020905b81548152906001019060200180831161072a57829003601f168201915b5050505050905090565b7f4aca127bf16f434830a404b92851a3555910944351935eae88740d1cef5ffaad81565b6000801b6107828161182b565b828260788282905011156107c2576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107ca61183f565b8484600291826107db929190613db1565b507f2dfab123508590223226491c2b89d1862427468e1b0c1cd660e5622e63eaf3eb6108056118b1565b868660405161081693929190613eae565b60405180910390a15050505050565b600063150b7a0260e01b9050949350505050565b6108416118b9565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661086b8161182b565b610874836118fa565b6108aa576040517f3f6cc76800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108b26118b1565b73ffffffffffffffffffffffffffffffffffffffff166033600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610949576040517ffef57ea300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816034600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16836109bb6118b1565b73ffffffffffffffffffffffffffffffffffffffff167f066072621ea7f47380c761f70a3169016f0f5f293dccdf650318fc6bae08488260405160405180910390a4505050565b6000801b610a0f8161182b565b610a198383611966565b505050565b600080610a296119d1565b905080600001600084815260200190815260200160002060010154915050919050565b610a5582610a1e565b610a5e8161182b565b610a6883836119f9565b50505050565b6000603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610aa06118b1565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b04576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b0e8282611afa565b505050565b6000610b1d611bfc565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015610b6b5750825b9050600060018367ffffffffffffffff16148015610ba0575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015610bae575080155b15610be5576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315610c355760018560000160086101000a81548160ff0219169083151502179055505b60008087806020019051810190610c4c9190613f8e565b91509150600080600084806020019051810190610c69919061405a565b9250925092504360378190555083603660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610cc2838383611c10565b50505050508315610d235760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051610d1a9190614134565b60405180910390a15b505050505050565b6000801b610d388161182b565b610d4182611c30565b5050565b600080610d50611c43565b90508060000160009054906101000a900460ff1691505090565b6000610d746118b9565b7f4aca127bf16f434830a404b92851a3555910944351935eae88740d1cef5ffaad610d9e8161182b565b83836078828290501115610dde576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610de7876118fa565b610e1d576040517f3f6cc76800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16610e3d8861105a565b73ffffffffffffffffffffffffffffffffffffffff1614610e8a576040517fd5475a0b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e926118b1565b73ffffffffffffffffffffffffffffffffffffffff166033600089815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f29576040517ffef57ea300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f33610a6e565b73ffffffffffffffffffffffffffffffffffffffff1663dc48b34f308a6040518363ffffffff1660e01b8152600401610f6d92919061414f565b602060405180830381865afa158015610f8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fae919061418d565b9050610fff818989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611c6b565b809450505050509392505050565b60006110176118b9565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66110418161182b565b61104e8787878787611ce1565b91505095945050505050565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611102576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f99061422c565b60405180910390fd5b80915050919050565b60006034600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111af906142be565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7fe5fe4715ff8709ff44f5e6bb664620f9349f5f6ae81a532eba2a43b9598ba7eb81565b60008061122e6119d1565b905080600001600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691505092915050565b6060600180546112ab90613bd3565b80601f01602080910402602001604051908101604052809291908181526020018280546112d790613bd3565b80156113245780601f106112f957610100808354040283529160200191611324565b820191906000526020600020905b81548152906001019060200180831161130757829003601f168201915b5050505050905090565b6000801b81565b6002805461134290613bd3565b80601f016020809104026020016040519081016040528092919081815260200182805461136e90613bd3565b80156113bb5780601f10611390576101008083540402835291602001916113bb565b820191906000526020600020905b81548152906001019060200180831161139e57829003601f168201915b505050505081565b60006033600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000603754905090565b61141b6114156118b1565b83611e82565b61145a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145190614350565b60405180910390fd5b61146684848484611f11565b50505050565b6060611477826118fa565b6114b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ad906143e2565b60405180910390fd5b60006114c0611f6d565b905060008151116114e0576040518060200160405280600081525061150b565b806114ea84611f7c565b6040516020016114fb92919061443e565b6040516020818303038152906040525b915050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61154082610a1e565b6115498161182b565b6115538383611afa565b50505050565b6000801b6115668161182b565b828260788282905011156115a6576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115ae61204a565b8484600291826115bf929190613db1565b507f861794963cbbb129f46f21f0076eb396185f0dcecba7890e911f3d6508d8d45f6115e96118b1565b86866040516115fa93929190613eae565b60405180910390a15050505050565b6116116118b9565b7fe5fe4715ff8709ff44f5e6bb664620f9349f5f6ae81a532eba2a43b9598ba7eb61163b8161182b565b8282607882829050111561167b576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006116856118b1565b905060006034600089815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361172e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611725906144d4565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461179c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179390614566565b60405180910390fd5b6117a78888886120bc565b5050505050505050565b60007f5e089da7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806118245750611823826121d2565b5b9050919050565b61183c816118376118b1565b61224c565b50565b61184761229d565b6000611851611c43565b905060008160000160006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6118996118b1565b6040516118a69190613a06565b60405180910390a150565b600033905090565b6118c1610d45565b156118f8576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60006119706119d1565b9050600061197d84610a1e565b905082826000016000868152602001908152602001600020600101819055508281857fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff60405160405180910390a450505050565b60007f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800905090565b600080611a046119d1565b9050611a108484611223565b611aee57600181600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611a8a6118b1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050611af4565b60009150505b92915050565b600080611b056119d1565b9050611b118484611223565b15611bf057600081600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611b8c6118b1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a46001915050611bf6565b60009150505b92915050565b600080611c076122dd565b90508091505090565b611c18612308565b611c228383612348565b611c2b81612366565b505050565b8060359081611c3f91906145e1565b5050565b60007fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300905090565b3073ffffffffffffffffffffffffffffffffffffffff1663ab67aa58308585856040518563ffffffff1660e01b8152600401611caa94939291906146b3565b600060405180830381600087803b158015611cc457600080fd5b505af1158015611cd8573d6000803e3d6000fd5b50505050505050565b600082826078828290501115611d23576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d2c866118fa565b15611d63576040517f55c7e8ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d6b6118b1565b6033600088815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000611dc6610a6e565b73ffffffffffffffffffffffffffffffffffffffff1663780900dc886040518263ffffffff1660e01b8152600401611dfe9190613b12565b6020604051808303816000875af1158015611e1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e41919061418d565b9050611e7381888b8b8a8a604051602001611e5f94939291906146ff565b604051602081830303815290604052612466565b80935050505095945050505050565b6000611e8d826118fa565b611ecc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec3906147b1565b60405180910390fd5b6000611ed78361105a565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161491505092915050565b611f1c8484846124c1565b611f288484848461271c565b611f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5e90614843565b60405180910390fd5b50505050565b6060611f7761289e565b905090565b606060006001611f8b84612930565b01905060008167ffffffffffffffff811115611faa57611fa96134f9565b5b6040519080825280601f01601f191660200182016040528015611fdc5781602001600182028036833780820191505090505b509050600082602083010190505b60011561203f578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161203357612032614863565b5b04945060008503611fea575b819350505050919050565b6120526118b9565b600061205c611c43565b905060018160000160006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586120a46118b1565b6040516120b19190613a06565b60405180910390a150565b60006120c6610a6e565b73ffffffffffffffffffffffffffffffffffffffff1663dc48b34f30866040518363ffffffff1660e01b815260040161210092919061414f565b602060405180830381865afa15801561211d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612141919061418d565b90508073ffffffffffffffffffffffffffffffffffffffff16638fb33c3c84846040518363ffffffff1660e01b815260040161217e929190614892565b600060405180830381600087803b15801561219857600080fd5b505af11580156121ac573d6000803e3d6000fd5b505050506121cc61dead8560405180602001604052806000815250611c6b565b50505050565b60007f78afe0b2000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612245575061224482612a83565b5b9050919050565b6122568282611223565b6122995780826040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526004016122909291906148b6565b60405180910390fd5b5050565b6122a5610d45565b6122db576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0060001b905090565b612310612afd565b612346576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b612350612308565b61235a8282612b1d565b612362612b33565b5050565b61236e612308565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123d4576040517f05bb467c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123e16000801b826119f9565b5061240c7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6826119f9565b506124377f4aca127bf16f434830a404b92851a3555910944351935eae88740d1cef5ffaad826119f9565b506124627fe5fe4715ff8709ff44f5e6bb664620f9349f5f6ae81a532eba2a43b9598ba7eb826119f9565b5050565b6124708383612b3d565b61247d600084848461271c565b6124bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b390614843565b60405180910390fd5b505050565b8273ffffffffffffffffffffffffffffffffffffffff166124e18261105a565b73ffffffffffffffffffffffffffffffffffffffff1614612537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252e90614951565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259d906149e3565b60405180910390fd5b6125b1838383612d16565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126019190614a32565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126589190614a66565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612717838383612e8f565b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff163b1115612891578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026127616118b1565b8786866040518563ffffffff1660e01b815260040161278394939291906146b3565b6020604051808303816000875af19250505080156127bf57506040513d601f19601f820116820180604052508101906127bc9190614aaf565b60015b612841573d80600081146127ef576040519150601f19603f3d011682016040523d82523d6000602084013e6127f4565b606091505b506000815103612839576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283090614843565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612896565b600190505b949350505050565b6060603580546128ad90613bd3565b80601f01602080910402602001604051908101604052809291908181526020018280546128d990613bd3565b80156129265780601f106128fb57610100808354040283529160200191612926565b820191906000526020600020905b81548152906001019060200180831161290957829003601f168201915b5050505050905090565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061298e577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161298457612983614863565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106129cb576d04ee2d6d415b85acef810000000083816129c1576129c0614863565b5b0492506020810190505b662386f26fc1000083106129fa57662386f26fc1000083816129f0576129ef614863565b5b0492506010810190505b6305f5e1008310612a23576305f5e1008381612a1957612a18614863565b5b0492506008810190505b6127108310612a48576127108381612a3e57612a3d614863565b5b0492506004810190505b60648310612a6b5760648381612a6157612a60614863565b5b0492506002810190505b600a8310612a7a576001810190505b80915050919050565b60007ffe9d9303000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612af65750612af582612e94565b5b9050919050565b6000612b07611bfc565b60000160089054906101000a900460ff16905090565b612b25612308565b612b2f8282612ea6565b5050565b612b3b612308565b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba390614b28565b60405180910390fd5b612bb5816118fa565b15612bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bec90614b94565b60405180910390fd5b612c0160008383612d16565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c519190614a66565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612d1260008383612e8f565b5050565b612d1e6118b9565b612d29838383612ed2565b6000612d33610a6e565b73ffffffffffffffffffffffffffffffffffffffff1663dc48b34f30846040518363ffffffff1660e01b8152600401612d6d92919061414f565b602060405180830381865afa158015612d8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dae919061418d565b90503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612e1857508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612e52575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612e89576040517ff7e6817a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b505050565b6000612e9f82612f8a565b9050919050565b612eae612308565b8160009081612ebd91906145e1565b508060019081612ecd91906145e1565b505050565b61dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015612f4357503073ffffffffffffffffffffffffffffffffffffffff16612f2a8261105a565b73ffffffffffffffffffffffffffffffffffffffff1614155b15612f7a576040517fd5475a0b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612f85838383612f9c565b505050565b6000612f9582612fb4565b9050919050565b612fa46118b9565b612faf83838361302e565b505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480613027575061302682613033565b5b9050919050565b505050565b60007f95a63a27000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806130a657506130a5826130ad565b5b9050919050565b60007fb8950977000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061317857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061318857506131878261318f565b5b9050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6132428161320d565b811461324d57600080fd5b50565b60008135905061325f81613239565b92915050565b60006020828403121561327b5761327a613203565b5b600061328984828501613250565b91505092915050565b60008115159050919050565b6132a781613292565b82525050565b60006020820190506132c2600083018461329e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156133025780820151818401526020810190506132e7565b60008484015250505050565b6000601f19601f8301169050919050565b600061332a826132c8565b61333481856132d3565b93506133448185602086016132e4565b61334d8161330e565b840191505092915050565b60006020820190508181036000830152613372818461331f565b905092915050565b6000819050919050565b61338d8161337a565b82525050565b60006020820190506133a86000830184613384565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126133d3576133d26133ae565b5b8235905067ffffffffffffffff8111156133f0576133ef6133b3565b5b60208301915083600182028301111561340c5761340b6133b8565b5b9250929050565b6000806020838503121561342a57613429613203565b5b600083013567ffffffffffffffff81111561344857613447613208565b5b613454858286016133bd565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061348b82613460565b9050919050565b61349b81613480565b81146134a657600080fd5b50565b6000813590506134b881613492565b92915050565b6000819050919050565b6134d1816134be565b81146134dc57600080fd5b50565b6000813590506134ee816134c8565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6135318261330e565b810181811067ffffffffffffffff821117156135505761354f6134f9565b5b80604052505050565b60006135636131f9565b905061356f8282613528565b919050565b600067ffffffffffffffff82111561358f5761358e6134f9565b5b6135988261330e565b9050602081019050919050565b82818337600083830152505050565b60006135c76135c284613574565b613559565b9050828152602081018484840111156135e3576135e26134f4565b5b6135ee8482856135a5565b509392505050565b600082601f83011261360b5761360a6133ae565b5b813561361b8482602086016135b4565b91505092915050565b6000806000806080858703121561363e5761363d613203565b5b600061364c878288016134a9565b945050602061365d878288016134a9565b935050604061366e878288016134df565b925050606085013567ffffffffffffffff81111561368f5761368e613208565b5b61369b878288016135f6565b91505092959194509250565b6136b08161320d565b82525050565b60006020820190506136cb60008301846136a7565b92915050565b600080604083850312156136e8576136e7613203565b5b60006136f6858286016134df565b9250506020613707858286016134a9565b9150509250929050565b61371a8161337a565b811461372557600080fd5b50565b60008135905061373781613711565b92915050565b6000806040838503121561375457613753613203565b5b600061376285828601613728565b925050602061377385828601613728565b9150509250929050565b60006020828403121561379357613792613203565b5b60006137a184828501613728565b91505092915050565b600080604083850312156137c1576137c0613203565b5b60006137cf85828601613728565b92505060206137e0858286016134a9565b9150509250929050565b6000819050919050565b600061380f61380a61380584613460565b6137ea565b613460565b9050919050565b6000613821826137f4565b9050919050565b600061383382613816565b9050919050565b61384381613828565b82525050565b600060208201905061385e600083018461383a565b92915050565b60006020828403121561387a57613879613203565b5b600082013567ffffffffffffffff81111561389857613897613208565b5b6138a4848285016135f6565b91505092915050565b600067ffffffffffffffff8211156138c8576138c76134f9565b5b6138d18261330e565b9050602081019050919050565b60006138f16138ec846138ad565b613559565b90508281526020810184848401111561390d5761390c6134f4565b5b6139188482856135a5565b509392505050565b600082601f830112613935576139346133ae565b5b81356139458482602086016138de565b91505092915050565b60006020828403121561396457613963613203565b5b600082013567ffffffffffffffff81111561398257613981613208565b5b61398e84828501613920565b91505092915050565b6000806000604084860312156139b0576139af613203565b5b60006139be868287016134df565b935050602084013567ffffffffffffffff8111156139df576139de613208565b5b6139eb868287016133bd565b92509250509250925092565b613a0081613480565b82525050565b6000602082019050613a1b60008301846139f7565b92915050565b600080600080600060808688031215613a3d57613a3c613203565b5b6000613a4b888289016134a9565b9550506020613a5c888289016134a9565b9450506040613a6d888289016134df565b935050606086013567ffffffffffffffff811115613a8e57613a8d613208565b5b613a9a888289016133bd565b92509250509295509295909350565b600060208284031215613abf57613abe613203565b5b6000613acd848285016134df565b91505092915050565b600060208284031215613aec57613aeb613203565b5b6000613afa848285016134a9565b91505092915050565b613b0c816134be565b82525050565b6000602082019050613b276000830184613b03565b92915050565b600081519050919050565b600082825260208201905092915050565b6000613b5482613b2d565b613b5e8185613b38565b9350613b6e8185602086016132e4565b613b778161330e565b840191505092915050565b60006020820190508181036000830152613b9c8184613b49565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613beb57607f821691505b602082108103613bfe57613bfd613ba4565b5b50919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613c717fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613c34565b613c7b8683613c34565b95508019841693508086168417925050509392505050565b6000613cae613ca9613ca4846134be565b6137ea565b6134be565b9050919050565b6000819050919050565b613cc883613c93565b613cdc613cd482613cb5565b848454613c41565b825550505050565b600090565b613cf1613ce4565b613cfc818484613cbf565b505050565b5b81811015613d2057613d15600082613ce9565b600181019050613d02565b5050565b601f821115613d6557613d3681613c0f565b613d3f84613c24565b81016020851015613d4e578190505b613d62613d5a85613c24565b830182613d01565b50505b505050565b600082821c905092915050565b6000613d8860001984600802613d6a565b1980831691505092915050565b6000613da18383613d77565b9150826002028217905092915050565b613dbb8383613c04565b67ffffffffffffffff811115613dd457613dd36134f9565b5b613dde8254613bd3565b613de9828285613d24565b6000601f831160018114613e185760008415613e06578287013590505b613e108582613d95565b865550613e78565b601f198416613e2686613c0f565b60005b82811015613e4e57848901358255600182019150602085019450602081019050613e29565b86831015613e6b5784890135613e67601f891682613d77565b8355505b6001600288020188555050505b50505050505050565b6000613e8d8385613b38565b9350613e9a8385846135a5565b613ea38361330e565b840190509392505050565b6000604082019050613ec360008301866139f7565b8181036020830152613ed6818486613e81565b9050949350505050565b6000613ef3613eee84613574565b613559565b905082815260208101848484011115613f0f57613f0e6134f4565b5b613f1a8482856132e4565b509392505050565b600082601f830112613f3757613f366133ae565b5b8151613f47848260208601613ee0565b91505092915050565b6000613f5b82613460565b9050919050565b613f6b81613f50565b8114613f7657600080fd5b50565b600081519050613f8881613f62565b92915050565b60008060408385031215613fa557613fa4613203565b5b600083015167ffffffffffffffff811115613fc357613fc2613208565b5b613fcf85828601613f22565b9250506020613fe085828601613f79565b9150509250929050565b6000613ffd613ff8846138ad565b613559565b905082815260208101848484011115614019576140186134f4565b5b6140248482856132e4565b509392505050565b600082601f830112614041576140406133ae565b5b8151614051848260208601613fea565b91505092915050565b60008060006060848603121561407357614072613203565b5b600084015167ffffffffffffffff81111561409157614090613208565b5b61409d8682870161402c565b935050602084015167ffffffffffffffff8111156140be576140bd613208565b5b6140ca8682870161402c565b92505060406140db86828701613f79565b9150509250925092565b6000819050919050565b600067ffffffffffffffff82169050919050565b600061411e614119614114846140e5565b6137ea565b6140ef565b9050919050565b61412e81614103565b82525050565b60006020820190506141496000830184614125565b92915050565b600060408201905061416460008301856139f7565b6141716020830184613b03565b9392505050565b60008151905061418781613492565b92915050565b6000602082840312156141a3576141a2613203565b5b60006141b184828501614178565b91505092915050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006142166029836132d3565b9150614221826141ba565b604082019050919050565b6000602082019050818103600083015261424581614209565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b60006142a8602a836132d3565b91506142b38261424c565b604082019050919050565b600060208201905081810360008301526142d78161429b565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b600061433a6031836132d3565b9150614345826142de565b604082019050919050565b600060208201905081810360008301526143698161432d565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006143cc602f836132d3565b91506143d782614370565b604082019050919050565b600060208201905081810360008301526143fb816143bf565b9050919050565b600081905092915050565b6000614418826132c8565b6144228185614402565b93506144328185602086016132e4565b80840191505092915050565b600061444a828561440d565b9150614456828461440d565b91508190509392505050565b7f54726164655472757374546f6b656e4275726e61626c653a206163636570746560008201527f72206e6f742073657420666f7220746f6b656e00000000000000000000000000602082015250565b60006144be6033836132d3565b91506144c982614462565b604082019050919050565b600060208201905081810360008301526144ed816144b1565b9050919050565b7f54726164655472757374546f6b656e4275726e61626c653a2063616c6c65722060008201527f6e6f742061737369676e65642061636365707465720000000000000000000000602082015250565b60006145506035836132d3565b915061455b826144f4565b604082019050919050565b6000602082019050818103600083015261457f81614543565b9050919050565b60008190508160005260206000209050919050565b601f8211156145dc576145ad81614586565b6145b684613c24565b810160208510156145c5578190505b6145d96145d185613c24565b830182613d01565b50505b505050565b6145ea826132c8565b67ffffffffffffffff811115614603576146026134f9565b5b61460d8254613bd3565b61461882828561459b565b600060209050601f83116001811461464b5760008415614639578287015190505b6146438582613d95565b8655506146ab565b601f19841661465986614586565b60005b828110156146815784890151825560018201915060208501945060208101905061465c565b8683101561469e578489015161469a601f891682613d77565b8355505b6001600288020188555050505b505050505050565b60006080820190506146c860008301876139f7565b6146d560208301866139f7565b6146e26040830185613b03565b81810360608301526146f48184613b49565b905095945050505050565b600060608201905061471460008301876139f7565b61472160208301866139f7565b8181036040830152614734818486613e81565b905095945050505050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b600061479b602c836132d3565b91506147a68261473f565b604082019050919050565b600060208201905081810360008301526147ca8161478e565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600061482d6032836132d3565b9150614838826147d1565b604082019050919050565b6000602082019050818103600083015261485c81614820565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600060208201905081810360008301526148ad818486613e81565b90509392505050565b60006040820190506148cb60008301856139f7565b6148d86020830184613384565b9392505050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b600061493b6025836132d3565b9150614946826148df565b604082019050919050565b6000602082019050818103600083015261496a8161492e565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006149cd6024836132d3565b91506149d882614971565b604082019050919050565b600060208201905081810360008301526149fc816149c0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614a3d826134be565b9150614a48836134be565b9250828203905081811115614a6057614a5f614a03565b5b92915050565b6000614a71826134be565b9150614a7c836134be565b9250828201905080821115614a9457614a93614a03565b5b92915050565b600081519050614aa981613239565b92915050565b600060208284031215614ac557614ac4613203565b5b6000614ad384828501614a9a565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000614b126020836132d3565b9150614b1d82614adc565b602082019050919050565b60006020820190508181036000830152614b4181614b05565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614b7e601c836132d3565b9150614b8982614b48565b602082019050919050565b60006020820190508181036000830152614bad81614b71565b905091905056fea264697066735822122091a3e1f82ef57b41696d0d5abbe889411bd6cc1cd36eda8786e6b4c4bd04cb8b64736f6c63430008160033";
787
873
 
788
874
  type TradeTrustTokenStandardConstructorParams =
789
875
  | [signer?: Signer]
@@ -5,7 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.SigHelper__factory = void 0;
7
7
  var _ethers = require("ethers");
8
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ // @ts-nocheck
8
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
9
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
10
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ // @ts-nocheck
9
11
  const _abi = [{
10
12
  inputs: [],
11
13
  name: "SignatureAlreadyCancelled",