@layerzerolabs/protocol-v2-messagelib-evm-contracts 1.2.96 → 1.2.98

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 (272) hide show
  1. package/README.md +1 -1
  2. package/artifacts/contracts/Executor.sol/Executor.json +1413 -0
  3. package/artifacts/contracts/Executor.sol/ILayerZeroEndpointV2.json +230 -0
  4. package/artifacts/contracts/ExecutorFeeLib.sol/ExecutorFeeLib.json +546 -0
  5. package/artifacts/contracts/MessageLibBase.sol/MessageLibBase.json +16 -0
  6. package/artifacts/contracts/PriceFeed.sol/PriceFeed.json +694 -0
  7. package/artifacts/contracts/ReceiveLibBaseE2.sol/ReceiveLibBaseE2.json +154 -0
  8. package/artifacts/contracts/SendLibBase.sol/SendLibBase.json +381 -0
  9. package/artifacts/contracts/SendLibBaseE2.sol/SendLibBaseE2.json +819 -0
  10. package/artifacts/contracts/SimpleReadExecutor.sol/ILayerZeroEndpointV2.json +139 -0
  11. package/artifacts/contracts/SimpleReadExecutor.sol/SimpleReadExecutor.json +260 -0
  12. package/artifacts/contracts/Treasury.sol/Treasury.json +309 -0
  13. package/artifacts/contracts/Worker.sol/Worker.json +579 -0
  14. package/artifacts/contracts/decompressor/DVNDecoder.sol/DVNDecoder.json +10 -0
  15. package/artifacts/contracts/decompressor/DVNDecompressor.sol/DVNDecompressor.json +329 -0
  16. package/artifacts/contracts/decompressor/DecompressorExtension.sol/DecompressorExtension.json +92 -0
  17. package/artifacts/contracts/decompressor/ExecutorDecoder.sol/ExecutorDecoder.json +10 -0
  18. package/artifacts/contracts/decompressor/ExecutorDecompressor.sol/ExecutorDecompressor.json +220 -0
  19. package/artifacts/contracts/interfaces/IExecutor.sol/IExecutor.json +487 -0
  20. package/artifacts/contracts/interfaces/IExecutorFeeLib.sol/IExecutorFeeLib.json +410 -0
  21. package/artifacts/contracts/interfaces/ILayerZeroExecutor.sol/ILayerZeroExecutor.json +79 -0
  22. package/artifacts/contracts/interfaces/ILayerZeroPriceFeed.sol/ILayerZeroPriceFeed.json +222 -0
  23. package/artifacts/contracts/interfaces/ILayerZeroReadExecutor.sol/ILayerZeroReadExecutor.json +59 -0
  24. package/artifacts/contracts/interfaces/ILayerZeroTreasury.sol/ILayerZeroTreasury.json +79 -0
  25. package/artifacts/contracts/interfaces/IWorker.sol/IWorker.json +221 -0
  26. package/artifacts/contracts/libs/ExecutorOptions.sol/ExecutorOptions.json +31 -0
  27. package/artifacts/contracts/libs/SafeCall.sol/SafeCall.json +10 -0
  28. package/artifacts/contracts/lowlat/EssenceDVNWrapper.sol/EssenceDVNWrapper.json +369 -0
  29. package/artifacts/contracts/lowlat/MultiCall.sol/MultiCall.json +120 -0
  30. package/artifacts/contracts/mocks/DVNMock.sol/DVNMock.json +135 -0
  31. package/artifacts/contracts/mocks/ExecutorMock.sol/ExecutorMock.json +397 -0
  32. package/artifacts/contracts/uln/LzExecutor.sol/IReceiveUlnView.json +35 -0
  33. package/artifacts/contracts/uln/LzExecutor.sol/LzExecutor.json +515 -0
  34. package/artifacts/contracts/uln/ReceiveUlnBase.sol/ReceiveUlnBase.json +551 -0
  35. package/artifacts/contracts/uln/SendUlnBase.sol/SendUlnBase.json +412 -0
  36. package/artifacts/contracts/uln/UlnBase.sol/UlnBase.json +387 -0
  37. package/artifacts/contracts/uln/dvn/DVN.sol/DVN.json +1509 -0
  38. package/artifacts/contracts/uln/dvn/DVNFeeLib.sol/DVNFeeLib.json +695 -0
  39. package/artifacts/contracts/uln/dvn/DeadDVN.sol/DeadDVN.json +164 -0
  40. package/artifacts/contracts/uln/dvn/MultiSig.sol/MultiSig.json +217 -0
  41. package/artifacts/contracts/uln/dvn/SimpleReadDVN.sol/SimpleReadDVN.json +231 -0
  42. package/artifacts/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapter.sol/CCIPDVNAdapter.json +1040 -0
  43. package/artifacts/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapterFeeLib.sol/CCIPDVNAdapterFeeLib.json +417 -0
  44. package/artifacts/contracts/uln/dvn/adapters/DVNAdapterBase.sol/DVNAdapterBase.json +789 -0
  45. package/artifacts/contracts/uln/dvn/adapters/DVNAdapterBase.sol/IReceiveUln.json +34 -0
  46. package/artifacts/contracts/uln/dvn/adapters/DVNAdapterBase.sol/ISendLibBase.json +30 -0
  47. package/artifacts/contracts/uln/dvn/adapters/arbitrum/ArbitrumDVNAdapterL1.sol/ArbitrumDVNAdapterL1.json +936 -0
  48. package/artifacts/contracts/uln/dvn/adapters/arbitrum/ArbitrumDVNAdapterL2.sol/ArbitrumDVNAdapterL2.json +868 -0
  49. package/artifacts/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapter.sol/AxelarDVNAdapter.json +1171 -0
  50. package/artifacts/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapter.sol/ISendLibBase.json +30 -0
  51. package/artifacts/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapterFeeLib.sol/AxelarDVNAdapterFeeLib.json +574 -0
  52. package/artifacts/contracts/uln/dvn/adapters/libs/DVNAdapterMessageCodec.sol/DVNAdapterMessageCodec.json +16 -0
  53. package/artifacts/contracts/uln/dvn/adapters/optimism/OptimismDVNAdapterL1.sol/OptimismDVNAdapterL1.json +924 -0
  54. package/artifacts/contracts/uln/dvn/adapters/optimism/OptimismDVNAdapterL2.sol/OptimismDVNAdapterL2.json +891 -0
  55. package/artifacts/contracts/uln/interfaces/IDVN.sol/IDVN.json +438 -0
  56. package/artifacts/contracts/uln/interfaces/IDVNFeeLib.sol/IDVNFeeLib.json +374 -0
  57. package/artifacts/contracts/uln/interfaces/ILayerZeroDVN.sol/ILayerZeroDVN.json +96 -0
  58. package/artifacts/contracts/uln/interfaces/ILayerZeroReadDVN.sol/ILayerZeroReadDVN.json +79 -0
  59. package/artifacts/contracts/uln/interfaces/IReceiveUlnE2.sol/IReceiveUlnE2.json +52 -0
  60. package/artifacts/contracts/uln/interfaces/adapters/IAxelarDVNAdapter.sol/IAxelarDVNAdapter.json +160 -0
  61. package/artifacts/contracts/uln/interfaces/adapters/IAxelarDVNAdapterFeeLib.sol/IAxelarDVNAdapterFeeLib.json +293 -0
  62. package/artifacts/contracts/uln/interfaces/adapters/ICCIPDVNAdapter.sol/ICCIPDVNAdapter.json +78 -0
  63. package/artifacts/contracts/uln/interfaces/adapters/ICCIPDVNAdapterFeeLib.sol/ICCIPDVNAdapterFeeLib.json +301 -0
  64. package/artifacts/contracts/uln/libs/DVNOptions.sol/DVNOptions.json +27 -0
  65. package/artifacts/contracts/uln/libs/ReadCmdCodecV1.sol/ReadCmdCodecV1.json +26 -0
  66. package/artifacts/contracts/uln/libs/SupportedCmdTypes.sol/SupportedCmdTypesLib.json +16 -0
  67. package/artifacts/contracts/uln/libs/UlnOptions.sol/UlnOptions.json +54 -0
  68. package/artifacts/contracts/uln/readlib/ReadLib1002.sol/ReadLib1002.json +1288 -0
  69. package/artifacts/contracts/uln/readlib/ReadLib1002View.sol/ReadLib1002View.json +285 -0
  70. package/artifacts/contracts/uln/readlib/ReadLibBase.sol/ReadLibBase.json +387 -0
  71. package/artifacts/contracts/uln/uln301/AddressSizeConfig.sol/AddressSizeConfig.json +129 -0
  72. package/artifacts/contracts/uln/uln301/ReceiveLibBaseE1.sol/ILayerZeroReceiveLibrary.json +68 -0
  73. package/artifacts/contracts/uln/uln301/ReceiveLibBaseE1.sol/ReceiveLibBaseE1.json +416 -0
  74. package/artifacts/contracts/uln/uln301/ReceiveUln301.sol/ReceiveUln301.json +1000 -0
  75. package/artifacts/contracts/uln/uln301/ReceiveUln301View.sol/IReceiveUln301.json +178 -0
  76. package/artifacts/contracts/uln/uln301/ReceiveUln301View.sol/ReceiveUln301View.json +126 -0
  77. package/artifacts/contracts/uln/uln301/SendLibBaseE1.sol/SendLibBaseE1.json +804 -0
  78. package/artifacts/contracts/uln/uln301/SendUln301.sol/SendUln301.json +1278 -0
  79. package/artifacts/contracts/uln/uln301/TreasuryFeeHandler.sol/TreasuryFeeHandler.json +94 -0
  80. package/artifacts/contracts/uln/uln301/interfaces/IMessageLibE1.sol/IMessageLibE1.json +247 -0
  81. package/artifacts/contracts/uln/uln301/interfaces/INonceContract.sol/INonceContract.json +40 -0
  82. package/artifacts/contracts/uln/uln301/interfaces/ITreasuryFeeHandler.sol/ITreasuryFeeHandler.json +44 -0
  83. package/artifacts/contracts/uln/uln301/interfaces/IUltraLightNode301.sol/IUltraLightNode301.json +29 -0
  84. package/artifacts/contracts/uln/uln301/mocks/NonceContractMock.sol/NonceContractMock.json +93 -0
  85. package/artifacts/contracts/uln/uln302/ReceiveUln302.sol/ReceiveUln302.json +757 -0
  86. package/artifacts/contracts/uln/uln302/ReceiveUln302View.sol/IReceiveUln302.json +146 -0
  87. package/artifacts/contracts/uln/uln302/ReceiveUln302View.sol/ReceiveUln302View.json +251 -0
  88. package/artifacts/contracts/uln/uln302/SendUln302.sol/SendUln302.json +1259 -0
  89. package/artifacts/contracts/upgradeable/WorkerUpgradeable.sol/WorkerUpgradeable.json +592 -0
  90. package/artifacts/contracts/upgradeable/proxy/ProxyAdmin.sol/ProxyAdmin.json +181 -0
  91. package/artifacts/contracts/upgradeable/proxy/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +160 -0
  92. package/artifacts-tron/contracts/Executor.sol/Executor.json +1413 -0
  93. package/artifacts-tron/contracts/Executor.sol/ILayerZeroEndpointV2.json +230 -0
  94. package/artifacts-tron/contracts/ExecutorFeeLib.sol/ExecutorFeeLib.json +546 -0
  95. package/artifacts-tron/contracts/MessageLibBase.sol/MessageLibBase.json +16 -0
  96. package/artifacts-tron/contracts/PriceFeed.sol/PriceFeed.json +694 -0
  97. package/artifacts-tron/contracts/ReceiveLibBaseE2.sol/ReceiveLibBaseE2.json +154 -0
  98. package/artifacts-tron/contracts/SendLibBase.sol/SendLibBase.json +381 -0
  99. package/artifacts-tron/contracts/SendLibBaseE2.sol/SendLibBaseE2.json +819 -0
  100. package/artifacts-tron/contracts/SimpleReadExecutor.sol/ILayerZeroEndpointV2.json +139 -0
  101. package/artifacts-tron/contracts/SimpleReadExecutor.sol/SimpleReadExecutor.json +260 -0
  102. package/artifacts-tron/contracts/Treasury.sol/Treasury.json +309 -0
  103. package/artifacts-tron/contracts/Worker.sol/Worker.json +579 -0
  104. package/artifacts-tron/contracts/decompressor/DVNDecoder.sol/DVNDecoder.json +10 -0
  105. package/artifacts-tron/contracts/decompressor/DVNDecompressor.sol/DVNDecompressor.json +329 -0
  106. package/artifacts-tron/contracts/decompressor/DecompressorExtension.sol/DecompressorExtension.json +92 -0
  107. package/artifacts-tron/contracts/decompressor/ExecutorDecoder.sol/ExecutorDecoder.json +10 -0
  108. package/artifacts-tron/contracts/decompressor/ExecutorDecompressor.sol/ExecutorDecompressor.json +220 -0
  109. package/artifacts-tron/contracts/interfaces/IExecutor.sol/IExecutor.json +487 -0
  110. package/artifacts-tron/contracts/interfaces/IExecutorFeeLib.sol/IExecutorFeeLib.json +410 -0
  111. package/artifacts-tron/contracts/interfaces/ILayerZeroExecutor.sol/ILayerZeroExecutor.json +79 -0
  112. package/artifacts-tron/contracts/interfaces/ILayerZeroPriceFeed.sol/ILayerZeroPriceFeed.json +222 -0
  113. package/artifacts-tron/contracts/interfaces/ILayerZeroReadExecutor.sol/ILayerZeroReadExecutor.json +59 -0
  114. package/artifacts-tron/contracts/interfaces/ILayerZeroTreasury.sol/ILayerZeroTreasury.json +79 -0
  115. package/artifacts-tron/contracts/interfaces/IWorker.sol/IWorker.json +221 -0
  116. package/artifacts-tron/contracts/libs/ExecutorOptions.sol/ExecutorOptions.json +31 -0
  117. package/artifacts-tron/contracts/libs/SafeCall.sol/SafeCall.json +10 -0
  118. package/artifacts-tron/contracts/lowlat/EssenceDVNWrapper.sol/EssenceDVNWrapper.json +369 -0
  119. package/artifacts-tron/contracts/lowlat/MultiCall.sol/MultiCall.json +120 -0
  120. package/artifacts-tron/contracts/mocks/DVNMock.sol/DVNMock.json +135 -0
  121. package/artifacts-tron/contracts/mocks/ExecutorMock.sol/ExecutorMock.json +397 -0
  122. package/artifacts-tron/contracts/uln/LzExecutor.sol/IReceiveUlnView.json +35 -0
  123. package/artifacts-tron/contracts/uln/LzExecutor.sol/LzExecutor.json +515 -0
  124. package/artifacts-tron/contracts/uln/ReceiveUlnBase.sol/ReceiveUlnBase.json +551 -0
  125. package/artifacts-tron/contracts/uln/SendUlnBase.sol/SendUlnBase.json +412 -0
  126. package/artifacts-tron/contracts/uln/UlnBase.sol/UlnBase.json +387 -0
  127. package/artifacts-tron/contracts/uln/dvn/DVN.sol/DVN.json +1509 -0
  128. package/artifacts-tron/contracts/uln/dvn/DVNFeeLib.sol/DVNFeeLib.json +695 -0
  129. package/artifacts-tron/contracts/uln/dvn/DeadDVN.sol/DeadDVN.json +164 -0
  130. package/artifacts-tron/contracts/uln/dvn/MultiSig.sol/MultiSig.json +217 -0
  131. package/artifacts-tron/contracts/uln/dvn/SimpleReadDVN.sol/SimpleReadDVN.json +231 -0
  132. package/artifacts-tron/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapter.sol/CCIPDVNAdapter.json +1040 -0
  133. package/artifacts-tron/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapterFeeLib.sol/CCIPDVNAdapterFeeLib.json +417 -0
  134. package/artifacts-tron/contracts/uln/dvn/adapters/DVNAdapterBase.sol/DVNAdapterBase.json +789 -0
  135. package/artifacts-tron/contracts/uln/dvn/adapters/DVNAdapterBase.sol/IReceiveUln.json +34 -0
  136. package/artifacts-tron/contracts/uln/dvn/adapters/DVNAdapterBase.sol/ISendLibBase.json +30 -0
  137. package/artifacts-tron/contracts/uln/dvn/adapters/arbitrum/ArbitrumDVNAdapterL1.sol/ArbitrumDVNAdapterL1.json +936 -0
  138. package/artifacts-tron/contracts/uln/dvn/adapters/arbitrum/ArbitrumDVNAdapterL2.sol/ArbitrumDVNAdapterL2.json +868 -0
  139. package/artifacts-tron/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapter.sol/AxelarDVNAdapter.json +1171 -0
  140. package/artifacts-tron/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapter.sol/ISendLibBase.json +30 -0
  141. package/artifacts-tron/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapterFeeLib.sol/AxelarDVNAdapterFeeLib.json +574 -0
  142. package/artifacts-tron/contracts/uln/dvn/adapters/libs/DVNAdapterMessageCodec.sol/DVNAdapterMessageCodec.json +16 -0
  143. package/artifacts-tron/contracts/uln/dvn/adapters/optimism/OptimismDVNAdapterL1.sol/OptimismDVNAdapterL1.json +924 -0
  144. package/artifacts-tron/contracts/uln/dvn/adapters/optimism/OptimismDVNAdapterL2.sol/OptimismDVNAdapterL2.json +891 -0
  145. package/artifacts-tron/contracts/uln/interfaces/IDVN.sol/IDVN.json +438 -0
  146. package/artifacts-tron/contracts/uln/interfaces/IDVNFeeLib.sol/IDVNFeeLib.json +374 -0
  147. package/artifacts-tron/contracts/uln/interfaces/ILayerZeroDVN.sol/ILayerZeroDVN.json +96 -0
  148. package/artifacts-tron/contracts/uln/interfaces/ILayerZeroReadDVN.sol/ILayerZeroReadDVN.json +79 -0
  149. package/artifacts-tron/contracts/uln/interfaces/IReceiveUlnE2.sol/IReceiveUlnE2.json +52 -0
  150. package/artifacts-tron/contracts/uln/interfaces/adapters/IAxelarDVNAdapter.sol/IAxelarDVNAdapter.json +160 -0
  151. package/artifacts-tron/contracts/uln/interfaces/adapters/IAxelarDVNAdapterFeeLib.sol/IAxelarDVNAdapterFeeLib.json +293 -0
  152. package/artifacts-tron/contracts/uln/interfaces/adapters/ICCIPDVNAdapter.sol/ICCIPDVNAdapter.json +78 -0
  153. package/artifacts-tron/contracts/uln/interfaces/adapters/ICCIPDVNAdapterFeeLib.sol/ICCIPDVNAdapterFeeLib.json +301 -0
  154. package/artifacts-tron/contracts/uln/libs/DVNOptions.sol/DVNOptions.json +27 -0
  155. package/artifacts-tron/contracts/uln/libs/ReadCmdCodecV1.sol/ReadCmdCodecV1.json +26 -0
  156. package/artifacts-tron/contracts/uln/libs/SupportedCmdTypes.sol/SupportedCmdTypesLib.json +16 -0
  157. package/artifacts-tron/contracts/uln/libs/UlnOptions.sol/UlnOptions.json +54 -0
  158. package/artifacts-tron/contracts/uln/readlib/ReadLib1002.sol/ReadLib1002.json +1288 -0
  159. package/artifacts-tron/contracts/uln/readlib/ReadLib1002View.sol/ReadLib1002View.json +285 -0
  160. package/artifacts-tron/contracts/uln/readlib/ReadLibBase.sol/ReadLibBase.json +387 -0
  161. package/artifacts-tron/contracts/uln/uln301/AddressSizeConfig.sol/AddressSizeConfig.json +129 -0
  162. package/artifacts-tron/contracts/uln/uln301/ReceiveLibBaseE1.sol/ILayerZeroReceiveLibrary.json +68 -0
  163. package/artifacts-tron/contracts/uln/uln301/ReceiveLibBaseE1.sol/ReceiveLibBaseE1.json +416 -0
  164. package/artifacts-tron/contracts/uln/uln301/ReceiveUln301.sol/ReceiveUln301.json +1000 -0
  165. package/artifacts-tron/contracts/uln/uln301/ReceiveUln301View.sol/IReceiveUln301.json +178 -0
  166. package/artifacts-tron/contracts/uln/uln301/ReceiveUln301View.sol/ReceiveUln301View.json +126 -0
  167. package/artifacts-tron/contracts/uln/uln301/SendLibBaseE1.sol/SendLibBaseE1.json +804 -0
  168. package/artifacts-tron/contracts/uln/uln301/SendUln301.sol/SendUln301.json +1278 -0
  169. package/artifacts-tron/contracts/uln/uln301/TreasuryFeeHandler.sol/TreasuryFeeHandler.json +94 -0
  170. package/artifacts-tron/contracts/uln/uln301/interfaces/IMessageLibE1.sol/IMessageLibE1.json +247 -0
  171. package/artifacts-tron/contracts/uln/uln301/interfaces/INonceContract.sol/INonceContract.json +40 -0
  172. package/artifacts-tron/contracts/uln/uln301/interfaces/ITreasuryFeeHandler.sol/ITreasuryFeeHandler.json +44 -0
  173. package/artifacts-tron/contracts/uln/uln301/interfaces/IUltraLightNode301.sol/IUltraLightNode301.json +29 -0
  174. package/artifacts-tron/contracts/uln/uln301/mocks/NonceContractMock.sol/NonceContractMock.json +93 -0
  175. package/artifacts-tron/contracts/uln/uln302/ReceiveUln302.sol/ReceiveUln302.json +757 -0
  176. package/artifacts-tron/contracts/uln/uln302/ReceiveUln302View.sol/IReceiveUln302.json +146 -0
  177. package/artifacts-tron/contracts/uln/uln302/ReceiveUln302View.sol/ReceiveUln302View.json +251 -0
  178. package/artifacts-tron/contracts/uln/uln302/SendUln302.sol/SendUln302.json +1259 -0
  179. package/artifacts-tron/contracts/upgradeable/WorkerUpgradeable.sol/WorkerUpgradeable.json +592 -0
  180. package/artifacts-tron/contracts/upgradeable/proxy/ProxyAdmin.sol/ProxyAdmin.json +181 -0
  181. package/artifacts-tron/contracts/upgradeable/proxy/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +160 -0
  182. package/artifacts-zk/contracts/Executor.sol/Executor.json +1414 -0
  183. package/artifacts-zk/contracts/Executor.sol/ILayerZeroEndpointV2.json +231 -0
  184. package/artifacts-zk/contracts/ExecutorFeeLib.sol/ExecutorFeeLib.json +547 -0
  185. package/artifacts-zk/contracts/MessageLibBase.sol/MessageLibBase.json +17 -0
  186. package/artifacts-zk/contracts/PriceFeed.sol/PriceFeed.json +695 -0
  187. package/artifacts-zk/contracts/ReceiveLibBaseE2.sol/ReceiveLibBaseE2.json +155 -0
  188. package/artifacts-zk/contracts/SendLibBase.sol/SendLibBase.json +382 -0
  189. package/artifacts-zk/contracts/SendLibBaseE2.sol/SendLibBaseE2.json +820 -0
  190. package/artifacts-zk/contracts/SimpleReadExecutor.sol/ILayerZeroEndpointV2.json +140 -0
  191. package/artifacts-zk/contracts/SimpleReadExecutor.sol/SimpleReadExecutor.json +261 -0
  192. package/artifacts-zk/contracts/Treasury.sol/Treasury.json +310 -0
  193. package/artifacts-zk/contracts/Worker.sol/Worker.json +580 -0
  194. package/artifacts-zk/contracts/decompressor/DVNDecoder.sol/DVNDecoder.json +11 -0
  195. package/artifacts-zk/contracts/decompressor/DVNDecompressor.sol/DVNDecompressor.json +330 -0
  196. package/artifacts-zk/contracts/decompressor/DecompressorExtension.sol/DecompressorExtension.json +93 -0
  197. package/artifacts-zk/contracts/decompressor/ExecutorDecoder.sol/ExecutorDecoder.json +11 -0
  198. package/artifacts-zk/contracts/decompressor/ExecutorDecompressor.sol/ExecutorDecompressor.json +221 -0
  199. package/artifacts-zk/contracts/interfaces/IExecutor.sol/IExecutor.json +488 -0
  200. package/artifacts-zk/contracts/interfaces/IExecutorFeeLib.sol/IExecutorFeeLib.json +411 -0
  201. package/artifacts-zk/contracts/interfaces/ILayerZeroExecutor.sol/ILayerZeroExecutor.json +80 -0
  202. package/artifacts-zk/contracts/interfaces/ILayerZeroPriceFeed.sol/ILayerZeroPriceFeed.json +223 -0
  203. package/artifacts-zk/contracts/interfaces/ILayerZeroReadExecutor.sol/ILayerZeroReadExecutor.json +60 -0
  204. package/artifacts-zk/contracts/interfaces/ILayerZeroTreasury.sol/ILayerZeroTreasury.json +80 -0
  205. package/artifacts-zk/contracts/interfaces/IWorker.sol/IWorker.json +222 -0
  206. package/artifacts-zk/contracts/libs/ExecutorOptions.sol/ExecutorOptions.json +32 -0
  207. package/artifacts-zk/contracts/libs/SafeCall.sol/SafeCall.json +11 -0
  208. package/artifacts-zk/contracts/lowlat/EssenceDVNWrapper.sol/EssenceDVNWrapper.json +370 -0
  209. package/artifacts-zk/contracts/lowlat/MultiCall.sol/MultiCall.json +121 -0
  210. package/artifacts-zk/contracts/mocks/DVNMock.sol/DVNMock.json +136 -0
  211. package/artifacts-zk/contracts/mocks/ExecutorMock.sol/ExecutorMock.json +398 -0
  212. package/artifacts-zk/contracts/uln/LzExecutor.sol/IReceiveUlnView.json +36 -0
  213. package/artifacts-zk/contracts/uln/LzExecutor.sol/LzExecutor.json +516 -0
  214. package/artifacts-zk/contracts/uln/ReceiveUlnBase.sol/ReceiveUlnBase.json +552 -0
  215. package/artifacts-zk/contracts/uln/SendUlnBase.sol/SendUlnBase.json +413 -0
  216. package/artifacts-zk/contracts/uln/UlnBase.sol/UlnBase.json +388 -0
  217. package/artifacts-zk/contracts/uln/dvn/DVN.sol/DVN.json +1510 -0
  218. package/artifacts-zk/contracts/uln/dvn/DVNFeeLib.sol/DVNFeeLib.json +696 -0
  219. package/artifacts-zk/contracts/uln/dvn/DeadDVN.sol/DeadDVN.json +165 -0
  220. package/artifacts-zk/contracts/uln/dvn/MultiSig.sol/MultiSig.json +218 -0
  221. package/artifacts-zk/contracts/uln/dvn/SimpleReadDVN.sol/SimpleReadDVN.json +232 -0
  222. package/artifacts-zk/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapter.sol/CCIPDVNAdapter.json +1041 -0
  223. package/artifacts-zk/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapterFeeLib.sol/CCIPDVNAdapterFeeLib.json +418 -0
  224. package/artifacts-zk/contracts/uln/dvn/adapters/DVNAdapterBase.sol/DVNAdapterBase.json +790 -0
  225. package/artifacts-zk/contracts/uln/dvn/adapters/DVNAdapterBase.sol/IReceiveUln.json +35 -0
  226. package/artifacts-zk/contracts/uln/dvn/adapters/DVNAdapterBase.sol/ISendLibBase.json +31 -0
  227. package/artifacts-zk/contracts/uln/dvn/adapters/arbitrum/ArbitrumDVNAdapterL1.sol/ArbitrumDVNAdapterL1.json +937 -0
  228. package/artifacts-zk/contracts/uln/dvn/adapters/arbitrum/ArbitrumDVNAdapterL2.sol/ArbitrumDVNAdapterL2.json +869 -0
  229. package/artifacts-zk/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapter.sol/AxelarDVNAdapter.json +1172 -0
  230. package/artifacts-zk/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapter.sol/ISendLibBase.json +31 -0
  231. package/artifacts-zk/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapterFeeLib.sol/AxelarDVNAdapterFeeLib.json +575 -0
  232. package/artifacts-zk/contracts/uln/dvn/adapters/libs/DVNAdapterMessageCodec.sol/DVNAdapterMessageCodec.json +17 -0
  233. package/artifacts-zk/contracts/uln/dvn/adapters/optimism/OptimismDVNAdapterL1.sol/OptimismDVNAdapterL1.json +925 -0
  234. package/artifacts-zk/contracts/uln/dvn/adapters/optimism/OptimismDVNAdapterL2.sol/OptimismDVNAdapterL2.json +892 -0
  235. package/artifacts-zk/contracts/uln/interfaces/IDVN.sol/IDVN.json +439 -0
  236. package/artifacts-zk/contracts/uln/interfaces/IDVNFeeLib.sol/IDVNFeeLib.json +375 -0
  237. package/artifacts-zk/contracts/uln/interfaces/ILayerZeroDVN.sol/ILayerZeroDVN.json +97 -0
  238. package/artifacts-zk/contracts/uln/interfaces/ILayerZeroReadDVN.sol/ILayerZeroReadDVN.json +80 -0
  239. package/artifacts-zk/contracts/uln/interfaces/IReceiveUlnE2.sol/IReceiveUlnE2.json +53 -0
  240. package/artifacts-zk/contracts/uln/interfaces/adapters/IAxelarDVNAdapter.sol/IAxelarDVNAdapter.json +161 -0
  241. package/artifacts-zk/contracts/uln/interfaces/adapters/IAxelarDVNAdapterFeeLib.sol/IAxelarDVNAdapterFeeLib.json +294 -0
  242. package/artifacts-zk/contracts/uln/interfaces/adapters/ICCIPDVNAdapter.sol/ICCIPDVNAdapter.json +79 -0
  243. package/artifacts-zk/contracts/uln/interfaces/adapters/ICCIPDVNAdapterFeeLib.sol/ICCIPDVNAdapterFeeLib.json +302 -0
  244. package/artifacts-zk/contracts/uln/libs/DVNOptions.sol/DVNOptions.json +28 -0
  245. package/artifacts-zk/contracts/uln/libs/ReadCmdCodecV1.sol/ReadCmdCodecV1.json +27 -0
  246. package/artifacts-zk/contracts/uln/libs/SupportedCmdTypes.sol/SupportedCmdTypesLib.json +17 -0
  247. package/artifacts-zk/contracts/uln/libs/UlnOptions.sol/UlnOptions.json +55 -0
  248. package/artifacts-zk/contracts/uln/readlib/ReadLib1002.sol/ReadLib1002.json +1289 -0
  249. package/artifacts-zk/contracts/uln/readlib/ReadLib1002View.sol/ReadLib1002View.json +286 -0
  250. package/artifacts-zk/contracts/uln/readlib/ReadLibBase.sol/ReadLibBase.json +388 -0
  251. package/artifacts-zk/contracts/uln/uln301/AddressSizeConfig.sol/AddressSizeConfig.json +130 -0
  252. package/artifacts-zk/contracts/uln/uln301/ReceiveLibBaseE1.sol/ILayerZeroReceiveLibrary.json +69 -0
  253. package/artifacts-zk/contracts/uln/uln301/ReceiveLibBaseE1.sol/ReceiveLibBaseE1.json +417 -0
  254. package/artifacts-zk/contracts/uln/uln301/ReceiveUln301.sol/ReceiveUln301.json +1001 -0
  255. package/artifacts-zk/contracts/uln/uln301/ReceiveUln301View.sol/IReceiveUln301.json +179 -0
  256. package/artifacts-zk/contracts/uln/uln301/ReceiveUln301View.sol/ReceiveUln301View.json +127 -0
  257. package/artifacts-zk/contracts/uln/uln301/SendLibBaseE1.sol/SendLibBaseE1.json +805 -0
  258. package/artifacts-zk/contracts/uln/uln301/SendUln301.sol/SendUln301.json +1279 -0
  259. package/artifacts-zk/contracts/uln/uln301/TreasuryFeeHandler.sol/TreasuryFeeHandler.json +95 -0
  260. package/artifacts-zk/contracts/uln/uln301/interfaces/IMessageLibE1.sol/IMessageLibE1.json +248 -0
  261. package/artifacts-zk/contracts/uln/uln301/interfaces/INonceContract.sol/INonceContract.json +41 -0
  262. package/artifacts-zk/contracts/uln/uln301/interfaces/ITreasuryFeeHandler.sol/ITreasuryFeeHandler.json +45 -0
  263. package/artifacts-zk/contracts/uln/uln301/interfaces/IUltraLightNode301.sol/IUltraLightNode301.json +30 -0
  264. package/artifacts-zk/contracts/uln/uln301/mocks/NonceContractMock.sol/NonceContractMock.json +94 -0
  265. package/artifacts-zk/contracts/uln/uln302/ReceiveUln302.sol/ReceiveUln302.json +758 -0
  266. package/artifacts-zk/contracts/uln/uln302/ReceiveUln302View.sol/IReceiveUln302.json +147 -0
  267. package/artifacts-zk/contracts/uln/uln302/ReceiveUln302View.sol/ReceiveUln302View.json +252 -0
  268. package/artifacts-zk/contracts/uln/uln302/SendUln302.sol/SendUln302.json +1260 -0
  269. package/artifacts-zk/contracts/upgradeable/WorkerUpgradeable.sol/WorkerUpgradeable.json +593 -0
  270. package/artifacts-zk/contracts/upgradeable/proxy/ProxyAdmin.sol/ProxyAdmin.json +182 -0
  271. package/artifacts-zk/contracts/upgradeable/proxy/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +161 -0
  272. package/package.json +6 -6
@@ -0,0 +1,1288 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "ReadLib1002",
4
+ "sourceName": "contracts/uln/readlib/ReadLib1002.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "_endpoint",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "uint256",
15
+ "name": "_treasuryGasLimit",
16
+ "type": "uint256"
17
+ },
18
+ {
19
+ "internalType": "uint256",
20
+ "name": "_treasuryGasForFeeCap",
21
+ "type": "uint256"
22
+ }
23
+ ],
24
+ "stateMutability": "nonpayable",
25
+ "type": "constructor"
26
+ },
27
+ {
28
+ "inputs": [],
29
+ "name": "DVN_InvalidDVNIdx",
30
+ "type": "error"
31
+ },
32
+ {
33
+ "inputs": [
34
+ {
35
+ "internalType": "uint256",
36
+ "name": "cursor",
37
+ "type": "uint256"
38
+ }
39
+ ],
40
+ "name": "DVN_InvalidDVNOptions",
41
+ "type": "error"
42
+ },
43
+ {
44
+ "inputs": [],
45
+ "name": "LZ_MessageLib_OnlyEndpoint",
46
+ "type": "error"
47
+ },
48
+ {
49
+ "inputs": [],
50
+ "name": "LZ_RL_AtLeastOneDVN",
51
+ "type": "error"
52
+ },
53
+ {
54
+ "inputs": [],
55
+ "name": "LZ_RL_CannotWithdrawAltToken",
56
+ "type": "error"
57
+ },
58
+ {
59
+ "inputs": [
60
+ {
61
+ "internalType": "uint256",
62
+ "name": "requested",
63
+ "type": "uint256"
64
+ },
65
+ {
66
+ "internalType": "uint256",
67
+ "name": "available",
68
+ "type": "uint256"
69
+ }
70
+ ],
71
+ "name": "LZ_RL_InvalidAmount",
72
+ "type": "error"
73
+ },
74
+ {
75
+ "inputs": [],
76
+ "name": "LZ_RL_InvalidCmdHash",
77
+ "type": "error"
78
+ },
79
+ {
80
+ "inputs": [
81
+ {
82
+ "internalType": "uint32",
83
+ "name": "configType",
84
+ "type": "uint32"
85
+ }
86
+ ],
87
+ "name": "LZ_RL_InvalidConfigType",
88
+ "type": "error"
89
+ },
90
+ {
91
+ "inputs": [],
92
+ "name": "LZ_RL_InvalidEid",
93
+ "type": "error"
94
+ },
95
+ {
96
+ "inputs": [],
97
+ "name": "LZ_RL_InvalidExecutor",
98
+ "type": "error"
99
+ },
100
+ {
101
+ "inputs": [],
102
+ "name": "LZ_RL_InvalidOptionalDVNCount",
103
+ "type": "error"
104
+ },
105
+ {
106
+ "inputs": [],
107
+ "name": "LZ_RL_InvalidOptionalDVNThreshold",
108
+ "type": "error"
109
+ },
110
+ {
111
+ "inputs": [],
112
+ "name": "LZ_RL_InvalidPacketHeader",
113
+ "type": "error"
114
+ },
115
+ {
116
+ "inputs": [],
117
+ "name": "LZ_RL_InvalidPacketVersion",
118
+ "type": "error"
119
+ },
120
+ {
121
+ "inputs": [],
122
+ "name": "LZ_RL_InvalidReceiver",
123
+ "type": "error"
124
+ },
125
+ {
126
+ "inputs": [],
127
+ "name": "LZ_RL_InvalidRequiredDVNCount",
128
+ "type": "error"
129
+ },
130
+ {
131
+ "inputs": [],
132
+ "name": "LZ_RL_NotTreasury",
133
+ "type": "error"
134
+ },
135
+ {
136
+ "inputs": [],
137
+ "name": "LZ_RL_Unsorted",
138
+ "type": "error"
139
+ },
140
+ {
141
+ "inputs": [
142
+ {
143
+ "internalType": "uint32",
144
+ "name": "eid",
145
+ "type": "uint32"
146
+ }
147
+ ],
148
+ "name": "LZ_RL_UnsupportedEid",
149
+ "type": "error"
150
+ },
151
+ {
152
+ "inputs": [],
153
+ "name": "LZ_RL_Verifying",
154
+ "type": "error"
155
+ },
156
+ {
157
+ "inputs": [],
158
+ "name": "LZ_ULN_InvalidLegacyType1Option",
159
+ "type": "error"
160
+ },
161
+ {
162
+ "inputs": [],
163
+ "name": "LZ_ULN_InvalidLegacyType2Option",
164
+ "type": "error"
165
+ },
166
+ {
167
+ "inputs": [
168
+ {
169
+ "internalType": "uint8",
170
+ "name": "workerId",
171
+ "type": "uint8"
172
+ }
173
+ ],
174
+ "name": "LZ_ULN_InvalidWorkerId",
175
+ "type": "error"
176
+ },
177
+ {
178
+ "inputs": [
179
+ {
180
+ "internalType": "uint256",
181
+ "name": "cursor",
182
+ "type": "uint256"
183
+ }
184
+ ],
185
+ "name": "LZ_ULN_InvalidWorkerOptions",
186
+ "type": "error"
187
+ },
188
+ {
189
+ "inputs": [
190
+ {
191
+ "internalType": "uint16",
192
+ "name": "optionType",
193
+ "type": "uint16"
194
+ }
195
+ ],
196
+ "name": "LZ_ULN_UnsupportedOptionType",
197
+ "type": "error"
198
+ },
199
+ {
200
+ "inputs": [
201
+ {
202
+ "internalType": "address",
203
+ "name": "_to",
204
+ "type": "address"
205
+ },
206
+ {
207
+ "internalType": "uint256",
208
+ "name": "_value",
209
+ "type": "uint256"
210
+ }
211
+ ],
212
+ "name": "Transfer_NativeFailed",
213
+ "type": "error"
214
+ },
215
+ {
216
+ "inputs": [],
217
+ "name": "Transfer_ToAddressIsZero",
218
+ "type": "error"
219
+ },
220
+ {
221
+ "anonymous": false,
222
+ "inputs": [
223
+ {
224
+ "indexed": false,
225
+ "internalType": "address[]",
226
+ "name": "requiredDVNs",
227
+ "type": "address[]"
228
+ },
229
+ {
230
+ "indexed": false,
231
+ "internalType": "address[]",
232
+ "name": "optionalDVNs",
233
+ "type": "address[]"
234
+ },
235
+ {
236
+ "indexed": false,
237
+ "internalType": "uint256[]",
238
+ "name": "fees",
239
+ "type": "uint256[]"
240
+ }
241
+ ],
242
+ "name": "DVNFeePaid",
243
+ "type": "event"
244
+ },
245
+ {
246
+ "anonymous": false,
247
+ "inputs": [
248
+ {
249
+ "components": [
250
+ {
251
+ "internalType": "uint32",
252
+ "name": "eid",
253
+ "type": "uint32"
254
+ },
255
+ {
256
+ "components": [
257
+ {
258
+ "internalType": "address",
259
+ "name": "executor",
260
+ "type": "address"
261
+ },
262
+ {
263
+ "internalType": "uint8",
264
+ "name": "requiredDVNCount",
265
+ "type": "uint8"
266
+ },
267
+ {
268
+ "internalType": "uint8",
269
+ "name": "optionalDVNCount",
270
+ "type": "uint8"
271
+ },
272
+ {
273
+ "internalType": "uint8",
274
+ "name": "optionalDVNThreshold",
275
+ "type": "uint8"
276
+ },
277
+ {
278
+ "internalType": "address[]",
279
+ "name": "requiredDVNs",
280
+ "type": "address[]"
281
+ },
282
+ {
283
+ "internalType": "address[]",
284
+ "name": "optionalDVNs",
285
+ "type": "address[]"
286
+ }
287
+ ],
288
+ "internalType": "struct ReadLibConfig",
289
+ "name": "config",
290
+ "type": "tuple"
291
+ }
292
+ ],
293
+ "indexed": false,
294
+ "internalType": "struct SetDefaultReadLibConfigParam[]",
295
+ "name": "params",
296
+ "type": "tuple[]"
297
+ }
298
+ ],
299
+ "name": "DefaultReadLibConfigsSet",
300
+ "type": "event"
301
+ },
302
+ {
303
+ "anonymous": false,
304
+ "inputs": [
305
+ {
306
+ "indexed": false,
307
+ "internalType": "address",
308
+ "name": "executor",
309
+ "type": "address"
310
+ },
311
+ {
312
+ "indexed": false,
313
+ "internalType": "uint256",
314
+ "name": "fee",
315
+ "type": "uint256"
316
+ }
317
+ ],
318
+ "name": "ExecutorFeePaid",
319
+ "type": "event"
320
+ },
321
+ {
322
+ "anonymous": false,
323
+ "inputs": [
324
+ {
325
+ "indexed": false,
326
+ "internalType": "address",
327
+ "name": "lzToken",
328
+ "type": "address"
329
+ },
330
+ {
331
+ "indexed": false,
332
+ "internalType": "address",
333
+ "name": "receiver",
334
+ "type": "address"
335
+ },
336
+ {
337
+ "indexed": false,
338
+ "internalType": "uint256",
339
+ "name": "amount",
340
+ "type": "uint256"
341
+ }
342
+ ],
343
+ "name": "LzTokenFeeWithdrawn",
344
+ "type": "event"
345
+ },
346
+ {
347
+ "anonymous": false,
348
+ "inputs": [
349
+ {
350
+ "indexed": false,
351
+ "internalType": "address",
352
+ "name": "worker",
353
+ "type": "address"
354
+ },
355
+ {
356
+ "indexed": false,
357
+ "internalType": "address",
358
+ "name": "receiver",
359
+ "type": "address"
360
+ },
361
+ {
362
+ "indexed": false,
363
+ "internalType": "uint256",
364
+ "name": "amount",
365
+ "type": "uint256"
366
+ }
367
+ ],
368
+ "name": "NativeFeeWithdrawn",
369
+ "type": "event"
370
+ },
371
+ {
372
+ "anonymous": false,
373
+ "inputs": [
374
+ {
375
+ "indexed": true,
376
+ "internalType": "address",
377
+ "name": "previousOwner",
378
+ "type": "address"
379
+ },
380
+ {
381
+ "indexed": true,
382
+ "internalType": "address",
383
+ "name": "newOwner",
384
+ "type": "address"
385
+ }
386
+ ],
387
+ "name": "OwnershipTransferred",
388
+ "type": "event"
389
+ },
390
+ {
391
+ "anonymous": false,
392
+ "inputs": [
393
+ {
394
+ "indexed": false,
395
+ "internalType": "address",
396
+ "name": "dvn",
397
+ "type": "address"
398
+ },
399
+ {
400
+ "indexed": false,
401
+ "internalType": "bytes",
402
+ "name": "header",
403
+ "type": "bytes"
404
+ },
405
+ {
406
+ "indexed": false,
407
+ "internalType": "bytes32",
408
+ "name": "cmdHash",
409
+ "type": "bytes32"
410
+ },
411
+ {
412
+ "indexed": false,
413
+ "internalType": "bytes32",
414
+ "name": "payloadHash",
415
+ "type": "bytes32"
416
+ }
417
+ ],
418
+ "name": "PayloadVerified",
419
+ "type": "event"
420
+ },
421
+ {
422
+ "anonymous": false,
423
+ "inputs": [
424
+ {
425
+ "indexed": false,
426
+ "internalType": "address",
427
+ "name": "oapp",
428
+ "type": "address"
429
+ },
430
+ {
431
+ "indexed": false,
432
+ "internalType": "uint32",
433
+ "name": "eid",
434
+ "type": "uint32"
435
+ },
436
+ {
437
+ "components": [
438
+ {
439
+ "internalType": "address",
440
+ "name": "executor",
441
+ "type": "address"
442
+ },
443
+ {
444
+ "internalType": "uint8",
445
+ "name": "requiredDVNCount",
446
+ "type": "uint8"
447
+ },
448
+ {
449
+ "internalType": "uint8",
450
+ "name": "optionalDVNCount",
451
+ "type": "uint8"
452
+ },
453
+ {
454
+ "internalType": "uint8",
455
+ "name": "optionalDVNThreshold",
456
+ "type": "uint8"
457
+ },
458
+ {
459
+ "internalType": "address[]",
460
+ "name": "requiredDVNs",
461
+ "type": "address[]"
462
+ },
463
+ {
464
+ "internalType": "address[]",
465
+ "name": "optionalDVNs",
466
+ "type": "address[]"
467
+ }
468
+ ],
469
+ "indexed": false,
470
+ "internalType": "struct ReadLibConfig",
471
+ "name": "config",
472
+ "type": "tuple"
473
+ }
474
+ ],
475
+ "name": "ReadLibConfigSet",
476
+ "type": "event"
477
+ },
478
+ {
479
+ "anonymous": false,
480
+ "inputs": [
481
+ {
482
+ "indexed": false,
483
+ "internalType": "uint256",
484
+ "name": "newTreasuryNativeFeeCap",
485
+ "type": "uint256"
486
+ }
487
+ ],
488
+ "name": "TreasuryNativeFeeCapSet",
489
+ "type": "event"
490
+ },
491
+ {
492
+ "anonymous": false,
493
+ "inputs": [
494
+ {
495
+ "indexed": false,
496
+ "internalType": "address",
497
+ "name": "treasury",
498
+ "type": "address"
499
+ }
500
+ ],
501
+ "name": "TreasurySet",
502
+ "type": "event"
503
+ },
504
+ {
505
+ "inputs": [
506
+ {
507
+ "internalType": "address",
508
+ "name": "oapp",
509
+ "type": "address"
510
+ },
511
+ {
512
+ "internalType": "uint32",
513
+ "name": "eid",
514
+ "type": "uint32"
515
+ },
516
+ {
517
+ "internalType": "uint64",
518
+ "name": "nonce",
519
+ "type": "uint64"
520
+ }
521
+ ],
522
+ "name": "cmdHashLookup",
523
+ "outputs": [
524
+ {
525
+ "internalType": "bytes32",
526
+ "name": "cmdHash",
527
+ "type": "bytes32"
528
+ }
529
+ ],
530
+ "stateMutability": "view",
531
+ "type": "function"
532
+ },
533
+ {
534
+ "inputs": [
535
+ {
536
+ "internalType": "bytes",
537
+ "name": "_packetHeader",
538
+ "type": "bytes"
539
+ },
540
+ {
541
+ "internalType": "bytes32",
542
+ "name": "_cmdHash",
543
+ "type": "bytes32"
544
+ },
545
+ {
546
+ "internalType": "bytes32",
547
+ "name": "_payloadHash",
548
+ "type": "bytes32"
549
+ }
550
+ ],
551
+ "name": "commitVerification",
552
+ "outputs": [],
553
+ "stateMutability": "nonpayable",
554
+ "type": "function"
555
+ },
556
+ {
557
+ "inputs": [
558
+ {
559
+ "internalType": "address",
560
+ "name": "worker",
561
+ "type": "address"
562
+ }
563
+ ],
564
+ "name": "fees",
565
+ "outputs": [
566
+ {
567
+ "internalType": "uint256",
568
+ "name": "fee",
569
+ "type": "uint256"
570
+ }
571
+ ],
572
+ "stateMutability": "view",
573
+ "type": "function"
574
+ },
575
+ {
576
+ "inputs": [
577
+ {
578
+ "internalType": "address",
579
+ "name": "_oapp",
580
+ "type": "address"
581
+ },
582
+ {
583
+ "internalType": "uint32",
584
+ "name": "_remoteEid",
585
+ "type": "uint32"
586
+ }
587
+ ],
588
+ "name": "getAppReadLibConfig",
589
+ "outputs": [
590
+ {
591
+ "components": [
592
+ {
593
+ "internalType": "address",
594
+ "name": "executor",
595
+ "type": "address"
596
+ },
597
+ {
598
+ "internalType": "uint8",
599
+ "name": "requiredDVNCount",
600
+ "type": "uint8"
601
+ },
602
+ {
603
+ "internalType": "uint8",
604
+ "name": "optionalDVNCount",
605
+ "type": "uint8"
606
+ },
607
+ {
608
+ "internalType": "uint8",
609
+ "name": "optionalDVNThreshold",
610
+ "type": "uint8"
611
+ },
612
+ {
613
+ "internalType": "address[]",
614
+ "name": "requiredDVNs",
615
+ "type": "address[]"
616
+ },
617
+ {
618
+ "internalType": "address[]",
619
+ "name": "optionalDVNs",
620
+ "type": "address[]"
621
+ }
622
+ ],
623
+ "internalType": "struct ReadLibConfig",
624
+ "name": "",
625
+ "type": "tuple"
626
+ }
627
+ ],
628
+ "stateMutability": "view",
629
+ "type": "function"
630
+ },
631
+ {
632
+ "inputs": [
633
+ {
634
+ "internalType": "uint32",
635
+ "name": "_eid",
636
+ "type": "uint32"
637
+ },
638
+ {
639
+ "internalType": "address",
640
+ "name": "_oapp",
641
+ "type": "address"
642
+ },
643
+ {
644
+ "internalType": "uint32",
645
+ "name": "_configType",
646
+ "type": "uint32"
647
+ }
648
+ ],
649
+ "name": "getConfig",
650
+ "outputs": [
651
+ {
652
+ "internalType": "bytes",
653
+ "name": "",
654
+ "type": "bytes"
655
+ }
656
+ ],
657
+ "stateMutability": "view",
658
+ "type": "function"
659
+ },
660
+ {
661
+ "inputs": [
662
+ {
663
+ "internalType": "address",
664
+ "name": "_oapp",
665
+ "type": "address"
666
+ },
667
+ {
668
+ "internalType": "uint32",
669
+ "name": "_remoteEid",
670
+ "type": "uint32"
671
+ }
672
+ ],
673
+ "name": "getReadLibConfig",
674
+ "outputs": [
675
+ {
676
+ "components": [
677
+ {
678
+ "internalType": "address",
679
+ "name": "executor",
680
+ "type": "address"
681
+ },
682
+ {
683
+ "internalType": "uint8",
684
+ "name": "requiredDVNCount",
685
+ "type": "uint8"
686
+ },
687
+ {
688
+ "internalType": "uint8",
689
+ "name": "optionalDVNCount",
690
+ "type": "uint8"
691
+ },
692
+ {
693
+ "internalType": "uint8",
694
+ "name": "optionalDVNThreshold",
695
+ "type": "uint8"
696
+ },
697
+ {
698
+ "internalType": "address[]",
699
+ "name": "requiredDVNs",
700
+ "type": "address[]"
701
+ },
702
+ {
703
+ "internalType": "address[]",
704
+ "name": "optionalDVNs",
705
+ "type": "address[]"
706
+ }
707
+ ],
708
+ "internalType": "struct ReadLibConfig",
709
+ "name": "rtnConfig",
710
+ "type": "tuple"
711
+ }
712
+ ],
713
+ "stateMutability": "view",
714
+ "type": "function"
715
+ },
716
+ {
717
+ "inputs": [],
718
+ "name": "getTreasuryAndNativeFeeCap",
719
+ "outputs": [
720
+ {
721
+ "internalType": "address",
722
+ "name": "",
723
+ "type": "address"
724
+ },
725
+ {
726
+ "internalType": "uint256",
727
+ "name": "",
728
+ "type": "uint256"
729
+ }
730
+ ],
731
+ "stateMutability": "view",
732
+ "type": "function"
733
+ },
734
+ {
735
+ "inputs": [
736
+ {
737
+ "internalType": "bytes32",
738
+ "name": "headerHash",
739
+ "type": "bytes32"
740
+ },
741
+ {
742
+ "internalType": "bytes32",
743
+ "name": "cmdHash",
744
+ "type": "bytes32"
745
+ },
746
+ {
747
+ "internalType": "address",
748
+ "name": "dvn",
749
+ "type": "address"
750
+ }
751
+ ],
752
+ "name": "hashLookup",
753
+ "outputs": [
754
+ {
755
+ "internalType": "bytes32",
756
+ "name": "payloadHash",
757
+ "type": "bytes32"
758
+ }
759
+ ],
760
+ "stateMutability": "view",
761
+ "type": "function"
762
+ },
763
+ {
764
+ "inputs": [
765
+ {
766
+ "internalType": "uint32",
767
+ "name": "_eid",
768
+ "type": "uint32"
769
+ }
770
+ ],
771
+ "name": "isSupportedEid",
772
+ "outputs": [
773
+ {
774
+ "internalType": "bool",
775
+ "name": "",
776
+ "type": "bool"
777
+ }
778
+ ],
779
+ "stateMutability": "view",
780
+ "type": "function"
781
+ },
782
+ {
783
+ "inputs": [],
784
+ "name": "messageLibType",
785
+ "outputs": [
786
+ {
787
+ "internalType": "enum MessageLibType",
788
+ "name": "",
789
+ "type": "uint8"
790
+ }
791
+ ],
792
+ "stateMutability": "pure",
793
+ "type": "function"
794
+ },
795
+ {
796
+ "inputs": [],
797
+ "name": "owner",
798
+ "outputs": [
799
+ {
800
+ "internalType": "address",
801
+ "name": "",
802
+ "type": "address"
803
+ }
804
+ ],
805
+ "stateMutability": "view",
806
+ "type": "function"
807
+ },
808
+ {
809
+ "inputs": [
810
+ {
811
+ "components": [
812
+ {
813
+ "internalType": "uint64",
814
+ "name": "nonce",
815
+ "type": "uint64"
816
+ },
817
+ {
818
+ "internalType": "uint32",
819
+ "name": "srcEid",
820
+ "type": "uint32"
821
+ },
822
+ {
823
+ "internalType": "address",
824
+ "name": "sender",
825
+ "type": "address"
826
+ },
827
+ {
828
+ "internalType": "uint32",
829
+ "name": "dstEid",
830
+ "type": "uint32"
831
+ },
832
+ {
833
+ "internalType": "bytes32",
834
+ "name": "receiver",
835
+ "type": "bytes32"
836
+ },
837
+ {
838
+ "internalType": "bytes32",
839
+ "name": "guid",
840
+ "type": "bytes32"
841
+ },
842
+ {
843
+ "internalType": "bytes",
844
+ "name": "message",
845
+ "type": "bytes"
846
+ }
847
+ ],
848
+ "internalType": "struct Packet",
849
+ "name": "_packet",
850
+ "type": "tuple"
851
+ },
852
+ {
853
+ "internalType": "bytes",
854
+ "name": "_options",
855
+ "type": "bytes"
856
+ },
857
+ {
858
+ "internalType": "bool",
859
+ "name": "_payInLzToken",
860
+ "type": "bool"
861
+ }
862
+ ],
863
+ "name": "quote",
864
+ "outputs": [
865
+ {
866
+ "components": [
867
+ {
868
+ "internalType": "uint256",
869
+ "name": "nativeFee",
870
+ "type": "uint256"
871
+ },
872
+ {
873
+ "internalType": "uint256",
874
+ "name": "lzTokenFee",
875
+ "type": "uint256"
876
+ }
877
+ ],
878
+ "internalType": "struct MessagingFee",
879
+ "name": "",
880
+ "type": "tuple"
881
+ }
882
+ ],
883
+ "stateMutability": "view",
884
+ "type": "function"
885
+ },
886
+ {
887
+ "inputs": [],
888
+ "name": "renounceOwnership",
889
+ "outputs": [],
890
+ "stateMutability": "nonpayable",
891
+ "type": "function"
892
+ },
893
+ {
894
+ "inputs": [
895
+ {
896
+ "components": [
897
+ {
898
+ "internalType": "uint64",
899
+ "name": "nonce",
900
+ "type": "uint64"
901
+ },
902
+ {
903
+ "internalType": "uint32",
904
+ "name": "srcEid",
905
+ "type": "uint32"
906
+ },
907
+ {
908
+ "internalType": "address",
909
+ "name": "sender",
910
+ "type": "address"
911
+ },
912
+ {
913
+ "internalType": "uint32",
914
+ "name": "dstEid",
915
+ "type": "uint32"
916
+ },
917
+ {
918
+ "internalType": "bytes32",
919
+ "name": "receiver",
920
+ "type": "bytes32"
921
+ },
922
+ {
923
+ "internalType": "bytes32",
924
+ "name": "guid",
925
+ "type": "bytes32"
926
+ },
927
+ {
928
+ "internalType": "bytes",
929
+ "name": "message",
930
+ "type": "bytes"
931
+ }
932
+ ],
933
+ "internalType": "struct Packet",
934
+ "name": "_packet",
935
+ "type": "tuple"
936
+ },
937
+ {
938
+ "internalType": "bytes",
939
+ "name": "_options",
940
+ "type": "bytes"
941
+ },
942
+ {
943
+ "internalType": "bool",
944
+ "name": "_payInLzToken",
945
+ "type": "bool"
946
+ }
947
+ ],
948
+ "name": "send",
949
+ "outputs": [
950
+ {
951
+ "components": [
952
+ {
953
+ "internalType": "uint256",
954
+ "name": "nativeFee",
955
+ "type": "uint256"
956
+ },
957
+ {
958
+ "internalType": "uint256",
959
+ "name": "lzTokenFee",
960
+ "type": "uint256"
961
+ }
962
+ ],
963
+ "internalType": "struct MessagingFee",
964
+ "name": "",
965
+ "type": "tuple"
966
+ },
967
+ {
968
+ "internalType": "bytes",
969
+ "name": "",
970
+ "type": "bytes"
971
+ }
972
+ ],
973
+ "stateMutability": "nonpayable",
974
+ "type": "function"
975
+ },
976
+ {
977
+ "inputs": [
978
+ {
979
+ "internalType": "address",
980
+ "name": "_oapp",
981
+ "type": "address"
982
+ },
983
+ {
984
+ "components": [
985
+ {
986
+ "internalType": "uint32",
987
+ "name": "eid",
988
+ "type": "uint32"
989
+ },
990
+ {
991
+ "internalType": "uint32",
992
+ "name": "configType",
993
+ "type": "uint32"
994
+ },
995
+ {
996
+ "internalType": "bytes",
997
+ "name": "config",
998
+ "type": "bytes"
999
+ }
1000
+ ],
1001
+ "internalType": "struct SetConfigParam[]",
1002
+ "name": "_params",
1003
+ "type": "tuple[]"
1004
+ }
1005
+ ],
1006
+ "name": "setConfig",
1007
+ "outputs": [],
1008
+ "stateMutability": "nonpayable",
1009
+ "type": "function"
1010
+ },
1011
+ {
1012
+ "inputs": [
1013
+ {
1014
+ "components": [
1015
+ {
1016
+ "internalType": "uint32",
1017
+ "name": "eid",
1018
+ "type": "uint32"
1019
+ },
1020
+ {
1021
+ "components": [
1022
+ {
1023
+ "internalType": "address",
1024
+ "name": "executor",
1025
+ "type": "address"
1026
+ },
1027
+ {
1028
+ "internalType": "uint8",
1029
+ "name": "requiredDVNCount",
1030
+ "type": "uint8"
1031
+ },
1032
+ {
1033
+ "internalType": "uint8",
1034
+ "name": "optionalDVNCount",
1035
+ "type": "uint8"
1036
+ },
1037
+ {
1038
+ "internalType": "uint8",
1039
+ "name": "optionalDVNThreshold",
1040
+ "type": "uint8"
1041
+ },
1042
+ {
1043
+ "internalType": "address[]",
1044
+ "name": "requiredDVNs",
1045
+ "type": "address[]"
1046
+ },
1047
+ {
1048
+ "internalType": "address[]",
1049
+ "name": "optionalDVNs",
1050
+ "type": "address[]"
1051
+ }
1052
+ ],
1053
+ "internalType": "struct ReadLibConfig",
1054
+ "name": "config",
1055
+ "type": "tuple"
1056
+ }
1057
+ ],
1058
+ "internalType": "struct SetDefaultReadLibConfigParam[]",
1059
+ "name": "_params",
1060
+ "type": "tuple[]"
1061
+ }
1062
+ ],
1063
+ "name": "setDefaultReadLibConfigs",
1064
+ "outputs": [],
1065
+ "stateMutability": "nonpayable",
1066
+ "type": "function"
1067
+ },
1068
+ {
1069
+ "inputs": [
1070
+ {
1071
+ "internalType": "address",
1072
+ "name": "_treasury",
1073
+ "type": "address"
1074
+ }
1075
+ ],
1076
+ "name": "setTreasury",
1077
+ "outputs": [],
1078
+ "stateMutability": "nonpayable",
1079
+ "type": "function"
1080
+ },
1081
+ {
1082
+ "inputs": [
1083
+ {
1084
+ "internalType": "uint256",
1085
+ "name": "_newTreasuryNativeFeeCap",
1086
+ "type": "uint256"
1087
+ }
1088
+ ],
1089
+ "name": "setTreasuryNativeFeeCap",
1090
+ "outputs": [],
1091
+ "stateMutability": "nonpayable",
1092
+ "type": "function"
1093
+ },
1094
+ {
1095
+ "inputs": [
1096
+ {
1097
+ "internalType": "bytes4",
1098
+ "name": "_interfaceId",
1099
+ "type": "bytes4"
1100
+ }
1101
+ ],
1102
+ "name": "supportsInterface",
1103
+ "outputs": [
1104
+ {
1105
+ "internalType": "bool",
1106
+ "name": "",
1107
+ "type": "bool"
1108
+ }
1109
+ ],
1110
+ "stateMutability": "view",
1111
+ "type": "function"
1112
+ },
1113
+ {
1114
+ "inputs": [
1115
+ {
1116
+ "internalType": "address",
1117
+ "name": "newOwner",
1118
+ "type": "address"
1119
+ }
1120
+ ],
1121
+ "name": "transferOwnership",
1122
+ "outputs": [],
1123
+ "stateMutability": "nonpayable",
1124
+ "type": "function"
1125
+ },
1126
+ {
1127
+ "inputs": [
1128
+ {
1129
+ "components": [
1130
+ {
1131
+ "internalType": "address",
1132
+ "name": "executor",
1133
+ "type": "address"
1134
+ },
1135
+ {
1136
+ "internalType": "uint8",
1137
+ "name": "requiredDVNCount",
1138
+ "type": "uint8"
1139
+ },
1140
+ {
1141
+ "internalType": "uint8",
1142
+ "name": "optionalDVNCount",
1143
+ "type": "uint8"
1144
+ },
1145
+ {
1146
+ "internalType": "uint8",
1147
+ "name": "optionalDVNThreshold",
1148
+ "type": "uint8"
1149
+ },
1150
+ {
1151
+ "internalType": "address[]",
1152
+ "name": "requiredDVNs",
1153
+ "type": "address[]"
1154
+ },
1155
+ {
1156
+ "internalType": "address[]",
1157
+ "name": "optionalDVNs",
1158
+ "type": "address[]"
1159
+ }
1160
+ ],
1161
+ "internalType": "struct ReadLibConfig",
1162
+ "name": "_config",
1163
+ "type": "tuple"
1164
+ },
1165
+ {
1166
+ "internalType": "bytes32",
1167
+ "name": "_headerHash",
1168
+ "type": "bytes32"
1169
+ },
1170
+ {
1171
+ "internalType": "bytes32",
1172
+ "name": "_cmdHash",
1173
+ "type": "bytes32"
1174
+ },
1175
+ {
1176
+ "internalType": "bytes32",
1177
+ "name": "_payloadHash",
1178
+ "type": "bytes32"
1179
+ }
1180
+ ],
1181
+ "name": "verifiable",
1182
+ "outputs": [
1183
+ {
1184
+ "internalType": "bool",
1185
+ "name": "",
1186
+ "type": "bool"
1187
+ }
1188
+ ],
1189
+ "stateMutability": "view",
1190
+ "type": "function"
1191
+ },
1192
+ {
1193
+ "inputs": [
1194
+ {
1195
+ "internalType": "bytes",
1196
+ "name": "_packetHeader",
1197
+ "type": "bytes"
1198
+ },
1199
+ {
1200
+ "internalType": "bytes32",
1201
+ "name": "_cmdHash",
1202
+ "type": "bytes32"
1203
+ },
1204
+ {
1205
+ "internalType": "bytes32",
1206
+ "name": "_payloadHash",
1207
+ "type": "bytes32"
1208
+ }
1209
+ ],
1210
+ "name": "verify",
1211
+ "outputs": [],
1212
+ "stateMutability": "nonpayable",
1213
+ "type": "function"
1214
+ },
1215
+ {
1216
+ "inputs": [],
1217
+ "name": "version",
1218
+ "outputs": [
1219
+ {
1220
+ "internalType": "uint64",
1221
+ "name": "major",
1222
+ "type": "uint64"
1223
+ },
1224
+ {
1225
+ "internalType": "uint8",
1226
+ "name": "minor",
1227
+ "type": "uint8"
1228
+ },
1229
+ {
1230
+ "internalType": "uint8",
1231
+ "name": "endpointVersion",
1232
+ "type": "uint8"
1233
+ }
1234
+ ],
1235
+ "stateMutability": "pure",
1236
+ "type": "function"
1237
+ },
1238
+ {
1239
+ "inputs": [
1240
+ {
1241
+ "internalType": "address",
1242
+ "name": "_to",
1243
+ "type": "address"
1244
+ },
1245
+ {
1246
+ "internalType": "uint256",
1247
+ "name": "_amount",
1248
+ "type": "uint256"
1249
+ }
1250
+ ],
1251
+ "name": "withdrawFee",
1252
+ "outputs": [],
1253
+ "stateMutability": "nonpayable",
1254
+ "type": "function"
1255
+ },
1256
+ {
1257
+ "inputs": [
1258
+ {
1259
+ "internalType": "address",
1260
+ "name": "_lzToken",
1261
+ "type": "address"
1262
+ },
1263
+ {
1264
+ "internalType": "address",
1265
+ "name": "_to",
1266
+ "type": "address"
1267
+ },
1268
+ {
1269
+ "internalType": "uint256",
1270
+ "name": "_amount",
1271
+ "type": "uint256"
1272
+ }
1273
+ ],
1274
+ "name": "withdrawLzTokenFee",
1275
+ "outputs": [],
1276
+ "stateMutability": "nonpayable",
1277
+ "type": "function"
1278
+ },
1279
+ {
1280
+ "stateMutability": "payable",
1281
+ "type": "receive"
1282
+ }
1283
+ ],
1284
+ "bytecode": "0x60e06040523480156200001157600080fd5b5060405162005d9238038062005d9283398101604081905262000034916200011c565b82836001600160a01b031663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000074573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009a919062000161565b620000a533620000cc565b6001600160a01b0390911660805263ffffffff1660a05260c0919091526005555062000190565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806000606084860312156200013257600080fd5b83516001600160a01b03811681146200014a57600080fd5b602085015160409095015190969495509392505050565b6000602082840312156200017457600080fd5b815163ffffffff811681146200018957600080fd5b9392505050565b60805160a05160c051615baf620001e3600039600081816120af0152612eed01526000610c6b0152600081816107290152818161086e015281816109eb01528181610e5a0152611bca0152615baf6000f3fe60806040526004361061019a5760003560e01c80637620fd01116100e1578063d15b0d491161008a578063f0f4426011610064578063f0f442601461052c578063f2fde38b1461054c578063faaebd211461056c578063fd9be5221461059957600080fd5b8063d15b0d49146104bf578063d80e9bd9146104df578063ea69d69d1461050c57600080fd5b80639c33abf7116100bb5780639c33abf714610452578063ab750e751461047f578063c85f4b4e1461049f57600080fd5b80637620fd01146103935780638da5cb5b146103f05780638eb0bf301461042557600080fd5b80633c782a5211610143578063594924da1161011d578063594924da1461033e5780636750cd4c1461035e578063715018a61461037e57600080fd5b80633c782a52146102a55780634389e58f146102e357806354fd4d501461031157600080fd5b80631fb51225116101745780631fb5122514610217578063200175f71461026357806320efd7221461028557600080fd5b806301ffc9a7146101a6578063052368ca146101db5780631881d94d146101fb57600080fd5b366101a157005b600080fd5b3480156101b257600080fd5b506101c66101c136600461478b565b6105b9565b60405190151581526020015b60405180910390f35b3480156101e757600080fd5b506101c66101f63660046147cd565b61069e565b34801561020757600080fd5b5060026040516101d29190614826565b34801561022357600080fd5b506102556102323660046148c5565b600260209081526000938452604080852082529284528284209052825290205481565b6040519081526020016101d2565b34801561026f57600080fd5b5061028361027e36600461490a565b6106bf565b005b34801561029157600080fd5b506102836102a0366004614997565b61086c565b3480156102b157600080fd5b506102556102c03660046149ec565b600360209081526000938452604080852082529284528284209052825290205481565b3480156102ef57600080fd5b506103036102fe366004614a75565b6109d3565b6040516101d2929190614b67565b34801561031d57600080fd5b5060408051600a8152600060208201526002918101919091526060016101d2565b34801561034a57600080fd5b50610283610359366004614b8b565b610be9565b34801561036a57600080fd5b506101c6610379366004614bdc565b610ec3565b34801561038a57600080fd5b50610283610ece565b34801561039f57600080fd5b506103c460065460055473ffffffffffffffffffffffffffffffffffffffff90911691565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d2565b3480156103fc57600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d2565b34801561043157600080fd5b50610445610440366004614bf7565b610ee2565b6040516101d29190614cfc565b34801561045e57600080fd5b5061047261046d366004614d0f565b61132f565b6040516101d29190614d4b565b34801561048b57600080fd5b5061028361049a366004614b8b565b6113cf565b3480156104ab57600080fd5b506102836104ba366004614d5e565b61145a565b3480156104cb57600080fd5b506102836104da366004614da0565b611644565b3480156104eb57600080fd5b506104ff6104fa366004614a75565b6116d2565b6040516101d29190614db9565b34801561051857600080fd5b50610445610527366004614bf7565b611844565b34801561053857600080fd5b50610283610547366004614dd0565b611a04565b34801561055857600080fd5b50610283610567366004614dd0565b611a7f565b34801561057857600080fd5b50610255610587366004614dd0565b60046020526000908152604090205481565b3480156105a557600080fd5b506102836105b4366004614ded565b611b36565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f97f0258400000000000000000000000000000000000000000000000000000000148061064c57507fffffffff0000000000000000000000000000000000000000000000000000000082167fb6e9ace300000000000000000000000000000000000000000000000000000000145b8061069857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60006106b46106ac86615025565b858585611cab565b90505b949350505050565b60065473ffffffffffffffffffffffffffffffffffffffff163314610710576040517f96830d1e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e1758bd86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190615031565b73ffffffffffffffffffffffffffffffffffffffff1603610803576040517fb77f504400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61080e838383611e21565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527fe081464b7278501267de69fa85b7b9560b0ae05d5fbfaab9b1986c70356e2efe906060015b60405180910390a1505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633146108db576040517f467409c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156109cd57368383838181106108f9576108f961504e565b905060200281019061090b919061507d565b905061092261091d6020830183614bdc565b611e94565b60016109346040830160208401614bdc565b63ffffffff16036109745761096f61094f6020830183614bdc565b8661095d60408501856150bb565b81019061096a9190615120565b611edb565b6109c4565b6109846040820160208301614bdc565b6040517f0cb84e8200000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526024015b60405180910390fd5b506001016108de565b50505050565b604080518082019091526000808252602082015260607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610a58576040517f467409c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080860135610a89610a706060890160408a01614dd0565b73ffffffffffffffffffffffffffffffffffffffff1690565b14610ac0576040517fa4884a5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610ace888888611f24565b9092509050600080610b00610ae960608c0160408d01614dd0565b610af960808d0160608e01614bdc565b858a611fad565b9092509050610b0f8284615184565b9250610b1e60c08b018b6150bb565b604051610b2c929190615197565b6040518091039020600260008c6040016020810190610b4b9190614dd0565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600090812090610b8460808e0160608f01614bdc565b63ffffffff168152602080820192909252604001600090812091610baa908e018e6151a7565b67ffffffffffffffff16815260208082019290925260409081016000209290925581518083019092529381529283015250925090505b94509492505050565b60518314610c23576040517f864d08b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001610c2f858561213b565b60ff1614610c69576040517f7952a82f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff16610c9a858561215d565b63ffffffff1614610cd7576040517f3e96df1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610ce38585612180565b90506000610cf18686612192565b90506000610cff87876121a2565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832063ffffffff87168452825280832067ffffffffffffffff851684529091529020549091508514610d83576040517f660e96ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d8f8484610ee2565b9050610db4818989604051610da5929190615197565b604051809103902088886121c5565b600060405180606001604052808563ffffffff168152602001610dd78b8b612362565b815267ffffffffffffffff858116602092830152604080517fa825d747000000000000000000000000000000000000000000000000000000008152845163ffffffff16600482015292840151602484015283015116604482015273ffffffffffffffffffffffffffffffffffffffff8781166064830152608482018990529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a825d7479060a401600060405180830381600087803b158015610ea057600080fd5b505af1158015610eb4573d6000803e3d6000fd5b50505050505050505050505050565b60006106988261237b565b610ed66123fa565b610ee0600061247b565b565b6040805160c0810182526000808252602080830182905282840182905260608084018390526080840181905260a084015263ffffffff85168083527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49825284832073ffffffffffffffffffffffffffffffffffffffff888116855260018452868520928552919092529390912080549293919290911680610f9a57825473ffffffffffffffffffffffffffffffffffffffff16610f9c565b805b73ffffffffffffffffffffffffffffffffffffffff168452815474010000000000000000000000000000000000000000900460ff1661108e57825474010000000000000000000000000000000000000000900460ff1615611089578260010180548060200260200160405190810160405280929190818152602001828054801561105c57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611031575b50505050506080850152825474010000000000000000000000000000000000000000900460ff1660208501525b611144565b815474010000000000000000000000000000000000000000900460ff90811614611144578160010180548060200260200160405190810160405280929190818152602001828054801561111757602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116110ec575b50505050506080850152815474010000000000000000000000000000000000000000900460ff1660208501525b81547501000000000000000000000000000000000000000000900460ff166112435782547501000000000000000000000000000000000000000000900460ff161561123e57826002018054806020026020016040519081016040528092919081815260200182805480156111ee57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116111c3575b505050505060a0850152825460ff75010000000000000000000000000000000000000000008204811660408701527601000000000000000000000000000000000000000000009091041660608501525b61131d565b81547501000000000000000000000000000000000000000000900460ff9081161461131d57816002018054806020026020016040519081016040528092919081815260200182805480156112cd57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116112a2575b505050505060a0850152815460ff75010000000000000000000000000000000000000000008204811660408701527601000000000000000000000000000000000000000000009091041660608501525b611326846124f0565b50505092915050565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff83160161138e576113688385610ee2565b6040516020016113789190614cfc565b60405160208183030381529060405290506113c8565b6040517f0cb84e8200000000000000000000000000000000000000000000000000000000815263ffffffff831660048201526024016109bb565b9392505050565b806003600086866040516113e4929190615197565b60408051918290039091208252602080830193909352908101600090812086825283528181203380835293528190209290925590517f04708e5dfef6005d6d646eb761e3b9e412e1cc5749fc9d884bca441cc7a952589161144c91879087908790879061520b565b60405180910390a150505050565b6114626123fa565b60005b8181101561160657368383838181106114805761148061504e565b9050602002810190611492919061524f565b905060ff6114a36020830183615283565b6114b49060408101906020016152b7565b60ff16036114ee576040517f55a01c0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ff6114fd6020830183615283565b61150e9060608101906040016152b7565b60ff1603611548576040517fe35436c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115666115586020830183615283565b61156190615025565b6124f0565b60006115756020830183615283565b611583906020810190614dd0565b73ffffffffffffffffffffffffffffffffffffffff16036115d0576040517f76df55a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115fd60006115e26020840184614bdc565b6115ef6020850185615283565b6115f890615025565b612541565b50600101611465565b507f65edb7dc0f21ba15c998f8bd220ea9fec30757ff9fb07696c634bcce00ce6f348282604051611638929190615384565b60405180910390a15050565b61164c6123fa565b600554811115611696576005546040517fb79d12630000000000000000000000000000000000000000000000000000000081526109bb918391600401918252602082015260400190565b60058190556040518181527f491ff913b5444f4136b0d4075f020cfe3a5f60de926ec0b091612401a22b7842906020015b60405180910390a150565b60408051808201909152600080825260208201526000806116f386866128f0565b9092509050600061170a6060890160408a01614dd0565b9050600061171e60808a0160608b01614bdc565b9050600061172c8383610ee2565b9050600061175c82856117466117418f6155bd565b612b31565b8e8060c0019061175691906150bb565b8a612c17565b82516040517fc8f8dcd100000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063c8f8dcd1906117b49087908a9060040161565b565b602060405180830381865afa1580156117d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f5919061568a565b6117ff9082615184565b90506000806118108686858d612deb565b909250905061181f8284615184565b6040805180820190915290815260208101919091529c9b505050505050505050505050565b6040805160c0810182526000808252602082018190529181018290526060808201929092526080810182905260a081019190915273ffffffffffffffffffffffffffffffffffffffff808416600090815260016020818152604080842063ffffffff88168552825292839020835160c0810185528154958616815260ff740100000000000000000000000000000000000000008704811682850152750100000000000000000000000000000000000000000087048116828701527601000000000000000000000000000000000000000000009096049095166060860152918201805484518184028101840190955280855292936080860193909283018282801561198457602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611959575b50505050508152602001600282018054806020026020016040519081016040528092919081815260200182805480156119f357602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116119c8575b505050505081525050905092915050565b611a0c6123fa565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f906020016116c7565b611a876123fa565b73ffffffffffffffffffffffffffffffffffffffff8116611b2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016109bb565b611b338161247b565b50565b3360009081526004602052604090205480821115611b8a576040517fb79d126300000000000000000000000000000000000000000000000000000000815260048101839052602481018290526044016109bb565b336000908152600460208181526040808420868603905580517fe1758bd800000000000000000000000000000000000000000000000000000000815290517f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169363e1758bd89383820193909291908290030181865afa158015611c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4b9190615031565b9050611c58818585612f2f565b6040805133815273ffffffffffffffffffffffffffffffffffffffff861660208201529081018490527f820b7fd51bf79c54350bab98400651b3314ff6e79b33528821871d94a66698839060600161144c565b602084015160009060ff1615611d645760005b856020015160ff168160ff161015611d4c57611d3686608001518260ff1681518110611cec57611cec61504e565b6020026020010151868686600092835260036020908152604080852093855292815282842073ffffffffffffffffffffffffffffffffffffffff9095168452939093529020541490565b611d445760009150506106b7565b600101611cbe565b50846040015160ff16600003611d64575060016106b7565b606085015160005b866040015160ff168160ff161015611e1457611de48760a001518260ff1681518110611d9a57611d9a61504e565b6020026020010151878787600092835260036020908152604080852093855292815282842073ffffffffffffffffffffffffffffffffffffffff9095168452939093529020541490565b15611e0c5781611df3816156a3565b9250508160ff16600003611e0c576001925050506106b7565b600101611d6c565b5060009695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216611e6e576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e8f73ffffffffffffffffffffffffffffffffffffffff84168383612f5f565b505050565b611e9d8161237b565b611b33576040517f0ff03e5400000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526024016109bb565b611ee6828483612541565b611ef08284610ee2565b507fe8e2a5b92fc69ac50188ea142042492be8e8c34febb10b2cd02983684336e14282848360405161085f939291906156de565b60606000806000611f3586866128f0565b90925090506000611f5f611f4f60608a0160408b01614dd0565b61044060808b0160608c01614bdc565b8051909150611f7e90611f7860608b0160408c01614dd0565b85612fec565b9350600080611f8e838b8661311f565b9092509050611f9d8287615184565b909a909950975050505050505050565b600654600090819073ffffffffffffffffffffffffffffffffffffffff1615610be05760405173ffffffffffffffffffffffffffffffffffffffff8716602482015263ffffffff8616604482015260648101859052831515608482015260009060a401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd51c54860000000000000000000000000000000000000000000000000000000017905260065491925060009182916120d79173ffffffffffffffffffffffffffffffffffffffff16907f0000000000000000000000000000000000000000000000000000000000000000908490876131e7565b915091506120e787878484613298565b9095509350841561212f5760065473ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604081208054879290612129908490615184565b90915550505b50505094509492505050565b600061214a6001828486615719565b61215391615743565b60f81c9392505050565b600061216d6031602d8486615719565b6121769161578b565b60e01c9392505050565b60006113c861218f8484613313565b90565b600061216d600d60098486615719565b60006121b2600960018486615719565b6121bb916157d1565b60c01c9392505050565b6121d184848484611cab565b612207576040517f28ca4b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602084015160ff16156122b25760005b846020015160ff168160ff1610156122b057600084815260036020908152604080832086845290915281206080870151805191929160ff851690811061225f5761225f61504e565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055806001019050612217565b505b604084015160ff16156109cd5760005b846040015160ff168160ff16101561235b576000848152600360209081526040808320868452909152812060a0870151805191929160ff851690811061230a5761230a61504e565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600090558060010190506122c2565b5050505050565b6000612372602d600d8486615719565b6113c891615817565b63ffffffff811660009081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4960205260408120805474010000000000000000000000000000000000000000900460ff161515806113c8575054760100000000000000000000000000000000000000000000900460ff16151592915050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ee0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109bb565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b602081015160ff1615801561250a5750606081015160ff16155b15611b33576040517f9b5f9f7a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015160ff908116148061255c5750602081015160ff16155b156125a3576080810151511561259e576040517f55a01c0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612622565b806020015160ff168160800151511415806125de575060026125c7600160ff615853565b6125d1919061586c565b60ff16816020015160ff16115b15612615576040517f55a01c0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126228160800151613323565b604081015160ff908116148061263d5750604081015160ff16155b156126c35760a0810151511561267f576040517fe35436c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff16156126be576040517ff92940be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61279a565b806040015160ff168160a00151511415806126fe575060026126e7600160ff615853565b6126f1919061586c565b60ff16816040015160ff16115b15612735576040517fe35436c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff1615806127565750806040015160ff16816060015160ff16115b1561278d576040517ff92940be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61279a8160a00151613323565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260016020818152604080842063ffffffff881685528252928390208551815487840151958801516060890151929097167fffffffffffffffffffffff000000000000000000000000000000000000000000909116177401000000000000000000000000000000000000000060ff96871602177fffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000968616969096027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff169590951776010000000000000000000000000000000000000000000094909516939093029390931782556080840151805185946128cc9385019201906146f5565b5060a082015180516128e89160028401916020909101906146f5565b505050505050565b6060806002831015612931576040517f6592671c000000000000000000000000000000000000000000000000000000008152600060048201526024016109bb565b60006129406002828688615719565b612949916158b5565b60f01c905060027ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8201612b1a578060005b86831015612aa657600061299460018501858a8c615719565b61299d91615743565b60f81c905060008190036129e0576040517f6780cfaf000000000000000000000000000000000000000000000000000000008152600060048201526024016109bb565b8160ff166000036129f357809150612a30565b8160ff168160ff1614612a3057366000612a0f86868c8e615719565b91509150612a2089898685856133bd565b9099509750859450919250829150505b6001840193600090612a4790600301868b8d615719565b612a50916158b5565b60f01c90506000819003612a93576040517f6592671c000000000000000000000000000000000000000000000000000000008152600481018690526024016109bb565b8060020161ffff1685019450505061297b565b828714612ae2576040517f6592671c000000000000000000000000000000000000000000000000000000008152600481018490526024016109bb565b6002871115612b1357366000612afa85858b8d615719565b91509150612b0b88888585856133bd565b909850965050505b5050612b28565b612b25828787613532565b93505b50509250929050565b8051602080830151604080850151606080870151608088015193517f01000000000000000000000000000000000000000000000000000000000000009681019690965260c09690961b7fffffffffffffffff00000000000000000000000000000000000000000000000016602186015260e093841b7fffffffff00000000000000000000000000000000000000000000000000000000908116602987015273ffffffffffffffffffffffffffffffffffffffff909216602d8601529490921b909116604d83015260518201526071015b6040516020818303038152906040529050919050565b6000806000612c25846137b1565b91509150600089604001518a60200151612c3f91906158fb565b905060005b8160ff168160ff161015612ddd5760008b6020015160ff168260ff1610612c995760a08c015160208d0151612c799084615853565b60ff1681518110612c8c57612c8c61504e565b6020026020010151612cbb565b8b608001518260ff1681518110612cb257612cb261504e565b60200260200101515b60408051602081019091526000808252919250905b8551811015612d28578360ff16868281518110612cef57612cef61504e565b602002602001015160ff1603612d2057868181518110612d1157612d1161504e565b60200260200101519150612d28565b600101612cd0565b506040517ffdb9b0f100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83169063fdb9b0f190612d83908f908f908f908f908890600401615914565b602060405180830381865afa158015612da0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dc4919061568a565b612dce9088615184565b96505050806001019050612c44565b505050509695505050505050565b600654600090819073ffffffffffffffffffffffffffffffffffffffff1615610be05760405173ffffffffffffffffffffffffffffffffffffffff8716602482015263ffffffff8616604482015260648101859052831515608482015260009060a401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd4244221000000000000000000000000000000000000000000000000000000001790526006549192506000918291612f139173ffffffffffffffffffffffffffffffffffffffff16907f00000000000000000000000000000000000000000000000000000000000000009086613a55565b91509150612f2387878484613298565b94509450505050610be0565b73ffffffffffffffffffffffffffffffffffffffff8316612f5457611e8f8282613b02565b611e8f838383611e21565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052611e8f908490613c08565b6040517fc015bb7d00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff85169063c015bb7d90613043908690869060040161565b565b6020604051808303816000875af1158015613062573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613086919061568a565b905080156130c95773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812080548392906130c3908490615184565b90915550505b6040805173ffffffffffffffffffffffffffffffffffffffff86168152602081018390527f61ed099e74a97a1d7f8bb0952a88ca8b7b8ebd00c126ea04671f92a81213318a910160405180910390a19392505050565b6000606081613130611741866155bd565b90506000613145613140876155bd565b613d17565b905060606131708861315c89840160408b01614dd0565b8561316a60c08c018c6150bb565b8b613d34565b60405191965091506131889084908490602001615976565b60405160208183030381529060405293507f07ea52d82345d6e838192107d8fd7123d9c2ec8e916cd0aad13fd2b60db2464488608001518960a00151836040516131d4939291906159a5565b60405180910390a1505050935093915050565b60006060863b80830361320e5760408051600080825260208201909252925092505061328e565b60008060008761ffff1667ffffffffffffffff81111561323057613230614e19565b6040519080825280601f01601f19166020018201604052801561325a576020820181803683370190505b509050600080885160208a018c8f8ff191503d92508783111561327b578792505b828152826000602083013e909450925050505b9550959350505050565b6000808315806132a9575082516020115b156132b957506000905080610be0565b6000838060200190518101906132cf919061568a565b905085156132df57809150613309565b600060055488116132f2576005546132f4565b875b90508082116133035781613305565b805b9350505b5094509492505050565b6000612372605160318486615719565b6000805b8251811015611e8f5760008382815181106133445761334461504e565b602002602001015190508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16116133b3576040517fc0762a5d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150600101613327565b6060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff8616016134585786511561341a5786848460405160200161340693929190615a03565b604051602081830303815290604052613451565b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050505b9650613527565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff8616016134f0578551156134b25785848460405160200161349e93929190615a03565b6040516020818303038152906040526134e9565b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050505b9550613527565b6040517f6780cfaf00000000000000000000000000000000000000000000000000000000815260ff861660048201526024016109bb565b509495939450505050565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61ffff8516016136585760228214613599576040517f0dc652a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006135ba6135ac602260028688615719565b6135b591615817565b614010565b6040517f0100000000000000000000000000000000000000000000000000000000000000602082018190527e11000000000000000000000000000000000000000000000000000000000000602183015260238201527fffffffffffffffffffffffffffffffff00000000000000000000000000000000608083901b1660248201529091506034016040516020818303038152906040529150506113c8565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe61ffff851601613779576042821115806136935750606282115b156136ca576040517fc0927c5600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006136dd6135ac602260028688615719565b905060006136f26135ac604260228789615719565b905060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbe8501613726866042818a615719565b61372f91615817565b60405160086020938403029190911c9250613760916001916011918391889183916031916002918b918b9101615a2b565b60405160208183030381529060405293505050506113c8565b6040517f4170513000000000000000000000000000000000000000000000000000000000815261ffff851660048201526024016109bb565b60608082516000036137c257915091565b60006137cd846140b6565b90508060ff1660010361387f5760408051600180825281830190925290816020015b60608152602001906001900390816137ef579050509250838360008151811061381a5761381a61504e565b6020908102919091010152604080516001808252818301909252908160200160208202803683370190505091506138528460036141db565b826000815181106138655761386561504e565b602002602001019060ff16908160ff168152505050915091565b8060ff1667ffffffffffffffff81111561389b5761389b614e19565b6040519080825280602002602001820160405280156138c4578160200160208202803683370190505b5091508060ff1667ffffffffffffffff8111156138e3576138e3614e19565b60405190808252806020026020018201604052801561391657816020015b60608152602001906001900390816139015790505b50925060008060ff5b86518310156139ca57600190920191600061393a888561425b565b600294909401939050600061394f89866141db565b90508260ff1660ff03613964578092506139bb565b8260ff168160ff16146139bb577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8486030160006139a38b87846142db565b90506139b18a8a8784614455565b5093909301929150815b5061ffff16929092019161391f565b81830360006139da8985846142db565b90506139e888888584614455565b60005b8660ff168160ff161015613a4957878160ff1681518110613a0e57613a0e61504e565b6020908102919091010180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0160ff1690526001016139eb565b50505050505050915091565b60006060853b808303613a7c57604080516000808252602082019092529250925050610be0565b60008060008761ffff1667ffffffffffffffff811115613a9e57613a9e614e19565b6040519080825280601f01601f191660200182016040528015613ac8576020820181803683370190505b509050600080885160208a018d8dfa91503d925087831115613ae8578792505b828152826000602083013e90999098509650505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216613b4f576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114613ba9576040519150601f19603f3d011682016040523d82523d6000602084013e613bae565b606091505b5050905080611e8f576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602481018390526044016109bb565b6000613c6a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166145849092919063ffffffff16565b9050805160001480613c8b575080806020019051810190613c8b9190615b24565b611e8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016109bb565b60608160a001518260c00151604051602001612c01929190615b41565b60006060600080613d44856137b1565b9150915060008a604001518b60200151613d5e91906158fb565b90508060ff1667ffffffffffffffff811115613d7c57613d7c614e19565b604051908082528060200260200182016040528015613da5578160200160208202803683370190505b50935060005b8160ff168160ff1610156140015760008c6020015160ff168260ff1610613e005760a08d015160208e0151613de09084615853565b60ff1681518110613df357613df361504e565b6020026020010151613e22565b8c608001518260ff1681518110613e1957613e1961504e565b60200260200101515b60408051602081019091526000808252919250905b8551811015613e8f578360ff16868281518110613e5657613e5661504e565b602002602001015160ff1603613e8757868181518110613e7857613e7861504e565b60200260200101519150613e8f565b600101613e37565b508173ffffffffffffffffffffffffffffffffffffffff1663f42ed2ed8e8e8e8e866040518663ffffffff1660e01b8152600401613ed1959493929190615914565b6020604051808303816000875af1158015613ef0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f14919061568a565b878460ff1681518110613f2957613f2961504e565b6020026020010181815250506000878460ff1681518110613f4c57613f4c61504e565b60200260200101511115613ff757868360ff1681518110613f6f57613f6f61504e565b6020026020010151600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613fc59190615184565b92505081905550868360ff1681518110613fe157613fe161504e565b602002602001015188613ff49190615184565b97505b5050600101613dab565b50505050965096945050505050565b60006fffffffffffffffffffffffffffffffff8211156140b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f323820626974730000000000000000000000000000000000000000000000000060648201526084016109bb565b5090565b600080805b83518210156141975760019091019060006140d6858461425b565b905060028301925060028161ffff161015614120576040517f04eb6e0c000000000000000000000000000000000000000000000000000000008152600481018490526024016109bb565b600061412c86856141db565b90508060ff1660ff0361416b576040517fd3d3d9bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160ff82161b83166141885760019485019460ff82161b831792505b5061ffff1691909101906140bb565b835182146141d4576040517f04eb6e0c000000000000000000000000000000000000000000000000000000008152600481018390526024016109bb565b5050919050565b60006141e8826001615184565b83511015614252576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f746f55696e74385f6f75744f66426f756e64730000000000000000000000000060448201526064016109bb565b50016001015190565b6000614268826002615184565b835110156142d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e647300000000000000000000000060448201526064016109bb565b50016002015190565b6060816142e981601f615184565b1015614351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016109bb565b61435b8284615184565b845110156143c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e647300000000000000000000000000000060448201526064016109bb565b6060821580156143e4576040519150600082526020820160405261444c565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561441d578051835260209283019201614405565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b8160ff1660ff03614492576040517fd3d3d9bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061449f8360016158fb565b905060005b84518110156128e85760008582815181106144c1576144c161504e565b602002602001015190508060ff168360ff1603614536578682815181106144ea576144ea61504e565b602002602001015184604051602001614504929190615976565b6040516020818303038152906040528783815181106145255761452561504e565b6020026020010181905250506128e8565b8060ff1660000361457b57828683815181106145545761455461504e565b602002602001019060ff16908160ff1681525050838783815181106145255761452561504e565b506001016144a4565b60606106b78484600085856000808673ffffffffffffffffffffffffffffffffffffffff1685876040516145b89190615b67565b60006040518083038185875af1925050503d80600081146145f5576040519150601f19603f3d011682016040523d82523d6000602084013e6145fa565b606091505b509150915061460b87838387614616565b979650505050505050565b606083156146ac5782516000036146a55773ffffffffffffffffffffffffffffffffffffffff85163b6146a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109bb565b50816106b7565b6106b783838151156146c15781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb9190614d4b565b82805482825590600052602060002090810192821561476f579160200282015b8281111561476f57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190614715565b506140b29291505b808211156140b25760008155600101614777565b60006020828403121561479d57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146113c857600080fd5b600080600080608085870312156147e357600080fd5b843567ffffffffffffffff8111156147fa57600080fd5b850160c0818803121561480c57600080fd5b966020860135965060408601359560600135945092505050565b6020810160038310614861577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b73ffffffffffffffffffffffffffffffffffffffff81168114611b3357600080fd5b803561489481614867565b919050565b803563ffffffff8116811461489457600080fd5b803567ffffffffffffffff8116811461489457600080fd5b6000806000606084860312156148da57600080fd5b83356148e581614867565b92506148f360208501614899565b9150614901604085016148ad565b90509250925092565b60008060006060848603121561491f57600080fd5b833561492a81614867565b9250602084013561493a81614867565b929592945050506040919091013590565b60008083601f84011261495d57600080fd5b50813567ffffffffffffffff81111561497557600080fd5b6020830191508360208260051b850101111561499057600080fd5b9250929050565b6000806000604084860312156149ac57600080fd5b83356149b781614867565b9250602084013567ffffffffffffffff8111156149d357600080fd5b6149df8682870161494b565b9497909650939450505050565b600080600060608486031215614a0157600080fd5b83359250602084013591506040840135614a1a81614867565b809150509250925092565b60008083601f840112614a3757600080fd5b50813567ffffffffffffffff811115614a4f57600080fd5b60208301915083602082850101111561499057600080fd5b8015158114611b3357600080fd5b60008060008060608587031215614a8b57600080fd5b843567ffffffffffffffff80821115614aa357600080fd5b9086019060e08289031215614ab757600080fd5b90945060208601359080821115614acd57600080fd5b50614ada87828801614a25565b9094509250506040850135614aee81614a67565b939692955090935050565b60005b83811015614b14578181015183820152602001614afc565b50506000910152565b60008151808452614b35816020860160208601614af9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b82518152602080840151908201526060604082015260006106b76060830184614b1d565b60008060008060608587031215614ba157600080fd5b843567ffffffffffffffff811115614bb857600080fd5b614bc487828801614a25565b90989097506020870135966040013595509350505050565b600060208284031215614bee57600080fd5b6113c882614899565b60008060408385031215614c0a57600080fd5b8235614c1581614867565b9150614c2360208401614899565b90509250929050565b60008151808452602080850194506020840160005b83811015614c7357815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101614c41565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff815116825260ff602082015116602083015260ff604082015116604083015260ff60608201511660608301526000608082015160c06080850152614cda60c0850182614c2c565b905060a083015184820360a0860152614cf38282614c2c565b95945050505050565b6020815260006113c86020830184614c7e565b600080600060608486031215614d2457600080fd5b614d2d84614899565b92506020840135614d3d81614867565b915061490160408501614899565b6020815260006113c86020830184614b1d565b60008060208385031215614d7157600080fd5b823567ffffffffffffffff811115614d8857600080fd5b614d948582860161494b565b90969095509350505050565b600060208284031215614db257600080fd5b5035919050565b815181526020808301519082015260408101610698565b600060208284031215614de257600080fd5b81356113c881614867565b60008060408385031215614e0057600080fd5b8235614e0b81614867565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715614e6b57614e6b614e19565b60405290565b60405160e0810167ffffffffffffffff81118282101715614e6b57614e6b614e19565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614edb57614edb614e19565b604052919050565b803560ff8116811461489457600080fd5b600082601f830112614f0557600080fd5b8135602067ffffffffffffffff821115614f2157614f21614e19565b8160051b614f30828201614e94565b9283528481018201928281019087851115614f4a57600080fd5b83870192505b8483101561460b578235614f6381614867565b82529183019190830190614f50565b600060c08284031215614f8457600080fd5b614f8c614e48565b9050614f9782614889565b8152614fa560208301614ee3565b6020820152614fb660408301614ee3565b6040820152614fc760608301614ee3565b6060820152608082013567ffffffffffffffff80821115614fe757600080fd5b614ff385838601614ef4565b608084015260a084013591508082111561500c57600080fd5b5061501984828501614ef4565b60a08301525092915050565b60006106983683614f72565b60006020828403121561504357600080fd5b81516113c881614867565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181126150b157600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126150f057600080fd5b83018035915067ffffffffffffffff82111561510b57600080fd5b60200191503681900382131561499057600080fd5b60006020828403121561513257600080fd5b813567ffffffffffffffff81111561514957600080fd5b6106b784828501614f72565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561069857610698615155565b8183823760009101908152919050565b6000602082840312156151b957600080fd5b6113c8826148ad565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815260806020820152600061523b6080830186886151c2565b604083019490945250606001529392505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126150b157600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff418336030181126150b157600080fd5b6000602082840312156152c957600080fd5b6113c882614ee3565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261530757600080fd5b830160208101925035905067ffffffffffffffff81111561532757600080fd5b8060051b360382131561499057600080fd5b8183526000602080850194508260005b85811015614c7357813561535c81614867565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101615349565b60208082528181018390526000906040808401600586901b8501820187855b88811015615521577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08089850301855282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c360301811261540557600080fd5b8b0163ffffffff61541582614899565b168552878101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4182360301811261544c57600080fd5b85890188905201803561545e81614867565b73ffffffffffffffffffffffffffffffffffffffff1685880152615483818901614ee3565b606060ff808316828901526154998a8501614ee3565b92506080818416818a01526154af838601614ee3565b935060a09250818416838a01526154c8818601866152d2565b60c08b810152945091506154e3905061010089018483615339565b9250506154f2818401846152d2565b93509050838783030160e088015261550b828483615339565b978a0197965050509287019250506001016153a3565b509098975050505050505050565b600082601f83011261554057600080fd5b813567ffffffffffffffff81111561555a5761555a614e19565b61558b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614e94565b8181528460208386010111156155a057600080fd5b816020850160208301376000918101602001919091529392505050565b600060e082360312156155cf57600080fd5b6155d7614e71565b6155e0836148ad565b81526155ee60208401614899565b60208201526155ff60408401614889565b604082015261561060608401614899565b60608201526080830135608082015260a083013560a082015260c083013567ffffffffffffffff81111561564357600080fd5b61564f3682860161552f565b60c08301525092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006106b76040830184614b1d565b60006020828403121561569c57600080fd5b5051919050565b600060ff8216806156b6576156b6615155565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff831660208201526060604082015260006106b46060830184614c7e565b6000808585111561572957600080fd5b8386111561573657600080fd5b5050820193919092039150565b7fff0000000000000000000000000000000000000000000000000000000000000081358181169160018510156157835780818660010360031b1b83161692505b505092915050565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156157835760049490940360031b84901b1690921692915050565b7fffffffffffffffff00000000000000000000000000000000000000000000000081358181169160088510156157835760089490940360031b84901b1690921692915050565b80356020831015610698577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b60ff828116828216039081111561069857610698615155565b600060ff8316806158a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8060ff84160491505092915050565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156157835760029490940360031b84901b1690921692915050565b60ff818116838216019081111561069857610698615155565b73ffffffffffffffffffffffffffffffffffffffff861681526080602082015260006159436080830187614b1d565b82810360408401526159568186886151c2565b9050828103606084015261596a8185614b1d565b98975050505050505050565b60008351615988818460208801614af9565b83519083019061599c818360208801614af9565b01949350505050565b6060815260006159b86060830186614c2c565b602083820360208501526159cc8287614c2c565b84810360408601528551808252602080880194509091019060005b81811015615521578451835293830193918301916001016159e7565b60008451615a15818460208901614af9565b8201838582376000930192835250909392505050565b60007fff00000000000000000000000000000000000000000000000000000000000000808c60f81b1683527fffff000000000000000000000000000000000000000000000000000000000000808c60f01b166001850152818b60f81b1660038501527fffffffffffffffffffffffffffffffff000000000000000000000000000000008a60801b166004850152818960f81b166014850152808860f01b16601585015250808660f81b16601784015250615b0c601883018560801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000169052565b50602881019190915260480198975050505050505050565b600060208284031215615b3657600080fd5b81516113c881614a67565b82815260008251615b59816020850160208701614af9565b919091016020019392505050565b600082516150b1818460208701614af956fea2646970667358221220a08f921b20f6954702229b9b59cb4577e9b30e40b354bc3a8c116713153fa0dd64736f6c63430008160033",
1285
+ "deployedBytecode": "0x60806040526004361061019a5760003560e01c80637620fd01116100e1578063d15b0d491161008a578063f0f4426011610064578063f0f442601461052c578063f2fde38b1461054c578063faaebd211461056c578063fd9be5221461059957600080fd5b8063d15b0d49146104bf578063d80e9bd9146104df578063ea69d69d1461050c57600080fd5b80639c33abf7116100bb5780639c33abf714610452578063ab750e751461047f578063c85f4b4e1461049f57600080fd5b80637620fd01146103935780638da5cb5b146103f05780638eb0bf301461042557600080fd5b80633c782a5211610143578063594924da1161011d578063594924da1461033e5780636750cd4c1461035e578063715018a61461037e57600080fd5b80633c782a52146102a55780634389e58f146102e357806354fd4d501461031157600080fd5b80631fb51225116101745780631fb5122514610217578063200175f71461026357806320efd7221461028557600080fd5b806301ffc9a7146101a6578063052368ca146101db5780631881d94d146101fb57600080fd5b366101a157005b600080fd5b3480156101b257600080fd5b506101c66101c136600461478b565b6105b9565b60405190151581526020015b60405180910390f35b3480156101e757600080fd5b506101c66101f63660046147cd565b61069e565b34801561020757600080fd5b5060026040516101d29190614826565b34801561022357600080fd5b506102556102323660046148c5565b600260209081526000938452604080852082529284528284209052825290205481565b6040519081526020016101d2565b34801561026f57600080fd5b5061028361027e36600461490a565b6106bf565b005b34801561029157600080fd5b506102836102a0366004614997565b61086c565b3480156102b157600080fd5b506102556102c03660046149ec565b600360209081526000938452604080852082529284528284209052825290205481565b3480156102ef57600080fd5b506103036102fe366004614a75565b6109d3565b6040516101d2929190614b67565b34801561031d57600080fd5b5060408051600a8152600060208201526002918101919091526060016101d2565b34801561034a57600080fd5b50610283610359366004614b8b565b610be9565b34801561036a57600080fd5b506101c6610379366004614bdc565b610ec3565b34801561038a57600080fd5b50610283610ece565b34801561039f57600080fd5b506103c460065460055473ffffffffffffffffffffffffffffffffffffffff90911691565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d2565b3480156103fc57600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d2565b34801561043157600080fd5b50610445610440366004614bf7565b610ee2565b6040516101d29190614cfc565b34801561045e57600080fd5b5061047261046d366004614d0f565b61132f565b6040516101d29190614d4b565b34801561048b57600080fd5b5061028361049a366004614b8b565b6113cf565b3480156104ab57600080fd5b506102836104ba366004614d5e565b61145a565b3480156104cb57600080fd5b506102836104da366004614da0565b611644565b3480156104eb57600080fd5b506104ff6104fa366004614a75565b6116d2565b6040516101d29190614db9565b34801561051857600080fd5b50610445610527366004614bf7565b611844565b34801561053857600080fd5b50610283610547366004614dd0565b611a04565b34801561055857600080fd5b50610283610567366004614dd0565b611a7f565b34801561057857600080fd5b50610255610587366004614dd0565b60046020526000908152604090205481565b3480156105a557600080fd5b506102836105b4366004614ded565b611b36565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f97f0258400000000000000000000000000000000000000000000000000000000148061064c57507fffffffff0000000000000000000000000000000000000000000000000000000082167fb6e9ace300000000000000000000000000000000000000000000000000000000145b8061069857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60006106b46106ac86615025565b858585611cab565b90505b949350505050565b60065473ffffffffffffffffffffffffffffffffffffffff163314610710576040517f96830d1e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e1758bd86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190615031565b73ffffffffffffffffffffffffffffffffffffffff1603610803576040517fb77f504400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61080e838383611e21565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527fe081464b7278501267de69fa85b7b9560b0ae05d5fbfaab9b1986c70356e2efe906060015b60405180910390a1505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633146108db576040517f467409c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156109cd57368383838181106108f9576108f961504e565b905060200281019061090b919061507d565b905061092261091d6020830183614bdc565b611e94565b60016109346040830160208401614bdc565b63ffffffff16036109745761096f61094f6020830183614bdc565b8661095d60408501856150bb565b81019061096a9190615120565b611edb565b6109c4565b6109846040820160208301614bdc565b6040517f0cb84e8200000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526024015b60405180910390fd5b506001016108de565b50505050565b604080518082019091526000808252602082015260607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610a58576040517f467409c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080860135610a89610a706060890160408a01614dd0565b73ffffffffffffffffffffffffffffffffffffffff1690565b14610ac0576040517fa4884a5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610ace888888611f24565b9092509050600080610b00610ae960608c0160408d01614dd0565b610af960808d0160608e01614bdc565b858a611fad565b9092509050610b0f8284615184565b9250610b1e60c08b018b6150bb565b604051610b2c929190615197565b6040518091039020600260008c6040016020810190610b4b9190614dd0565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600090812090610b8460808e0160608f01614bdc565b63ffffffff168152602080820192909252604001600090812091610baa908e018e6151a7565b67ffffffffffffffff16815260208082019290925260409081016000209290925581518083019092529381529283015250925090505b94509492505050565b60518314610c23576040517f864d08b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001610c2f858561213b565b60ff1614610c69576040517f7952a82f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff16610c9a858561215d565b63ffffffff1614610cd7576040517f3e96df1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610ce38585612180565b90506000610cf18686612192565b90506000610cff87876121a2565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832063ffffffff87168452825280832067ffffffffffffffff851684529091529020549091508514610d83576040517f660e96ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d8f8484610ee2565b9050610db4818989604051610da5929190615197565b604051809103902088886121c5565b600060405180606001604052808563ffffffff168152602001610dd78b8b612362565b815267ffffffffffffffff858116602092830152604080517fa825d747000000000000000000000000000000000000000000000000000000008152845163ffffffff16600482015292840151602484015283015116604482015273ffffffffffffffffffffffffffffffffffffffff8781166064830152608482018990529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a825d7479060a401600060405180830381600087803b158015610ea057600080fd5b505af1158015610eb4573d6000803e3d6000fd5b50505050505050505050505050565b60006106988261237b565b610ed66123fa565b610ee0600061247b565b565b6040805160c0810182526000808252602080830182905282840182905260608084018390526080840181905260a084015263ffffffff85168083527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49825284832073ffffffffffffffffffffffffffffffffffffffff888116855260018452868520928552919092529390912080549293919290911680610f9a57825473ffffffffffffffffffffffffffffffffffffffff16610f9c565b805b73ffffffffffffffffffffffffffffffffffffffff168452815474010000000000000000000000000000000000000000900460ff1661108e57825474010000000000000000000000000000000000000000900460ff1615611089578260010180548060200260200160405190810160405280929190818152602001828054801561105c57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611031575b50505050506080850152825474010000000000000000000000000000000000000000900460ff1660208501525b611144565b815474010000000000000000000000000000000000000000900460ff90811614611144578160010180548060200260200160405190810160405280929190818152602001828054801561111757602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116110ec575b50505050506080850152815474010000000000000000000000000000000000000000900460ff1660208501525b81547501000000000000000000000000000000000000000000900460ff166112435782547501000000000000000000000000000000000000000000900460ff161561123e57826002018054806020026020016040519081016040528092919081815260200182805480156111ee57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116111c3575b505050505060a0850152825460ff75010000000000000000000000000000000000000000008204811660408701527601000000000000000000000000000000000000000000009091041660608501525b61131d565b81547501000000000000000000000000000000000000000000900460ff9081161461131d57816002018054806020026020016040519081016040528092919081815260200182805480156112cd57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116112a2575b505050505060a0850152815460ff75010000000000000000000000000000000000000000008204811660408701527601000000000000000000000000000000000000000000009091041660608501525b611326846124f0565b50505092915050565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff83160161138e576113688385610ee2565b6040516020016113789190614cfc565b60405160208183030381529060405290506113c8565b6040517f0cb84e8200000000000000000000000000000000000000000000000000000000815263ffffffff831660048201526024016109bb565b9392505050565b806003600086866040516113e4929190615197565b60408051918290039091208252602080830193909352908101600090812086825283528181203380835293528190209290925590517f04708e5dfef6005d6d646eb761e3b9e412e1cc5749fc9d884bca441cc7a952589161144c91879087908790879061520b565b60405180910390a150505050565b6114626123fa565b60005b8181101561160657368383838181106114805761148061504e565b9050602002810190611492919061524f565b905060ff6114a36020830183615283565b6114b49060408101906020016152b7565b60ff16036114ee576040517f55a01c0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ff6114fd6020830183615283565b61150e9060608101906040016152b7565b60ff1603611548576040517fe35436c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115666115586020830183615283565b61156190615025565b6124f0565b60006115756020830183615283565b611583906020810190614dd0565b73ffffffffffffffffffffffffffffffffffffffff16036115d0576040517f76df55a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115fd60006115e26020840184614bdc565b6115ef6020850185615283565b6115f890615025565b612541565b50600101611465565b507f65edb7dc0f21ba15c998f8bd220ea9fec30757ff9fb07696c634bcce00ce6f348282604051611638929190615384565b60405180910390a15050565b61164c6123fa565b600554811115611696576005546040517fb79d12630000000000000000000000000000000000000000000000000000000081526109bb918391600401918252602082015260400190565b60058190556040518181527f491ff913b5444f4136b0d4075f020cfe3a5f60de926ec0b091612401a22b7842906020015b60405180910390a150565b60408051808201909152600080825260208201526000806116f386866128f0565b9092509050600061170a6060890160408a01614dd0565b9050600061171e60808a0160608b01614bdc565b9050600061172c8383610ee2565b9050600061175c82856117466117418f6155bd565b612b31565b8e8060c0019061175691906150bb565b8a612c17565b82516040517fc8f8dcd100000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063c8f8dcd1906117b49087908a9060040161565b565b602060405180830381865afa1580156117d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f5919061568a565b6117ff9082615184565b90506000806118108686858d612deb565b909250905061181f8284615184565b6040805180820190915290815260208101919091529c9b505050505050505050505050565b6040805160c0810182526000808252602082018190529181018290526060808201929092526080810182905260a081019190915273ffffffffffffffffffffffffffffffffffffffff808416600090815260016020818152604080842063ffffffff88168552825292839020835160c0810185528154958616815260ff740100000000000000000000000000000000000000008704811682850152750100000000000000000000000000000000000000000087048116828701527601000000000000000000000000000000000000000000009096049095166060860152918201805484518184028101840190955280855292936080860193909283018282801561198457602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611959575b50505050508152602001600282018054806020026020016040519081016040528092919081815260200182805480156119f357602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116119c8575b505050505081525050905092915050565b611a0c6123fa565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f906020016116c7565b611a876123fa565b73ffffffffffffffffffffffffffffffffffffffff8116611b2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016109bb565b611b338161247b565b50565b3360009081526004602052604090205480821115611b8a576040517fb79d126300000000000000000000000000000000000000000000000000000000815260048101839052602481018290526044016109bb565b336000908152600460208181526040808420868603905580517fe1758bd800000000000000000000000000000000000000000000000000000000815290517f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169363e1758bd89383820193909291908290030181865afa158015611c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4b9190615031565b9050611c58818585612f2f565b6040805133815273ffffffffffffffffffffffffffffffffffffffff861660208201529081018490527f820b7fd51bf79c54350bab98400651b3314ff6e79b33528821871d94a66698839060600161144c565b602084015160009060ff1615611d645760005b856020015160ff168160ff161015611d4c57611d3686608001518260ff1681518110611cec57611cec61504e565b6020026020010151868686600092835260036020908152604080852093855292815282842073ffffffffffffffffffffffffffffffffffffffff9095168452939093529020541490565b611d445760009150506106b7565b600101611cbe565b50846040015160ff16600003611d64575060016106b7565b606085015160005b866040015160ff168160ff161015611e1457611de48760a001518260ff1681518110611d9a57611d9a61504e565b6020026020010151878787600092835260036020908152604080852093855292815282842073ffffffffffffffffffffffffffffffffffffffff9095168452939093529020541490565b15611e0c5781611df3816156a3565b9250508160ff16600003611e0c576001925050506106b7565b600101611d6c565b5060009695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216611e6e576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e8f73ffffffffffffffffffffffffffffffffffffffff84168383612f5f565b505050565b611e9d8161237b565b611b33576040517f0ff03e5400000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526024016109bb565b611ee6828483612541565b611ef08284610ee2565b507fe8e2a5b92fc69ac50188ea142042492be8e8c34febb10b2cd02983684336e14282848360405161085f939291906156de565b60606000806000611f3586866128f0565b90925090506000611f5f611f4f60608a0160408b01614dd0565b61044060808b0160608c01614bdc565b8051909150611f7e90611f7860608b0160408c01614dd0565b85612fec565b9350600080611f8e838b8661311f565b9092509050611f9d8287615184565b909a909950975050505050505050565b600654600090819073ffffffffffffffffffffffffffffffffffffffff1615610be05760405173ffffffffffffffffffffffffffffffffffffffff8716602482015263ffffffff8616604482015260648101859052831515608482015260009060a401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd51c54860000000000000000000000000000000000000000000000000000000017905260065491925060009182916120d79173ffffffffffffffffffffffffffffffffffffffff16907f0000000000000000000000000000000000000000000000000000000000000000908490876131e7565b915091506120e787878484613298565b9095509350841561212f5760065473ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604081208054879290612129908490615184565b90915550505b50505094509492505050565b600061214a6001828486615719565b61215391615743565b60f81c9392505050565b600061216d6031602d8486615719565b6121769161578b565b60e01c9392505050565b60006113c861218f8484613313565b90565b600061216d600d60098486615719565b60006121b2600960018486615719565b6121bb916157d1565b60c01c9392505050565b6121d184848484611cab565b612207576040517f28ca4b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602084015160ff16156122b25760005b846020015160ff168160ff1610156122b057600084815260036020908152604080832086845290915281206080870151805191929160ff851690811061225f5761225f61504e565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055806001019050612217565b505b604084015160ff16156109cd5760005b846040015160ff168160ff16101561235b576000848152600360209081526040808320868452909152812060a0870151805191929160ff851690811061230a5761230a61504e565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600090558060010190506122c2565b5050505050565b6000612372602d600d8486615719565b6113c891615817565b63ffffffff811660009081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4960205260408120805474010000000000000000000000000000000000000000900460ff161515806113c8575054760100000000000000000000000000000000000000000000900460ff16151592915050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ee0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109bb565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b602081015160ff1615801561250a5750606081015160ff16155b15611b33576040517f9b5f9f7a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015160ff908116148061255c5750602081015160ff16155b156125a3576080810151511561259e576040517f55a01c0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612622565b806020015160ff168160800151511415806125de575060026125c7600160ff615853565b6125d1919061586c565b60ff16816020015160ff16115b15612615576040517f55a01c0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126228160800151613323565b604081015160ff908116148061263d5750604081015160ff16155b156126c35760a0810151511561267f576040517fe35436c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff16156126be576040517ff92940be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61279a565b806040015160ff168160a00151511415806126fe575060026126e7600160ff615853565b6126f1919061586c565b60ff16816040015160ff16115b15612735576040517fe35436c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff1615806127565750806040015160ff16816060015160ff16115b1561278d576040517ff92940be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61279a8160a00151613323565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260016020818152604080842063ffffffff881685528252928390208551815487840151958801516060890151929097167fffffffffffffffffffffff000000000000000000000000000000000000000000909116177401000000000000000000000000000000000000000060ff96871602177fffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000968616969096027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff169590951776010000000000000000000000000000000000000000000094909516939093029390931782556080840151805185946128cc9385019201906146f5565b5060a082015180516128e89160028401916020909101906146f5565b505050505050565b6060806002831015612931576040517f6592671c000000000000000000000000000000000000000000000000000000008152600060048201526024016109bb565b60006129406002828688615719565b612949916158b5565b60f01c905060027ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8201612b1a578060005b86831015612aa657600061299460018501858a8c615719565b61299d91615743565b60f81c905060008190036129e0576040517f6780cfaf000000000000000000000000000000000000000000000000000000008152600060048201526024016109bb565b8160ff166000036129f357809150612a30565b8160ff168160ff1614612a3057366000612a0f86868c8e615719565b91509150612a2089898685856133bd565b9099509750859450919250829150505b6001840193600090612a4790600301868b8d615719565b612a50916158b5565b60f01c90506000819003612a93576040517f6592671c000000000000000000000000000000000000000000000000000000008152600481018690526024016109bb565b8060020161ffff1685019450505061297b565b828714612ae2576040517f6592671c000000000000000000000000000000000000000000000000000000008152600481018490526024016109bb565b6002871115612b1357366000612afa85858b8d615719565b91509150612b0b88888585856133bd565b909850965050505b5050612b28565b612b25828787613532565b93505b50509250929050565b8051602080830151604080850151606080870151608088015193517f01000000000000000000000000000000000000000000000000000000000000009681019690965260c09690961b7fffffffffffffffff00000000000000000000000000000000000000000000000016602186015260e093841b7fffffffff00000000000000000000000000000000000000000000000000000000908116602987015273ffffffffffffffffffffffffffffffffffffffff909216602d8601529490921b909116604d83015260518201526071015b6040516020818303038152906040529050919050565b6000806000612c25846137b1565b91509150600089604001518a60200151612c3f91906158fb565b905060005b8160ff168160ff161015612ddd5760008b6020015160ff168260ff1610612c995760a08c015160208d0151612c799084615853565b60ff1681518110612c8c57612c8c61504e565b6020026020010151612cbb565b8b608001518260ff1681518110612cb257612cb261504e565b60200260200101515b60408051602081019091526000808252919250905b8551811015612d28578360ff16868281518110612cef57612cef61504e565b602002602001015160ff1603612d2057868181518110612d1157612d1161504e565b60200260200101519150612d28565b600101612cd0565b506040517ffdb9b0f100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83169063fdb9b0f190612d83908f908f908f908f908890600401615914565b602060405180830381865afa158015612da0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dc4919061568a565b612dce9088615184565b96505050806001019050612c44565b505050509695505050505050565b600654600090819073ffffffffffffffffffffffffffffffffffffffff1615610be05760405173ffffffffffffffffffffffffffffffffffffffff8716602482015263ffffffff8616604482015260648101859052831515608482015260009060a401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd4244221000000000000000000000000000000000000000000000000000000001790526006549192506000918291612f139173ffffffffffffffffffffffffffffffffffffffff16907f00000000000000000000000000000000000000000000000000000000000000009086613a55565b91509150612f2387878484613298565b94509450505050610be0565b73ffffffffffffffffffffffffffffffffffffffff8316612f5457611e8f8282613b02565b611e8f838383611e21565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052611e8f908490613c08565b6040517fc015bb7d00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff85169063c015bb7d90613043908690869060040161565b565b6020604051808303816000875af1158015613062573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613086919061568a565b905080156130c95773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020526040812080548392906130c3908490615184565b90915550505b6040805173ffffffffffffffffffffffffffffffffffffffff86168152602081018390527f61ed099e74a97a1d7f8bb0952a88ca8b7b8ebd00c126ea04671f92a81213318a910160405180910390a19392505050565b6000606081613130611741866155bd565b90506000613145613140876155bd565b613d17565b905060606131708861315c89840160408b01614dd0565b8561316a60c08c018c6150bb565b8b613d34565b60405191965091506131889084908490602001615976565b60405160208183030381529060405293507f07ea52d82345d6e838192107d8fd7123d9c2ec8e916cd0aad13fd2b60db2464488608001518960a00151836040516131d4939291906159a5565b60405180910390a1505050935093915050565b60006060863b80830361320e5760408051600080825260208201909252925092505061328e565b60008060008761ffff1667ffffffffffffffff81111561323057613230614e19565b6040519080825280601f01601f19166020018201604052801561325a576020820181803683370190505b509050600080885160208a018c8f8ff191503d92508783111561327b578792505b828152826000602083013e909450925050505b9550959350505050565b6000808315806132a9575082516020115b156132b957506000905080610be0565b6000838060200190518101906132cf919061568a565b905085156132df57809150613309565b600060055488116132f2576005546132f4565b875b90508082116133035781613305565b805b9350505b5094509492505050565b6000612372605160318486615719565b6000805b8251811015611e8f5760008382815181106133445761334461504e565b602002602001015190508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16116133b3576040517fc0762a5d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150600101613327565b6060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff8616016134585786511561341a5786848460405160200161340693929190615a03565b604051602081830303815290604052613451565b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050505b9650613527565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff8616016134f0578551156134b25785848460405160200161349e93929190615a03565b6040516020818303038152906040526134e9565b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050505b9550613527565b6040517f6780cfaf00000000000000000000000000000000000000000000000000000000815260ff861660048201526024016109bb565b509495939450505050565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61ffff8516016136585760228214613599576040517f0dc652a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006135ba6135ac602260028688615719565b6135b591615817565b614010565b6040517f0100000000000000000000000000000000000000000000000000000000000000602082018190527e11000000000000000000000000000000000000000000000000000000000000602183015260238201527fffffffffffffffffffffffffffffffff00000000000000000000000000000000608083901b1660248201529091506034016040516020818303038152906040529150506113c8565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe61ffff851601613779576042821115806136935750606282115b156136ca576040517fc0927c5600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006136dd6135ac602260028688615719565b905060006136f26135ac604260228789615719565b905060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbe8501613726866042818a615719565b61372f91615817565b60405160086020938403029190911c9250613760916001916011918391889183916031916002918b918b9101615a2b565b60405160208183030381529060405293505050506113c8565b6040517f4170513000000000000000000000000000000000000000000000000000000000815261ffff851660048201526024016109bb565b60608082516000036137c257915091565b60006137cd846140b6565b90508060ff1660010361387f5760408051600180825281830190925290816020015b60608152602001906001900390816137ef579050509250838360008151811061381a5761381a61504e565b6020908102919091010152604080516001808252818301909252908160200160208202803683370190505091506138528460036141db565b826000815181106138655761386561504e565b602002602001019060ff16908160ff168152505050915091565b8060ff1667ffffffffffffffff81111561389b5761389b614e19565b6040519080825280602002602001820160405280156138c4578160200160208202803683370190505b5091508060ff1667ffffffffffffffff8111156138e3576138e3614e19565b60405190808252806020026020018201604052801561391657816020015b60608152602001906001900390816139015790505b50925060008060ff5b86518310156139ca57600190920191600061393a888561425b565b600294909401939050600061394f89866141db565b90508260ff1660ff03613964578092506139bb565b8260ff168160ff16146139bb577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8486030160006139a38b87846142db565b90506139b18a8a8784614455565b5093909301929150815b5061ffff16929092019161391f565b81830360006139da8985846142db565b90506139e888888584614455565b60005b8660ff168160ff161015613a4957878160ff1681518110613a0e57613a0e61504e565b6020908102919091010180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0160ff1690526001016139eb565b50505050505050915091565b60006060853b808303613a7c57604080516000808252602082019092529250925050610be0565b60008060008761ffff1667ffffffffffffffff811115613a9e57613a9e614e19565b6040519080825280601f01601f191660200182016040528015613ac8576020820181803683370190505b509050600080885160208a018d8dfa91503d925087831115613ae8578792505b828152826000602083013e90999098509650505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216613b4f576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114613ba9576040519150601f19603f3d011682016040523d82523d6000602084013e613bae565b606091505b5050905080611e8f576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602481018390526044016109bb565b6000613c6a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166145849092919063ffffffff16565b9050805160001480613c8b575080806020019051810190613c8b9190615b24565b611e8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016109bb565b60608160a001518260c00151604051602001612c01929190615b41565b60006060600080613d44856137b1565b9150915060008a604001518b60200151613d5e91906158fb565b90508060ff1667ffffffffffffffff811115613d7c57613d7c614e19565b604051908082528060200260200182016040528015613da5578160200160208202803683370190505b50935060005b8160ff168160ff1610156140015760008c6020015160ff168260ff1610613e005760a08d015160208e0151613de09084615853565b60ff1681518110613df357613df361504e565b6020026020010151613e22565b8c608001518260ff1681518110613e1957613e1961504e565b60200260200101515b60408051602081019091526000808252919250905b8551811015613e8f578360ff16868281518110613e5657613e5661504e565b602002602001015160ff1603613e8757868181518110613e7857613e7861504e565b60200260200101519150613e8f565b600101613e37565b508173ffffffffffffffffffffffffffffffffffffffff1663f42ed2ed8e8e8e8e866040518663ffffffff1660e01b8152600401613ed1959493929190615914565b6020604051808303816000875af1158015613ef0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f14919061568a565b878460ff1681518110613f2957613f2961504e565b6020026020010181815250506000878460ff1681518110613f4c57613f4c61504e565b60200260200101511115613ff757868360ff1681518110613f6f57613f6f61504e565b6020026020010151600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613fc59190615184565b92505081905550868360ff1681518110613fe157613fe161504e565b602002602001015188613ff49190615184565b97505b5050600101613dab565b50505050965096945050505050565b60006fffffffffffffffffffffffffffffffff8211156140b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f323820626974730000000000000000000000000000000000000000000000000060648201526084016109bb565b5090565b600080805b83518210156141975760019091019060006140d6858461425b565b905060028301925060028161ffff161015614120576040517f04eb6e0c000000000000000000000000000000000000000000000000000000008152600481018490526024016109bb565b600061412c86856141db565b90508060ff1660ff0361416b576040517fd3d3d9bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160ff82161b83166141885760019485019460ff82161b831792505b5061ffff1691909101906140bb565b835182146141d4576040517f04eb6e0c000000000000000000000000000000000000000000000000000000008152600481018390526024016109bb565b5050919050565b60006141e8826001615184565b83511015614252576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f746f55696e74385f6f75744f66426f756e64730000000000000000000000000060448201526064016109bb565b50016001015190565b6000614268826002615184565b835110156142d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e647300000000000000000000000060448201526064016109bb565b50016002015190565b6060816142e981601f615184565b1015614351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016109bb565b61435b8284615184565b845110156143c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e647300000000000000000000000000000060448201526064016109bb565b6060821580156143e4576040519150600082526020820160405261444c565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561441d578051835260209283019201614405565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b8160ff1660ff03614492576040517fd3d3d9bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061449f8360016158fb565b905060005b84518110156128e85760008582815181106144c1576144c161504e565b602002602001015190508060ff168360ff1603614536578682815181106144ea576144ea61504e565b602002602001015184604051602001614504929190615976565b6040516020818303038152906040528783815181106145255761452561504e565b6020026020010181905250506128e8565b8060ff1660000361457b57828683815181106145545761455461504e565b602002602001019060ff16908160ff1681525050838783815181106145255761452561504e565b506001016144a4565b60606106b78484600085856000808673ffffffffffffffffffffffffffffffffffffffff1685876040516145b89190615b67565b60006040518083038185875af1925050503d80600081146145f5576040519150601f19603f3d011682016040523d82523d6000602084013e6145fa565b606091505b509150915061460b87838387614616565b979650505050505050565b606083156146ac5782516000036146a55773ffffffffffffffffffffffffffffffffffffffff85163b6146a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109bb565b50816106b7565b6106b783838151156146c15781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb9190614d4b565b82805482825590600052602060002090810192821561476f579160200282015b8281111561476f57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190614715565b506140b29291505b808211156140b25760008155600101614777565b60006020828403121561479d57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146113c857600080fd5b600080600080608085870312156147e357600080fd5b843567ffffffffffffffff8111156147fa57600080fd5b850160c0818803121561480c57600080fd5b966020860135965060408601359560600135945092505050565b6020810160038310614861577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b73ffffffffffffffffffffffffffffffffffffffff81168114611b3357600080fd5b803561489481614867565b919050565b803563ffffffff8116811461489457600080fd5b803567ffffffffffffffff8116811461489457600080fd5b6000806000606084860312156148da57600080fd5b83356148e581614867565b92506148f360208501614899565b9150614901604085016148ad565b90509250925092565b60008060006060848603121561491f57600080fd5b833561492a81614867565b9250602084013561493a81614867565b929592945050506040919091013590565b60008083601f84011261495d57600080fd5b50813567ffffffffffffffff81111561497557600080fd5b6020830191508360208260051b850101111561499057600080fd5b9250929050565b6000806000604084860312156149ac57600080fd5b83356149b781614867565b9250602084013567ffffffffffffffff8111156149d357600080fd5b6149df8682870161494b565b9497909650939450505050565b600080600060608486031215614a0157600080fd5b83359250602084013591506040840135614a1a81614867565b809150509250925092565b60008083601f840112614a3757600080fd5b50813567ffffffffffffffff811115614a4f57600080fd5b60208301915083602082850101111561499057600080fd5b8015158114611b3357600080fd5b60008060008060608587031215614a8b57600080fd5b843567ffffffffffffffff80821115614aa357600080fd5b9086019060e08289031215614ab757600080fd5b90945060208601359080821115614acd57600080fd5b50614ada87828801614a25565b9094509250506040850135614aee81614a67565b939692955090935050565b60005b83811015614b14578181015183820152602001614afc565b50506000910152565b60008151808452614b35816020860160208601614af9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b82518152602080840151908201526060604082015260006106b76060830184614b1d565b60008060008060608587031215614ba157600080fd5b843567ffffffffffffffff811115614bb857600080fd5b614bc487828801614a25565b90989097506020870135966040013595509350505050565b600060208284031215614bee57600080fd5b6113c882614899565b60008060408385031215614c0a57600080fd5b8235614c1581614867565b9150614c2360208401614899565b90509250929050565b60008151808452602080850194506020840160005b83811015614c7357815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101614c41565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff815116825260ff602082015116602083015260ff604082015116604083015260ff60608201511660608301526000608082015160c06080850152614cda60c0850182614c2c565b905060a083015184820360a0860152614cf38282614c2c565b95945050505050565b6020815260006113c86020830184614c7e565b600080600060608486031215614d2457600080fd5b614d2d84614899565b92506020840135614d3d81614867565b915061490160408501614899565b6020815260006113c86020830184614b1d565b60008060208385031215614d7157600080fd5b823567ffffffffffffffff811115614d8857600080fd5b614d948582860161494b565b90969095509350505050565b600060208284031215614db257600080fd5b5035919050565b815181526020808301519082015260408101610698565b600060208284031215614de257600080fd5b81356113c881614867565b60008060408385031215614e0057600080fd5b8235614e0b81614867565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715614e6b57614e6b614e19565b60405290565b60405160e0810167ffffffffffffffff81118282101715614e6b57614e6b614e19565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614edb57614edb614e19565b604052919050565b803560ff8116811461489457600080fd5b600082601f830112614f0557600080fd5b8135602067ffffffffffffffff821115614f2157614f21614e19565b8160051b614f30828201614e94565b9283528481018201928281019087851115614f4a57600080fd5b83870192505b8483101561460b578235614f6381614867565b82529183019190830190614f50565b600060c08284031215614f8457600080fd5b614f8c614e48565b9050614f9782614889565b8152614fa560208301614ee3565b6020820152614fb660408301614ee3565b6040820152614fc760608301614ee3565b6060820152608082013567ffffffffffffffff80821115614fe757600080fd5b614ff385838601614ef4565b608084015260a084013591508082111561500c57600080fd5b5061501984828501614ef4565b60a08301525092915050565b60006106983683614f72565b60006020828403121561504357600080fd5b81516113c881614867565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181126150b157600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126150f057600080fd5b83018035915067ffffffffffffffff82111561510b57600080fd5b60200191503681900382131561499057600080fd5b60006020828403121561513257600080fd5b813567ffffffffffffffff81111561514957600080fd5b6106b784828501614f72565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561069857610698615155565b8183823760009101908152919050565b6000602082840312156151b957600080fd5b6113c8826148ad565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815260806020820152600061523b6080830186886151c2565b604083019490945250606001529392505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126150b157600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff418336030181126150b157600080fd5b6000602082840312156152c957600080fd5b6113c882614ee3565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261530757600080fd5b830160208101925035905067ffffffffffffffff81111561532757600080fd5b8060051b360382131561499057600080fd5b8183526000602080850194508260005b85811015614c7357813561535c81614867565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101615349565b60208082528181018390526000906040808401600586901b8501820187855b88811015615521577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08089850301855282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c360301811261540557600080fd5b8b0163ffffffff61541582614899565b168552878101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4182360301811261544c57600080fd5b85890188905201803561545e81614867565b73ffffffffffffffffffffffffffffffffffffffff1685880152615483818901614ee3565b606060ff808316828901526154998a8501614ee3565b92506080818416818a01526154af838601614ee3565b935060a09250818416838a01526154c8818601866152d2565b60c08b810152945091506154e3905061010089018483615339565b9250506154f2818401846152d2565b93509050838783030160e088015261550b828483615339565b978a0197965050509287019250506001016153a3565b509098975050505050505050565b600082601f83011261554057600080fd5b813567ffffffffffffffff81111561555a5761555a614e19565b61558b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614e94565b8181528460208386010111156155a057600080fd5b816020850160208301376000918101602001919091529392505050565b600060e082360312156155cf57600080fd5b6155d7614e71565b6155e0836148ad565b81526155ee60208401614899565b60208201526155ff60408401614889565b604082015261561060608401614899565b60608201526080830135608082015260a083013560a082015260c083013567ffffffffffffffff81111561564357600080fd5b61564f3682860161552f565b60c08301525092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006106b76040830184614b1d565b60006020828403121561569c57600080fd5b5051919050565b600060ff8216806156b6576156b6615155565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff831660208201526060604082015260006106b46060830184614c7e565b6000808585111561572957600080fd5b8386111561573657600080fd5b5050820193919092039150565b7fff0000000000000000000000000000000000000000000000000000000000000081358181169160018510156157835780818660010360031b1b83161692505b505092915050565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156157835760049490940360031b84901b1690921692915050565b7fffffffffffffffff00000000000000000000000000000000000000000000000081358181169160088510156157835760089490940360031b84901b1690921692915050565b80356020831015610698577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b60ff828116828216039081111561069857610698615155565b600060ff8316806158a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8060ff84160491505092915050565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156157835760029490940360031b84901b1690921692915050565b60ff818116838216019081111561069857610698615155565b73ffffffffffffffffffffffffffffffffffffffff861681526080602082015260006159436080830187614b1d565b82810360408401526159568186886151c2565b9050828103606084015261596a8185614b1d565b98975050505050505050565b60008351615988818460208801614af9565b83519083019061599c818360208801614af9565b01949350505050565b6060815260006159b86060830186614c2c565b602083820360208501526159cc8287614c2c565b84810360408601528551808252602080880194509091019060005b81811015615521578451835293830193918301916001016159e7565b60008451615a15818460208901614af9565b8201838582376000930192835250909392505050565b60007fff00000000000000000000000000000000000000000000000000000000000000808c60f81b1683527fffff000000000000000000000000000000000000000000000000000000000000808c60f01b166001850152818b60f81b1660038501527fffffffffffffffffffffffffffffffff000000000000000000000000000000008a60801b166004850152818960f81b166014850152808860f01b16601585015250808660f81b16601784015250615b0c601883018560801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000169052565b50602881019190915260480198975050505050505050565b600060208284031215615b3657600080fd5b81516113c881614a67565b82815260008251615b59816020850160208701614af9565b919091016020019392505050565b600082516150b1818460208701614af956fea2646970667358221220a08f921b20f6954702229b9b59cb4577e9b30e40b354bc3a8c116713153fa0dd64736f6c63430008160033",
1286
+ "linkReferences": {},
1287
+ "deployedLinkReferences": {}
1288
+ }