@layerzerolabs/lz-evm-sdk-v1 1.5.18 → 1.5.19-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/artifacts/contracts/RelayerV2.sol/RelayerV2.json +17 -4
  2. package/artifacts/contracts/interfaces/ILayerZeroPriceFeedV2.sol/ILayerZeroPriceFeedV2.json +104 -0
  3. package/deployments/avalanche-sandbox/RelayerV2.json +298 -22
  4. package/deployments/avalanche-sandbox/RelayerV2_Implementation.json +351 -46
  5. package/deployments/avalanche-sandbox-local/DefaultProxyAdmin.json +273 -0
  6. package/deployments/avalanche-sandbox-local/Endpoint.json +1282 -0
  7. package/deployments/avalanche-sandbox-local/FPValidator.json +382 -0
  8. package/deployments/avalanche-sandbox-local/MPTValidator01.json +395 -0
  9. package/deployments/avalanche-sandbox-local/NonceContract.json +159 -0
  10. package/deployments/avalanche-sandbox-local/PriceFeed.json +760 -0
  11. package/deployments/avalanche-sandbox-local/PriceFeed_Implementation.json +776 -0
  12. package/deployments/avalanche-sandbox-local/PriceFeed_Proxy.json +233 -0
  13. package/deployments/avalanche-sandbox-local/RelayerV2.json +1169 -0
  14. package/deployments/avalanche-sandbox-local/RelayerV2_Implementation.json +1270 -0
  15. package/deployments/avalanche-sandbox-local/RelayerV2_Proxy.json +245 -0
  16. package/deployments/avalanche-sandbox-local/TreasuryV2.json +458 -0
  17. package/deployments/avalanche-sandbox-local/UltraLightNodeV2.json +1816 -0
  18. package/deployments/bsc-sandbox-local/DefaultProxyAdmin.json +273 -0
  19. package/deployments/bsc-sandbox-local/Endpoint.json +1282 -0
  20. package/deployments/bsc-sandbox-local/FPValidator.json +382 -0
  21. package/deployments/bsc-sandbox-local/MPTValidator01.json +395 -0
  22. package/deployments/bsc-sandbox-local/NonceContract.json +159 -0
  23. package/deployments/bsc-sandbox-local/PriceFeed.json +760 -0
  24. package/deployments/bsc-sandbox-local/PriceFeed_Implementation.json +776 -0
  25. package/deployments/bsc-sandbox-local/PriceFeed_Proxy.json +233 -0
  26. package/deployments/bsc-sandbox-local/RelayerV2.json +1169 -0
  27. package/deployments/bsc-sandbox-local/RelayerV2_Implementation.json +1270 -0
  28. package/deployments/bsc-sandbox-local/RelayerV2_Proxy.json +245 -0
  29. package/deployments/bsc-sandbox-local/TreasuryV2.json +458 -0
  30. package/deployments/bsc-sandbox-local/UltraLightNodeV2.json +1816 -0
  31. package/dist/chaintypes/RelayerV2.d.ts +9 -1
  32. package/dist/chaintypes/RelayerV2.d.ts.map +1 -1
  33. package/dist/chaintypes/factories/RelayerV2__factory.d.ts +13 -3
  34. package/dist/chaintypes/factories/RelayerV2__factory.d.ts.map +1 -1
  35. package/dist/chaintypes/factories/RelayerV2__factory.js +16 -3
  36. package/dist/chaintypes/factories/interfaces/ILayerZeroPriceFeedV2__factory.d.ts +80 -0
  37. package/dist/chaintypes/factories/interfaces/ILayerZeroPriceFeedV2__factory.d.ts.map +1 -0
  38. package/dist/chaintypes/factories/interfaces/ILayerZeroPriceFeedV2__factory.js +112 -0
  39. package/dist/chaintypes/factories/interfaces/index.d.ts +1 -0
  40. package/dist/chaintypes/factories/interfaces/index.d.ts.map +1 -1
  41. package/dist/chaintypes/factories/interfaces/index.js +3 -1
  42. package/dist/chaintypes/factories/messagelib-e2/MessageLibBase__factory.d.ts +686 -0
  43. package/dist/chaintypes/factories/messagelib-e2/MessageLibBase__factory.d.ts.map +1 -0
  44. package/dist/chaintypes/factories/messagelib-e2/MessageLibBase__factory.js +894 -0
  45. package/dist/chaintypes/factories/messagelib-e2/index.d.ts +5 -0
  46. package/dist/chaintypes/factories/messagelib-e2/index.d.ts.map +1 -0
  47. package/dist/chaintypes/factories/messagelib-e2/index.js +34 -0
  48. package/dist/chaintypes/factories/messagelib-e2/interfaces/ILayerZeroRelayer__factory.d.ts +61 -0
  49. package/dist/chaintypes/factories/messagelib-e2/interfaces/ILayerZeroRelayer__factory.d.ts.map +1 -0
  50. package/dist/chaintypes/factories/messagelib-e2/interfaces/ILayerZeroRelayer__factory.js +87 -0
  51. package/dist/chaintypes/factories/messagelib-e2/interfaces/ILayerZeroTreasury__factory.d.ts +35 -0
  52. package/dist/chaintypes/factories/messagelib-e2/interfaces/ILayerZeroTreasury__factory.d.ts.map +1 -0
  53. package/dist/chaintypes/factories/messagelib-e2/interfaces/ILayerZeroTreasury__factory.js +53 -0
  54. package/dist/chaintypes/factories/messagelib-e2/interfaces/IMessageLib__factory.d.ts +247 -0
  55. package/dist/chaintypes/factories/messagelib-e2/interfaces/IMessageLib__factory.d.ts.map +1 -0
  56. package/dist/chaintypes/factories/messagelib-e2/interfaces/IMessageLib__factory.js +327 -0
  57. package/dist/chaintypes/factories/messagelib-e2/interfaces/index.d.ts +4 -0
  58. package/dist/chaintypes/factories/messagelib-e2/interfaces/index.d.ts.map +1 -0
  59. package/dist/chaintypes/factories/messagelib-e2/interfaces/index.js +12 -0
  60. package/dist/chaintypes/factories/messagelib-e2/libs/ExecutorOptions__factory.d.ts +72 -0
  61. package/dist/chaintypes/factories/messagelib-e2/libs/ExecutorOptions__factory.d.ts.map +1 -0
  62. package/dist/chaintypes/factories/messagelib-e2/libs/ExecutorOptions__factory.js +107 -0
  63. package/dist/chaintypes/factories/messagelib-e2/libs/Options__factory.d.ts +62 -0
  64. package/dist/chaintypes/factories/messagelib-e2/libs/Options__factory.d.ts.map +1 -0
  65. package/dist/chaintypes/factories/messagelib-e2/libs/Options__factory.js +94 -0
  66. package/dist/chaintypes/factories/messagelib-e2/libs/RelayerOptions__factory.d.ts +72 -0
  67. package/dist/chaintypes/factories/messagelib-e2/libs/RelayerOptions__factory.d.ts.map +1 -0
  68. package/dist/chaintypes/factories/messagelib-e2/libs/RelayerOptions__factory.js +107 -0
  69. package/dist/chaintypes/factories/messagelib-e2/libs/TreasuryOptions__factory.d.ts +42 -0
  70. package/dist/chaintypes/factories/messagelib-e2/libs/TreasuryOptions__factory.d.ts.map +1 -0
  71. package/dist/chaintypes/factories/messagelib-e2/libs/TreasuryOptions__factory.js +68 -0
  72. package/dist/chaintypes/factories/messagelib-e2/libs/index.d.ts +4 -0
  73. package/dist/chaintypes/factories/messagelib-e2/libs/index.d.ts.map +1 -0
  74. package/dist/chaintypes/factories/messagelib-e2/libs/index.js +12 -0
  75. package/dist/chaintypes/factories/messagelib-e2/uln/UlnConfig__factory.d.ts +292 -0
  76. package/dist/chaintypes/factories/messagelib-e2/uln/UlnConfig__factory.d.ts.map +1 -0
  77. package/dist/chaintypes/factories/messagelib-e2/uln/UlnConfig__factory.js +387 -0
  78. package/dist/chaintypes/factories/messagelib-e2/uln/UltraLightNode301__factory.d.ts +1086 -0
  79. package/dist/chaintypes/factories/messagelib-e2/uln/UltraLightNode301__factory.d.ts.map +1 -0
  80. package/dist/chaintypes/factories/messagelib-e2/uln/UltraLightNode301__factory.js +1412 -0
  81. package/dist/chaintypes/factories/messagelib-e2/uln/index.d.ts +5 -0
  82. package/dist/chaintypes/factories/messagelib-e2/uln/index.d.ts.map +1 -0
  83. package/dist/chaintypes/factories/messagelib-e2/uln/index.js +35 -0
  84. package/dist/chaintypes/factories/messagelib-e2/uln/interfaces/ILayerZeroOracle__factory.d.ts +61 -0
  85. package/dist/chaintypes/factories/messagelib-e2/uln/interfaces/ILayerZeroOracle__factory.d.ts.map +1 -0
  86. package/dist/chaintypes/factories/messagelib-e2/uln/interfaces/ILayerZeroOracle__factory.js +87 -0
  87. package/dist/chaintypes/factories/messagelib-e2/uln/interfaces/index.d.ts +2 -0
  88. package/dist/chaintypes/factories/messagelib-e2/uln/interfaces/index.d.ts.map +1 -0
  89. package/dist/chaintypes/factories/messagelib-e2/uln/interfaces/index.js +8 -0
  90. package/dist/chaintypes/factories/messagelib-e2/uln/libs/OracleOptions__factory.d.ts +32 -0
  91. package/dist/chaintypes/factories/messagelib-e2/uln/libs/OracleOptions__factory.d.ts.map +1 -0
  92. package/dist/chaintypes/factories/messagelib-e2/uln/libs/OracleOptions__factory.js +55 -0
  93. package/dist/chaintypes/factories/messagelib-e2/uln/libs/index.d.ts +2 -0
  94. package/dist/chaintypes/factories/messagelib-e2/uln/libs/index.d.ts.map +1 -0
  95. package/dist/chaintypes/factories/messagelib-e2/uln/libs/index.js +8 -0
  96. package/dist/chaintypes/index.d.ts +2 -0
  97. package/dist/chaintypes/index.d.ts.map +1 -1
  98. package/dist/chaintypes/index.js +4 -2
  99. package/dist/chaintypes/interfaces/ILayerZeroPriceFeedV2.d.ts +105 -0
  100. package/dist/chaintypes/interfaces/ILayerZeroPriceFeedV2.d.ts.map +1 -0
  101. package/dist/chaintypes/interfaces/ILayerZeroPriceFeedV2.js +2 -0
  102. package/dist/chaintypes/interfaces/index.d.ts +1 -0
  103. package/dist/chaintypes/interfaces/index.d.ts.map +1 -1
  104. package/dist/chaintypes/messagelib-e2/MessageLibBase.d.ts +655 -0
  105. package/dist/chaintypes/messagelib-e2/MessageLibBase.d.ts.map +1 -0
  106. package/dist/chaintypes/messagelib-e2/MessageLibBase.js +2 -0
  107. package/dist/chaintypes/messagelib-e2/index.d.ts +8 -0
  108. package/dist/chaintypes/messagelib-e2/index.d.ts.map +1 -0
  109. package/dist/chaintypes/messagelib-e2/index.js +2 -0
  110. package/dist/chaintypes/messagelib-e2/interfaces/ILayerZeroRelayer.d.ts +71 -0
  111. package/dist/chaintypes/messagelib-e2/interfaces/ILayerZeroRelayer.d.ts.map +1 -0
  112. package/dist/chaintypes/messagelib-e2/interfaces/ILayerZeroRelayer.js +2 -0
  113. package/dist/chaintypes/messagelib-e2/interfaces/ILayerZeroTreasury.d.ts +48 -0
  114. package/dist/chaintypes/messagelib-e2/interfaces/ILayerZeroTreasury.d.ts.map +1 -0
  115. package/dist/chaintypes/messagelib-e2/interfaces/ILayerZeroTreasury.js +2 -0
  116. package/dist/chaintypes/messagelib-e2/interfaces/IMessageLib.d.ts +253 -0
  117. package/dist/chaintypes/messagelib-e2/interfaces/IMessageLib.d.ts.map +1 -0
  118. package/dist/chaintypes/messagelib-e2/interfaces/IMessageLib.js +2 -0
  119. package/dist/chaintypes/messagelib-e2/interfaces/index.d.ts +4 -0
  120. package/dist/chaintypes/messagelib-e2/interfaces/index.d.ts.map +1 -0
  121. package/dist/chaintypes/messagelib-e2/interfaces/index.js +2 -0
  122. package/dist/chaintypes/messagelib-e2/libs/ExecutorOptions.d.ts +75 -0
  123. package/dist/chaintypes/messagelib-e2/libs/ExecutorOptions.d.ts.map +1 -0
  124. package/dist/chaintypes/messagelib-e2/libs/ExecutorOptions.js +2 -0
  125. package/dist/chaintypes/messagelib-e2/libs/Options.d.ts +67 -0
  126. package/dist/chaintypes/messagelib-e2/libs/Options.d.ts.map +1 -0
  127. package/dist/chaintypes/messagelib-e2/libs/Options.js +2 -0
  128. package/dist/chaintypes/messagelib-e2/libs/RelayerOptions.d.ts +75 -0
  129. package/dist/chaintypes/messagelib-e2/libs/RelayerOptions.d.ts.map +1 -0
  130. package/dist/chaintypes/messagelib-e2/libs/RelayerOptions.js +2 -0
  131. package/dist/chaintypes/messagelib-e2/libs/TreasuryOptions.d.ts +51 -0
  132. package/dist/chaintypes/messagelib-e2/libs/TreasuryOptions.d.ts.map +1 -0
  133. package/dist/chaintypes/messagelib-e2/libs/TreasuryOptions.js +2 -0
  134. package/dist/chaintypes/messagelib-e2/libs/index.d.ts +4 -0
  135. package/dist/chaintypes/messagelib-e2/libs/index.d.ts.map +1 -0
  136. package/dist/chaintypes/messagelib-e2/libs/index.js +2 -0
  137. package/dist/chaintypes/messagelib-e2/uln/UlnConfig.d.ts +309 -0
  138. package/dist/chaintypes/messagelib-e2/uln/UlnConfig.d.ts.map +1 -0
  139. package/dist/chaintypes/messagelib-e2/uln/UlnConfig.js +2 -0
  140. package/dist/chaintypes/messagelib-e2/uln/UltraLightNode301.d.ts +979 -0
  141. package/dist/chaintypes/messagelib-e2/uln/UltraLightNode301.d.ts.map +1 -0
  142. package/dist/chaintypes/messagelib-e2/uln/UltraLightNode301.js +2 -0
  143. package/dist/chaintypes/messagelib-e2/uln/index.d.ts +7 -0
  144. package/dist/chaintypes/messagelib-e2/uln/index.d.ts.map +1 -0
  145. package/dist/chaintypes/messagelib-e2/uln/index.js +2 -0
  146. package/dist/chaintypes/messagelib-e2/uln/interfaces/ILayerZeroOracle.d.ts +71 -0
  147. package/dist/chaintypes/messagelib-e2/uln/interfaces/ILayerZeroOracle.d.ts.map +1 -0
  148. package/dist/chaintypes/messagelib-e2/uln/interfaces/ILayerZeroOracle.js +2 -0
  149. package/dist/chaintypes/messagelib-e2/uln/interfaces/index.d.ts +2 -0
  150. package/dist/chaintypes/messagelib-e2/uln/interfaces/index.d.ts.map +1 -0
  151. package/dist/chaintypes/messagelib-e2/uln/interfaces/index.js +2 -0
  152. package/dist/chaintypes/messagelib-e2/uln/libs/OracleOptions.d.ts +43 -0
  153. package/dist/chaintypes/messagelib-e2/uln/libs/OracleOptions.d.ts.map +1 -0
  154. package/dist/chaintypes/messagelib-e2/uln/libs/OracleOptions.js +2 -0
  155. package/dist/chaintypes/messagelib-e2/uln/libs/index.d.ts +2 -0
  156. package/dist/chaintypes/messagelib-e2/uln/libs/index.d.ts.map +1 -0
  157. package/dist/chaintypes/messagelib-e2/uln/libs/index.js +2 -0
  158. package/package.json +1 -1
@@ -173,6 +173,19 @@
173
173
  "name": "Withdraw",
174
174
  "type": "event"
175
175
  },
176
+ {
177
+ "inputs": [],
178
+ "name": "AIRDROP_GAS_LIMIT",
179
+ "outputs": [
180
+ {
181
+ "internalType": "uint256",
182
+ "name": "",
183
+ "type": "uint256"
184
+ }
185
+ ],
186
+ "stateMutability": "view",
187
+ "type": "function"
188
+ },
176
189
  {
177
190
  "inputs": [
178
191
  {
@@ -224,7 +237,7 @@
224
237
  "outputs": [
225
238
  {
226
239
  "internalType": "uint256",
227
- "name": "",
240
+ "name": "fee",
228
241
  "type": "uint256"
229
242
  }
230
243
  ],
@@ -536,7 +549,7 @@
536
549
  "name": "priceFeed",
537
550
  "outputs": [
538
551
  {
539
- "internalType": "contract ILayerZeroPriceFeed",
552
+ "internalType": "contract ILayerZeroPriceFeedV2",
540
553
  "name": "",
541
554
  "type": "address"
542
555
  }
@@ -920,8 +933,8 @@
920
933
  "type": "function"
921
934
  }
922
935
  ],
923
- "bytecode": "0x608060405234801561001057600080fd5b5060016000556134cd806100256000396000f3fe60806040526004361061026a5760003560e01c8063741bef1a11610153578063b8f8bad4116100cb578063d5f8b0141161007f578063f2fde38b11610064578063f2fde38b146106aa578063fa34c84e146106ca578063fd9be522146106ea5761026a565b8063d5f8b0141461066a578063f136a8741461068a5761026a565b8063bf4dab51116100b0578063bf4dab511461060a578063c03f15291461062a578063c3b04e7f1461064a5761026a565b8063b8f8bad4146105ca578063bedb86fb146105ea5761026a565b80638576db67116101225780638da5cb5b116101075780638da5cb5b1461058b57806398dabd50146105a0578063ac353e04146105b55761026a565b80638576db671461053d5780638644c5781461055d5761026a565b8063741bef1a146104c6578063765a8a54146104db578063801db1fe1461050857806381ba209a146105285761026a565b8063575765e2116101e6578063673448dd116101b55780636c473aff1161019a5780636c473aff1461047c578063715018a614610491578063724e78da146104a65761026a565b8063673448dd1461043a57806369cf4e3a1461045a5761026a565b8063575765e2146103a95780635886ea65146103c95780635c975abb146103f65780636348d269146104185761026a565b8063252f7b011161023d578063485cc95511610222578063485cc9551461033c5780634eeba2501461035c57806355b35249146103895761026a565b8063252f7b01146102fc5780633f1034871461031c5761026a565b806301e336671461026f57806303343f54146102915780630508941e146102b157806323161ff8146102c4575b600080fd5b34801561027b57600080fd5b5061028f61028a366004612ae6565b61070a565b005b34801561029d57600080fd5b5061028f6102ac366004612a67565b610823565b61028f6102bf366004612cfb565b610899565b3480156102d057600080fd5b506102e46102df366004612dd8565b610a67565b6040516102f39392919061325a565b60405180910390f35b34801561030857600080fd5b5061028f610317366004612c79565b610ad5565b34801561032857600080fd5b5061028f610337366004612e80565b610c03565b34801561034857600080fd5b5061028f610357366004612aae565b610d8e565b34801561036857600080fd5b5061037c610377366004612c5f565b610fe0565b6040516102f3919061321a565b34801561039557600080fd5b5061037c6103a4366004612c5f565b611004565b3480156103b557600080fd5b5061028f6103c4366004612b26565b611028565b3480156103d557600080fd5b506103e96103e4366004612e01565b6110fe565b6040516102f39190613380565b34801561040257600080fd5b5061040b6111d6565b6040516102f39190612f73565b34801561042457600080fd5b5061042d6111df565b6040516102f39190612f2b565b34801561044657600080fd5b5061040b610455366004612a67565b6111ee565b34801561046657600080fd5b5061046f611210565b6040516102f3919061328e565b34801561048857600080fd5b5061042d611230565b34801561049d57600080fd5b5061028f61123f565b3480156104b257600080fd5b5061028f6104c1366004612a67565b611315565b3480156104d257600080fd5b5061042d611390565b3480156104e757600080fd5b506104fb6104f6366004612c5f565b6113a4565b6040516102f391906131ee565b34801561051457600080fd5b5061028f610523366004612b26565b611489565b34801561053457600080fd5b5061046f611553565b34801561054957600080fd5b5061040b610558366004612a67565b611575565b34801561056957600080fd5b5061057d610578366004612c5f565b61158a565b6040516102f3929190613237565b34801561059757600080fd5b5061042d6115c6565b3480156105ac57600080fd5b5061046f6115d5565b3480156105c157600080fd5b5061037c6115f3565b3480156105d657600080fd5b5061028f6105e5366004612d90565b61160b565b3480156105f657600080fd5b5061028f610605366004612b9a565b61164c565b34801561061657600080fd5b5061028f610625366004612b5a565b6116d3565b34801561063657600080fd5b506103e9610645366004612e01565b6117d7565b34801561065657600080fd5b5061028f610665366004612c27565b611849565b34801561067657600080fd5b5061028f610685366004612b5a565b6118c8565b34801561069657600080fd5b5061040b6106a5366004612a67565b6119cc565b3480156106b657600080fd5b5061028f6106c5366004612a67565b6119e1565b3480156106d657600080fd5b5061028f6106e5366004612a67565b611b0e565b3480156106f657600080fd5b5061028f610705366004612a83565b611c86565b336107136115c6565b6001600160a01b03161461074f5761072a336111ee565b61074f5760405162461bcd60e51b815260040161074690612f7e565b60405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038516906370a0823190610797903090600401612f2b565b60206040518083038186803b1580156107af57600080fd5b505afa1580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e79190612eec565b9050808211156108095760405162461bcd60e51b8152600401610746906130b5565b61081d6001600160a01b0385168484611e00565b50505050565b3361082c6115c6565b6001600160a01b03161461085f57610843336111ee565b61085f5760405162461bcd60e51b815260040161074690612f7e565b606780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b336108a26115c6565b6001600160a01b0316146108d5576108b9336111ee565b6108d55760405162461bcd60e51b815260040161074690612f7e565b6002600054141561092d576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000819055506000816001600160a01b03163460405161094e90612f28565b60006040518083038185875af1925050503d806000811461098b576040519150601f19603f3d011682016040523d82523d6000602084013e610990565b606091505b50509050806109d05760405134906001600160a01b038416907f2c7a964ca3de5ec1d42d9822f9bbd0eb142a59cc9f855e9d93813b773192c7a390600090a35b6066546040517f987fa2d50000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063987fa2d590610a25908c908c908c908c908c908c908c9060040161329d565b600060405180830381600087803b158015610a3f57600080fd5b505af1158015610a53573d6000803e3d6000fd5b505060016000555050505050505050505050565b60696020908152600092835260408084209091529082529020546fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b33610ade6115c6565b6001600160a01b031614610b1157610af5336111ee565b610b115760405162461bcd60e51b815260040161074690612f7e565b60026000541415610b69576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000556066546040517f987fa2d50000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063987fa2d590610bc3908a908a908a908a908a908a908a9060040161329d565b600060405180830381600087803b158015610bdd57600080fd5b505af1158015610bf1573d6000803e3d6000fd5b50506001600055505050505050505050565b33610c0c6115c6565b6001600160a01b031614610c3f57610c23336111ee565b610c3f5760405162461bcd60e51b815260040161074690612f7e565b604080516060810182526fffffffffffffffffffffffffffffffff858116825267ffffffffffffffff858116602080850191825286831685870190815261ffff8c8116600090815260698452888120918d16815292529086902094518554925191517fffffffffffffffffffffffffffffffff000000000000000000000000000000009093169416939093177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff16700100000000000000000000000000000000938316939093029290921777ffffffffffffffffffffffffffffffffffffffffffffffff1678010000000000000000000000000000000000000000000000009290911691909102179055517fd053e021dda81c7c2794ff89e320caea5379962d49ed383a3bd0a54ffc4b932f90610d7f908790879087908790879061331a565b60405180910390a15050505050565b6000610d98611e80565b90506001600160a01b038116610dd7576001600160a01b037fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355610dec565b336001600160a01b03821614610dec57600080fd5b600154610100900460ff1680610e055750610e05611ea5565b80610e13575060015460ff16155b610e4e5760405162461bcd60e51b815260040180806020018281038252602e81526020018061341f602e913960400191505060405180910390fd5b600154610100900460ff16158015610e78576001805460ff1961ff00199091166101001716811790555b610e80611eb6565b606680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038616179055610ebe306001611028565b606c8054606b80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03881602179055612ee07fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116177fffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff1670a400000000000000000000000000000000177fffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff1672a0000000000000000000000000000000000000177fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055801561081d576001805461ff001916905550505050565b606d602052600090815260409020546fffffffffffffffffffffffffffffffff1681565b606e602052600090815260409020546fffffffffffffffffffffffffffffffff1681565b611030611f67565b6001600160a01b03166110416115c6565b6001600160a01b03161461109c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0382166000908152606a602052604090819020805460ff1916831515179055517fb10786d0bfa68fb1aa29552d9203e5f545f7c073ff0784da1de1d800986f1023906110f29084908490612f58565b60405180910390a15050565b6066546000906001600160a01b0316331461112b5760405162461bcd60e51b815260040161074690613112565b61271084111561114d5760405162461bcd60e51b815260040161074690612fb5565b60006111928888888888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f6b92505050565b90507fdf21c415b78ed2552cc9971249e32a053abce6087a0ae0fbf3f78db5174a3493816040516111c39190613380565b60405180910390a1979650505050505050565b606b5460ff1681565b6067546001600160a01b031681565b6001600160a01b0381166000908152606a602052604090205460ff165b919050565b606c547201000000000000000000000000000000000000900461ffff1681565b6066546001600160a01b031681565b611247611f67565b6001600160a01b03166112586115c6565b6001600160a01b0316146112b3576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6034546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b3361131e6115c6565b6001600160a01b03161461135157611335336111ee565b6113515760405162461bcd60e51b815260040161074690612f7e565b606b80546001600160a01b03909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b606b5461010090046001600160a01b031681565b6113ac6129a4565b606b546040517fe0ad121a00000000000000000000000000000000000000000000000000000000815260009161010090046001600160a01b03169063e0ad121a906113fb90869060040161328e565b60606040518083038186803b15801561141357600080fd5b505afa158015611427573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144b9190612bb4565b6040805180820190915281516fffffffffffffffffffffffffffffffff16815260209182015167ffffffffffffffff16918101919091529392505050565b611491611f67565b6001600160a01b03166114a26115c6565b6001600160a01b0316146114fd576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0382166000908152606f602052604090819020805460ff1916831515179055517fde6b048d6c4e63d85fde37ccbe03f4380c6d12cb2a1e9ce9268bbf47a1ef6878906110f29084908490612f58565b606c5474010000000000000000000000000000000000000000900461ffff1681565b606f6020526000908152604090205460ff1681565b6068602052600090815260409020546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041682565b6034546001600160a01b031690565b606c54700100000000000000000000000000000000900461ffff1681565b606c546fffffffffffffffffffffffffffffffff1681565b336116146115c6565b6001600160a01b0316146116475761162b336111ee565b6116475760405162461bcd60e51b815260040161074690612f7e565b505050565b611654611f67565b6001600160a01b03166116656115c6565b6001600160a01b0316146116c0576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b606b805460ff1916911515919091179055565b336116dc6115c6565b6001600160a01b0316141580156117035750336000908152606a602052604090205460ff16155b1561173757336000908152606f602052604090205460ff166117375760405162461bcd60e51b81526004016107469061307e565b60005b81811015611647573683838381811061174f57fe5b905060400201905080602001602081019061176a9190612c27565b606d600061177b6020850185612c5f565b61ffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff929092169190911790555060010161173a565b60006127108411156117fb5760405162461bcd60e51b815260040161074690612fb5565b61183e8787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f6b92505050565b979650505050505050565b336118526115c6565b6001600160a01b03161461188557611869336111ee565b6118855760405162461bcd60e51b815260040161074690612f7e565b606c80547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b336118d16115c6565b6001600160a01b0316141580156118f85750336000908152606a602052604090205460ff16155b1561192c57336000908152606f602052604090205460ff1661192c5760405162461bcd60e51b81526004016107469061307e565b60005b81811015611647573683838381811061194457fe5b905060400201905080602001602081019061195f9190612c27565b606e60006119706020850185612c5f565b61ffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff929092169190911790555060010161192f565b606a6020526000908152604090205460ff1681565b6119e9611f67565b6001600160a01b03166119fa6115c6565b6001600160a01b031614611a55576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116611a9a5760405162461bcd60e51b81526004018080602001828103825260268152602001806133d36026913960400191505060405180910390fd5b6034546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000611b18611e80565b90506001600160a01b038116611b57576001600160a01b037fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355611b6c565b336001600160a01b03821614611b6c57600080fd5b50606c8054606b80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03959095169490940293909317909255612ee07fffffffffffffffffffffffffffffffff00000000000000000000000000000000909216919091177fffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff1670a400000000000000000000000000000000177fffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff1672a0000000000000000000000000000000000000177fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055565b33611c8f6115c6565b6001600160a01b031614611cc257611ca6336111ee565b611cc25760405162461bcd60e51b815260040161074690612f7e565b6066546040517f69412bfa0000000000000000000000000000000000000000000000000000000081526000916001600160a01b0316906369412bfa90611d0c903090600401612f2b565b60206040518083038186803b158015611d2457600080fd5b505afa158015611d38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5c9190612eec565b905080821115611d7e5760405162461bcd60e51b8152600401610746906130b5565b6066546040517f07b18bde0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906307b18bde90611dc99086908690600401612f3f565b600060405180830381600087803b158015611de357600080fd5b505af1158015611df7573d6000803e3d6000fd5b50505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052611647908490612279565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6000611eb03061232a565b15905090565b600154610100900460ff1680611ecf5750611ecf611ea5565b80611edd575060015460ff16155b611f185760405162461bcd60e51b815260040180806020018281038252602e81526020018061341f602e913960400191505060405180910390fd5b600154610100900460ff16158015611f42576001805460ff1961ff00199091166101001716811790555b611f4a612330565b611f526123cf565b8015611f64576001805461ff00191690555b50565b3390565b606b5460009060ff1615611f915760405162461bcd60e51b815260040161074690613149565b815160221480611fa2575060428251115b611fbe5760405162461bcd60e51b815260040161074690612fea565b6002820151602283015180611fe55760405162461bcd60e51b815260040161074690613180565b8161ffff1660011480611ffc57508161ffff166002145b6120185760405162461bcd60e51b815260040161074690613047565b61ffff88811660009081526069602090815260408083208b8516845290915281209184166002141561207d5750604285015181546fffffffffffffffffffffffffffffffff1681111561207d5760405162461bcd60e51b8152600401610746906131b7565b60008461ffff166002146120ab57606c54700100000000000000000000000000000000900461ffff166120d1565b606c546120d190700100000000000000000000000000000000900461ffff1660206124df565b905060008a61ffff1660021461211057606c5461210b908a9074010000000000000000000000000000000000000000900461ffff166124df565b612138565b606c54612138908a907201000000000000000000000000000000000000900461ffff166124df565b606b549091508c90600090819061010090046001600160a01b0316637bc3c9ab8461216388886124df565b8a5461218d90700100000000000000000000000000000000900467ffffffffffffffff168d6124df565b6040518463ffffffff1660e01b81526004016121ab93929190613364565b604080518083038186803b1580156121c257600080fd5b505afa1580156121d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fa9190612f04565b90925090506000861561225057606c5461224d9061271090612241906fffffffffffffffffffffffffffffffff90811690612247906402540be4009084908e908a16612542565b9061259b565b90612542565b90505b6122648161225e8686612602565b906124df565b9a505050505050505050505095945050505050565b60006122ce826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661277e9092919063ffffffff16565b805190915015611647578080602001905160208110156122ed57600080fd5b50516116475760405162461bcd60e51b815260040180806020018281038252602a81526020018061346e602a913960400191505060405180910390fd5b3b151590565b600154610100900460ff16806123495750612349611ea5565b80612357575060015460ff16155b6123925760405162461bcd60e51b815260040180806020018281038252602e81526020018061341f602e913960400191505060405180910390fd5b600154610100900460ff16158015611f52576001805460ff1961ff00199091166101001716811790558015611f64576001805461ff001916905550565b600154610100900460ff16806123e857506123e8611ea5565b806123f6575060015460ff16155b6124315760405162461bcd60e51b815260040180806020018281038252602e81526020018061341f602e913960400191505060405180910390fd5b600154610100900460ff1615801561245b576001805460ff1961ff00199091166101001716811790555b6000612465611f67565b603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015611f64576001805461ff001916905550565b600082820183811015612539576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b6000826125515750600061253c565b8282028284828161255e57fe5b04146125395760405162461bcd60e51b815260040180806020018281038252602181526020018061344d6021913960400191505060405180910390fd5b60008082116125f1576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816125fa57fe5b049392505050565b61ffff82166000908152606d60205260408120546fffffffffffffffffffffffffffffffff16806126445750606c546fffffffffffffffffffffffffffffffff165b6000612668612710612241866fffffffffffffffffffffffffffffffff8616612542565b90506000606b60019054906101000a90046001600160a01b03166001600160a01b03166392807f586040518163ffffffff1660e01b815260040160206040518083038186803b1580156126ba57600080fd5b505afa1580156126ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f29190612c43565b6fffffffffffffffffffffffffffffffff169050806127155750915061253c9050565b61ffff86166000908152606e6020526040812054670de0b6b3a764000091906127619061275a908590612241906fffffffffffffffffffffffffffffffff1686612542565b88906124df565b90508381116127705783612772565b805b98975050505050505050565b606061278d8484600085612797565b90505b9392505050565b6060824710156127d85760405162461bcd60e51b81526004018080602001828103825260268152602001806133f96026913960400191505060405180910390fd5b6127e18561232a565b612832576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b6020831061288e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612851565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146128f0576040519150601f19603f3d011682016040523d82523d6000602084013e6128f5565b606091505b509150915061183e8282866060831561290f575081612790565b82511561291f5782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612969578181015183820152602001612951565b50505050905090810190601f1680156129965780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b604080518082019091526000808252602082015290565b60008083601f8401126129cc578182fd5b50813567ffffffffffffffff8111156129e3578182fd5b6020830191508360206040830285010111156129fe57600080fd5b9250929050565b8035801515811461120b57600080fd5b60008083601f840112612a26578182fd5b50813567ffffffffffffffff811115612a3d578182fd5b6020830191508360208285010111156129fe57600080fd5b803561ffff8116811461120b57600080fd5b600060208284031215612a78578081fd5b813561253981613389565b60008060408385031215612a95578081fd5b8235612aa081613389565b946020939093013593505050565b60008060408385031215612ac0578182fd5b8235612acb81613389565b91506020830135612adb81613389565b809150509250929050565b600080600060608486031215612afa578081fd5b8335612b0581613389565b92506020840135612b1581613389565b929592945050506040919091013590565b60008060408385031215612b38578182fd5b8235612b4381613389565b9150612b5160208401612a05565b90509250929050565b60008060208385031215612b6c578182fd5b823567ffffffffffffffff811115612b82578283fd5b612b8e858286016129bb565b90969095509350505050565b600060208284031215612bab578081fd5b61279082612a05565b600060608284031215612bc5578081fd5b6040516060810181811067ffffffffffffffff82111715612be257fe5b6040528251612bf08161339e565b81526020830151612c00816133bc565b6020820152604083015163ffffffff81168114612c1b578283fd5b60408201529392505050565b600060208284031215612c38578081fd5b81356125398161339e565b600060208284031215612c54578081fd5b81516125398161339e565b600060208284031215612c70578081fd5b61279082612a55565b600080600080600080600060c0888a031215612c93578485fd5b612c9c88612a55565b96506020880135612cac81613389565b955060408801359450606088013593506080880135925060a088013567ffffffffffffffff811115612cdc578283fd5b612ce88a828b01612a15565b989b979a50959850939692959293505050565b60008060008060008060008060e0898b031215612d16578182fd5b612d1f89612a55565b97506020890135612d2f81613389565b965060408901359550606089013594506080890135935060a089013567ffffffffffffffff811115612d5f578283fd5b612d6b8b828c01612a15565b90945092505060c0890135612d7f81613389565b809150509295985092959890939650565b600080600060608486031215612da4578081fd5b612dad84612a55565b92506020840135612dbd8161339e565b91506040840135612dcd8161339e565b809150509250925092565b60008060408385031215612dea578182fd5b612df383612a55565b9150612b5160208401612a55565b60008060008060008060a08789031215612e19578384fd5b612e2287612a55565b9550612e3060208801612a55565b94506040870135612e4081613389565b935060608701359250608087013567ffffffffffffffff811115612e62578283fd5b612e6e89828a01612a15565b979a9699509497509295939492505050565b600080600080600060a08688031215612e97578283fd5b612ea086612a55565b9450612eae60208701612a55565b93506040860135612ebe8161339e565b92506060860135612ece816133bc565b91506080860135612ede816133bc565b809150509295509295909350565b600060208284031215612efd578081fd5b5051919050565b60008060408385031215612f16578182fd5b825191506020830151612adb8161339e565b90565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039290921682521515602082015260400190565b901515815260200190565b60208082526015908201527f52656c617965723a206e6f7420617070726f7665640000000000000000000000604082015260600190565b6020808252818101527f52656c617965723a205f7061796c6f616453697a6520746f6f6f6f6f20626967604082015260600190565b60208082526026908201527f52656c617965723a2077726f6e67205f61646170746572506172616d6574657260408201527f732073697a650000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601b908201527f52656c617965723a20756e737570706f72746564207478547970650000000000604082015260600190565b60208082526014908201527f52656c617965723a206e6f742075706461746572000000000000000000000000604082015260600190565b60208082526026908201527f52656c617965723a206e6f7420656e6f7567682066656520666f72207769746860408201527f64726177616c0000000000000000000000000000000000000000000000000000606082015260800190565b60208082526014908201527f52656c617965723a20696e76616c696420756c6e000000000000000000000000604082015260600190565b6020808252600d908201527f41646d696e3a2070617573656400000000000000000000000000000000000000604082015260600190565b60208082526014908201527f52656c617965723a2067617320746f6f206c6f77000000000000000000000000604082015260600190565b6020808252601f908201527f52656c617965723a206473744e6174697665416d7420746f6f206c6172676500604082015260600190565b81516fffffffffffffffffffffffffffffffff9081168252602092830151169181019190915260400190565b6fffffffffffffffffffffffffffffffff91909116815260200190565b6fffffffffffffffffffffffffffffffff92831681529116602082015260400190565b6fffffffffffffffffffffffffffffffff93909316835267ffffffffffffffff918216602084015216604082015260600190565b61ffff91909116815260200190565b600061ffff891682526001600160a01b038816602083015286604083015285606083015284608083015260c060a08301528260c0830152828460e084013781830160e090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601019695505050505050565b61ffff95861681529390941660208401526fffffffffffffffffffffffffffffffff91909116604083015267ffffffffffffffff9081166060830152909116608082015260a00190565b61ffff9390931683526020830191909152604082015260600190565b90815260200190565b6001600160a01b0381168114611f6457600080fd5b6fffffffffffffffffffffffffffffffff81168114611f6457600080fd5b67ffffffffffffffff81168114611f6457600080fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220343b1fb599eed702e4e2a2fcddbb676a2c4b69f9b054d19d44ba1bb3ade5966864736f6c63430007060033",
924
- "deployedBytecode": "0x60806040526004361061026a5760003560e01c8063741bef1a11610153578063b8f8bad4116100cb578063d5f8b0141161007f578063f2fde38b11610064578063f2fde38b146106aa578063fa34c84e146106ca578063fd9be522146106ea5761026a565b8063d5f8b0141461066a578063f136a8741461068a5761026a565b8063bf4dab51116100b0578063bf4dab511461060a578063c03f15291461062a578063c3b04e7f1461064a5761026a565b8063b8f8bad4146105ca578063bedb86fb146105ea5761026a565b80638576db67116101225780638da5cb5b116101075780638da5cb5b1461058b57806398dabd50146105a0578063ac353e04146105b55761026a565b80638576db671461053d5780638644c5781461055d5761026a565b8063741bef1a146104c6578063765a8a54146104db578063801db1fe1461050857806381ba209a146105285761026a565b8063575765e2116101e6578063673448dd116101b55780636c473aff1161019a5780636c473aff1461047c578063715018a614610491578063724e78da146104a65761026a565b8063673448dd1461043a57806369cf4e3a1461045a5761026a565b8063575765e2146103a95780635886ea65146103c95780635c975abb146103f65780636348d269146104185761026a565b8063252f7b011161023d578063485cc95511610222578063485cc9551461033c5780634eeba2501461035c57806355b35249146103895761026a565b8063252f7b01146102fc5780633f1034871461031c5761026a565b806301e336671461026f57806303343f54146102915780630508941e146102b157806323161ff8146102c4575b600080fd5b34801561027b57600080fd5b5061028f61028a366004612ae6565b61070a565b005b34801561029d57600080fd5b5061028f6102ac366004612a67565b610823565b61028f6102bf366004612cfb565b610899565b3480156102d057600080fd5b506102e46102df366004612dd8565b610a67565b6040516102f39392919061325a565b60405180910390f35b34801561030857600080fd5b5061028f610317366004612c79565b610ad5565b34801561032857600080fd5b5061028f610337366004612e80565b610c03565b34801561034857600080fd5b5061028f610357366004612aae565b610d8e565b34801561036857600080fd5b5061037c610377366004612c5f565b610fe0565b6040516102f3919061321a565b34801561039557600080fd5b5061037c6103a4366004612c5f565b611004565b3480156103b557600080fd5b5061028f6103c4366004612b26565b611028565b3480156103d557600080fd5b506103e96103e4366004612e01565b6110fe565b6040516102f39190613380565b34801561040257600080fd5b5061040b6111d6565b6040516102f39190612f73565b34801561042457600080fd5b5061042d6111df565b6040516102f39190612f2b565b34801561044657600080fd5b5061040b610455366004612a67565b6111ee565b34801561046657600080fd5b5061046f611210565b6040516102f3919061328e565b34801561048857600080fd5b5061042d611230565b34801561049d57600080fd5b5061028f61123f565b3480156104b257600080fd5b5061028f6104c1366004612a67565b611315565b3480156104d257600080fd5b5061042d611390565b3480156104e757600080fd5b506104fb6104f6366004612c5f565b6113a4565b6040516102f391906131ee565b34801561051457600080fd5b5061028f610523366004612b26565b611489565b34801561053457600080fd5b5061046f611553565b34801561054957600080fd5b5061040b610558366004612a67565b611575565b34801561056957600080fd5b5061057d610578366004612c5f565b61158a565b6040516102f3929190613237565b34801561059757600080fd5b5061042d6115c6565b3480156105ac57600080fd5b5061046f6115d5565b3480156105c157600080fd5b5061037c6115f3565b3480156105d657600080fd5b5061028f6105e5366004612d90565b61160b565b3480156105f657600080fd5b5061028f610605366004612b9a565b61164c565b34801561061657600080fd5b5061028f610625366004612b5a565b6116d3565b34801561063657600080fd5b506103e9610645366004612e01565b6117d7565b34801561065657600080fd5b5061028f610665366004612c27565b611849565b34801561067657600080fd5b5061028f610685366004612b5a565b6118c8565b34801561069657600080fd5b5061040b6106a5366004612a67565b6119cc565b3480156106b657600080fd5b5061028f6106c5366004612a67565b6119e1565b3480156106d657600080fd5b5061028f6106e5366004612a67565b611b0e565b3480156106f657600080fd5b5061028f610705366004612a83565b611c86565b336107136115c6565b6001600160a01b03161461074f5761072a336111ee565b61074f5760405162461bcd60e51b815260040161074690612f7e565b60405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038516906370a0823190610797903090600401612f2b565b60206040518083038186803b1580156107af57600080fd5b505afa1580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e79190612eec565b9050808211156108095760405162461bcd60e51b8152600401610746906130b5565b61081d6001600160a01b0385168484611e00565b50505050565b3361082c6115c6565b6001600160a01b03161461085f57610843336111ee565b61085f5760405162461bcd60e51b815260040161074690612f7e565b606780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b336108a26115c6565b6001600160a01b0316146108d5576108b9336111ee565b6108d55760405162461bcd60e51b815260040161074690612f7e565b6002600054141561092d576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000819055506000816001600160a01b03163460405161094e90612f28565b60006040518083038185875af1925050503d806000811461098b576040519150601f19603f3d011682016040523d82523d6000602084013e610990565b606091505b50509050806109d05760405134906001600160a01b038416907f2c7a964ca3de5ec1d42d9822f9bbd0eb142a59cc9f855e9d93813b773192c7a390600090a35b6066546040517f987fa2d50000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063987fa2d590610a25908c908c908c908c908c908c908c9060040161329d565b600060405180830381600087803b158015610a3f57600080fd5b505af1158015610a53573d6000803e3d6000fd5b505060016000555050505050505050505050565b60696020908152600092835260408084209091529082529020546fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b33610ade6115c6565b6001600160a01b031614610b1157610af5336111ee565b610b115760405162461bcd60e51b815260040161074690612f7e565b60026000541415610b69576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000556066546040517f987fa2d50000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063987fa2d590610bc3908a908a908a908a908a908a908a9060040161329d565b600060405180830381600087803b158015610bdd57600080fd5b505af1158015610bf1573d6000803e3d6000fd5b50506001600055505050505050505050565b33610c0c6115c6565b6001600160a01b031614610c3f57610c23336111ee565b610c3f5760405162461bcd60e51b815260040161074690612f7e565b604080516060810182526fffffffffffffffffffffffffffffffff858116825267ffffffffffffffff858116602080850191825286831685870190815261ffff8c8116600090815260698452888120918d16815292529086902094518554925191517fffffffffffffffffffffffffffffffff000000000000000000000000000000009093169416939093177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff16700100000000000000000000000000000000938316939093029290921777ffffffffffffffffffffffffffffffffffffffffffffffff1678010000000000000000000000000000000000000000000000009290911691909102179055517fd053e021dda81c7c2794ff89e320caea5379962d49ed383a3bd0a54ffc4b932f90610d7f908790879087908790879061331a565b60405180910390a15050505050565b6000610d98611e80565b90506001600160a01b038116610dd7576001600160a01b037fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355610dec565b336001600160a01b03821614610dec57600080fd5b600154610100900460ff1680610e055750610e05611ea5565b80610e13575060015460ff16155b610e4e5760405162461bcd60e51b815260040180806020018281038252602e81526020018061341f602e913960400191505060405180910390fd5b600154610100900460ff16158015610e78576001805460ff1961ff00199091166101001716811790555b610e80611eb6565b606680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038616179055610ebe306001611028565b606c8054606b80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03881602179055612ee07fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116177fffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff1670a400000000000000000000000000000000177fffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff1672a0000000000000000000000000000000000000177fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055801561081d576001805461ff001916905550505050565b606d602052600090815260409020546fffffffffffffffffffffffffffffffff1681565b606e602052600090815260409020546fffffffffffffffffffffffffffffffff1681565b611030611f67565b6001600160a01b03166110416115c6565b6001600160a01b03161461109c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0382166000908152606a602052604090819020805460ff1916831515179055517fb10786d0bfa68fb1aa29552d9203e5f545f7c073ff0784da1de1d800986f1023906110f29084908490612f58565b60405180910390a15050565b6066546000906001600160a01b0316331461112b5760405162461bcd60e51b815260040161074690613112565b61271084111561114d5760405162461bcd60e51b815260040161074690612fb5565b60006111928888888888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f6b92505050565b90507fdf21c415b78ed2552cc9971249e32a053abce6087a0ae0fbf3f78db5174a3493816040516111c39190613380565b60405180910390a1979650505050505050565b606b5460ff1681565b6067546001600160a01b031681565b6001600160a01b0381166000908152606a602052604090205460ff165b919050565b606c547201000000000000000000000000000000000000900461ffff1681565b6066546001600160a01b031681565b611247611f67565b6001600160a01b03166112586115c6565b6001600160a01b0316146112b3576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6034546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b3361131e6115c6565b6001600160a01b03161461135157611335336111ee565b6113515760405162461bcd60e51b815260040161074690612f7e565b606b80546001600160a01b03909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b606b5461010090046001600160a01b031681565b6113ac6129a4565b606b546040517fe0ad121a00000000000000000000000000000000000000000000000000000000815260009161010090046001600160a01b03169063e0ad121a906113fb90869060040161328e565b60606040518083038186803b15801561141357600080fd5b505afa158015611427573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144b9190612bb4565b6040805180820190915281516fffffffffffffffffffffffffffffffff16815260209182015167ffffffffffffffff16918101919091529392505050565b611491611f67565b6001600160a01b03166114a26115c6565b6001600160a01b0316146114fd576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0382166000908152606f602052604090819020805460ff1916831515179055517fde6b048d6c4e63d85fde37ccbe03f4380c6d12cb2a1e9ce9268bbf47a1ef6878906110f29084908490612f58565b606c5474010000000000000000000000000000000000000000900461ffff1681565b606f6020526000908152604090205460ff1681565b6068602052600090815260409020546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041682565b6034546001600160a01b031690565b606c54700100000000000000000000000000000000900461ffff1681565b606c546fffffffffffffffffffffffffffffffff1681565b336116146115c6565b6001600160a01b0316146116475761162b336111ee565b6116475760405162461bcd60e51b815260040161074690612f7e565b505050565b611654611f67565b6001600160a01b03166116656115c6565b6001600160a01b0316146116c0576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b606b805460ff1916911515919091179055565b336116dc6115c6565b6001600160a01b0316141580156117035750336000908152606a602052604090205460ff16155b1561173757336000908152606f602052604090205460ff166117375760405162461bcd60e51b81526004016107469061307e565b60005b81811015611647573683838381811061174f57fe5b905060400201905080602001602081019061176a9190612c27565b606d600061177b6020850185612c5f565b61ffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff929092169190911790555060010161173a565b60006127108411156117fb5760405162461bcd60e51b815260040161074690612fb5565b61183e8787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f6b92505050565b979650505050505050565b336118526115c6565b6001600160a01b03161461188557611869336111ee565b6118855760405162461bcd60e51b815260040161074690612f7e565b606c80547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b336118d16115c6565b6001600160a01b0316141580156118f85750336000908152606a602052604090205460ff16155b1561192c57336000908152606f602052604090205460ff1661192c5760405162461bcd60e51b81526004016107469061307e565b60005b81811015611647573683838381811061194457fe5b905060400201905080602001602081019061195f9190612c27565b606e60006119706020850185612c5f565b61ffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff929092169190911790555060010161192f565b606a6020526000908152604090205460ff1681565b6119e9611f67565b6001600160a01b03166119fa6115c6565b6001600160a01b031614611a55576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116611a9a5760405162461bcd60e51b81526004018080602001828103825260268152602001806133d36026913960400191505060405180910390fd5b6034546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000611b18611e80565b90506001600160a01b038116611b57576001600160a01b037fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355611b6c565b336001600160a01b03821614611b6c57600080fd5b50606c8054606b80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03959095169490940293909317909255612ee07fffffffffffffffffffffffffffffffff00000000000000000000000000000000909216919091177fffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff1670a400000000000000000000000000000000177fffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff1672a0000000000000000000000000000000000000177fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055565b33611c8f6115c6565b6001600160a01b031614611cc257611ca6336111ee565b611cc25760405162461bcd60e51b815260040161074690612f7e565b6066546040517f69412bfa0000000000000000000000000000000000000000000000000000000081526000916001600160a01b0316906369412bfa90611d0c903090600401612f2b565b60206040518083038186803b158015611d2457600080fd5b505afa158015611d38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5c9190612eec565b905080821115611d7e5760405162461bcd60e51b8152600401610746906130b5565b6066546040517f07b18bde0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906307b18bde90611dc99086908690600401612f3f565b600060405180830381600087803b158015611de357600080fd5b505af1158015611df7573d6000803e3d6000fd5b50505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052611647908490612279565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6000611eb03061232a565b15905090565b600154610100900460ff1680611ecf5750611ecf611ea5565b80611edd575060015460ff16155b611f185760405162461bcd60e51b815260040180806020018281038252602e81526020018061341f602e913960400191505060405180910390fd5b600154610100900460ff16158015611f42576001805460ff1961ff00199091166101001716811790555b611f4a612330565b611f526123cf565b8015611f64576001805461ff00191690555b50565b3390565b606b5460009060ff1615611f915760405162461bcd60e51b815260040161074690613149565b815160221480611fa2575060428251115b611fbe5760405162461bcd60e51b815260040161074690612fea565b6002820151602283015180611fe55760405162461bcd60e51b815260040161074690613180565b8161ffff1660011480611ffc57508161ffff166002145b6120185760405162461bcd60e51b815260040161074690613047565b61ffff88811660009081526069602090815260408083208b8516845290915281209184166002141561207d5750604285015181546fffffffffffffffffffffffffffffffff1681111561207d5760405162461bcd60e51b8152600401610746906131b7565b60008461ffff166002146120ab57606c54700100000000000000000000000000000000900461ffff166120d1565b606c546120d190700100000000000000000000000000000000900461ffff1660206124df565b905060008a61ffff1660021461211057606c5461210b908a9074010000000000000000000000000000000000000000900461ffff166124df565b612138565b606c54612138908a907201000000000000000000000000000000000000900461ffff166124df565b606b549091508c90600090819061010090046001600160a01b0316637bc3c9ab8461216388886124df565b8a5461218d90700100000000000000000000000000000000900467ffffffffffffffff168d6124df565b6040518463ffffffff1660e01b81526004016121ab93929190613364565b604080518083038186803b1580156121c257600080fd5b505afa1580156121d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fa9190612f04565b90925090506000861561225057606c5461224d9061271090612241906fffffffffffffffffffffffffffffffff90811690612247906402540be4009084908e908a16612542565b9061259b565b90612542565b90505b6122648161225e8686612602565b906124df565b9a505050505050505050505095945050505050565b60006122ce826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661277e9092919063ffffffff16565b805190915015611647578080602001905160208110156122ed57600080fd5b50516116475760405162461bcd60e51b815260040180806020018281038252602a81526020018061346e602a913960400191505060405180910390fd5b3b151590565b600154610100900460ff16806123495750612349611ea5565b80612357575060015460ff16155b6123925760405162461bcd60e51b815260040180806020018281038252602e81526020018061341f602e913960400191505060405180910390fd5b600154610100900460ff16158015611f52576001805460ff1961ff00199091166101001716811790558015611f64576001805461ff001916905550565b600154610100900460ff16806123e857506123e8611ea5565b806123f6575060015460ff16155b6124315760405162461bcd60e51b815260040180806020018281038252602e81526020018061341f602e913960400191505060405180910390fd5b600154610100900460ff1615801561245b576001805460ff1961ff00199091166101001716811790555b6000612465611f67565b603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015611f64576001805461ff001916905550565b600082820183811015612539576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b6000826125515750600061253c565b8282028284828161255e57fe5b04146125395760405162461bcd60e51b815260040180806020018281038252602181526020018061344d6021913960400191505060405180910390fd5b60008082116125f1576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816125fa57fe5b049392505050565b61ffff82166000908152606d60205260408120546fffffffffffffffffffffffffffffffff16806126445750606c546fffffffffffffffffffffffffffffffff165b6000612668612710612241866fffffffffffffffffffffffffffffffff8616612542565b90506000606b60019054906101000a90046001600160a01b03166001600160a01b03166392807f586040518163ffffffff1660e01b815260040160206040518083038186803b1580156126ba57600080fd5b505afa1580156126ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f29190612c43565b6fffffffffffffffffffffffffffffffff169050806127155750915061253c9050565b61ffff86166000908152606e6020526040812054670de0b6b3a764000091906127619061275a908590612241906fffffffffffffffffffffffffffffffff1686612542565b88906124df565b90508381116127705783612772565b805b98975050505050505050565b606061278d8484600085612797565b90505b9392505050565b6060824710156127d85760405162461bcd60e51b81526004018080602001828103825260268152602001806133f96026913960400191505060405180910390fd5b6127e18561232a565b612832576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b6020831061288e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612851565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146128f0576040519150601f19603f3d011682016040523d82523d6000602084013e6128f5565b606091505b509150915061183e8282866060831561290f575081612790565b82511561291f5782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612969578181015183820152602001612951565b50505050905090810190601f1680156129965780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b604080518082019091526000808252602082015290565b60008083601f8401126129cc578182fd5b50813567ffffffffffffffff8111156129e3578182fd5b6020830191508360206040830285010111156129fe57600080fd5b9250929050565b8035801515811461120b57600080fd5b60008083601f840112612a26578182fd5b50813567ffffffffffffffff811115612a3d578182fd5b6020830191508360208285010111156129fe57600080fd5b803561ffff8116811461120b57600080fd5b600060208284031215612a78578081fd5b813561253981613389565b60008060408385031215612a95578081fd5b8235612aa081613389565b946020939093013593505050565b60008060408385031215612ac0578182fd5b8235612acb81613389565b91506020830135612adb81613389565b809150509250929050565b600080600060608486031215612afa578081fd5b8335612b0581613389565b92506020840135612b1581613389565b929592945050506040919091013590565b60008060408385031215612b38578182fd5b8235612b4381613389565b9150612b5160208401612a05565b90509250929050565b60008060208385031215612b6c578182fd5b823567ffffffffffffffff811115612b82578283fd5b612b8e858286016129bb565b90969095509350505050565b600060208284031215612bab578081fd5b61279082612a05565b600060608284031215612bc5578081fd5b6040516060810181811067ffffffffffffffff82111715612be257fe5b6040528251612bf08161339e565b81526020830151612c00816133bc565b6020820152604083015163ffffffff81168114612c1b578283fd5b60408201529392505050565b600060208284031215612c38578081fd5b81356125398161339e565b600060208284031215612c54578081fd5b81516125398161339e565b600060208284031215612c70578081fd5b61279082612a55565b600080600080600080600060c0888a031215612c93578485fd5b612c9c88612a55565b96506020880135612cac81613389565b955060408801359450606088013593506080880135925060a088013567ffffffffffffffff811115612cdc578283fd5b612ce88a828b01612a15565b989b979a50959850939692959293505050565b60008060008060008060008060e0898b031215612d16578182fd5b612d1f89612a55565b97506020890135612d2f81613389565b965060408901359550606089013594506080890135935060a089013567ffffffffffffffff811115612d5f578283fd5b612d6b8b828c01612a15565b90945092505060c0890135612d7f81613389565b809150509295985092959890939650565b600080600060608486031215612da4578081fd5b612dad84612a55565b92506020840135612dbd8161339e565b91506040840135612dcd8161339e565b809150509250925092565b60008060408385031215612dea578182fd5b612df383612a55565b9150612b5160208401612a55565b60008060008060008060a08789031215612e19578384fd5b612e2287612a55565b9550612e3060208801612a55565b94506040870135612e4081613389565b935060608701359250608087013567ffffffffffffffff811115612e62578283fd5b612e6e89828a01612a15565b979a9699509497509295939492505050565b600080600080600060a08688031215612e97578283fd5b612ea086612a55565b9450612eae60208701612a55565b93506040860135612ebe8161339e565b92506060860135612ece816133bc565b91506080860135612ede816133bc565b809150509295509295909350565b600060208284031215612efd578081fd5b5051919050565b60008060408385031215612f16578182fd5b825191506020830151612adb8161339e565b90565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039290921682521515602082015260400190565b901515815260200190565b60208082526015908201527f52656c617965723a206e6f7420617070726f7665640000000000000000000000604082015260600190565b6020808252818101527f52656c617965723a205f7061796c6f616453697a6520746f6f6f6f6f20626967604082015260600190565b60208082526026908201527f52656c617965723a2077726f6e67205f61646170746572506172616d6574657260408201527f732073697a650000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601b908201527f52656c617965723a20756e737570706f72746564207478547970650000000000604082015260600190565b60208082526014908201527f52656c617965723a206e6f742075706461746572000000000000000000000000604082015260600190565b60208082526026908201527f52656c617965723a206e6f7420656e6f7567682066656520666f72207769746860408201527f64726177616c0000000000000000000000000000000000000000000000000000606082015260800190565b60208082526014908201527f52656c617965723a20696e76616c696420756c6e000000000000000000000000604082015260600190565b6020808252600d908201527f41646d696e3a2070617573656400000000000000000000000000000000000000604082015260600190565b60208082526014908201527f52656c617965723a2067617320746f6f206c6f77000000000000000000000000604082015260600190565b6020808252601f908201527f52656c617965723a206473744e6174697665416d7420746f6f206c6172676500604082015260600190565b81516fffffffffffffffffffffffffffffffff9081168252602092830151169181019190915260400190565b6fffffffffffffffffffffffffffffffff91909116815260200190565b6fffffffffffffffffffffffffffffffff92831681529116602082015260400190565b6fffffffffffffffffffffffffffffffff93909316835267ffffffffffffffff918216602084015216604082015260600190565b61ffff91909116815260200190565b600061ffff891682526001600160a01b038816602083015286604083015285606083015284608083015260c060a08301528260c0830152828460e084013781830160e090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601019695505050505050565b61ffff95861681529390941660208401526fffffffffffffffffffffffffffffffff91909116604083015267ffffffffffffffff9081166060830152909116608082015260a00190565b61ffff9390931683526020830191909152604082015260600190565b90815260200190565b6001600160a01b0381168114611f6457600080fd5b6fffffffffffffffffffffffffffffffff81168114611f6457600080fd5b67ffffffffffffffff81168114611f6457600080fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220343b1fb599eed702e4e2a2fcddbb676a2c4b69f9b054d19d44ba1bb3ade5966864736f6c63430007060033",
936
+ "bytecode": "0x608060405234801561001057600080fd5b506001600055613497806100256000396000f3fe6080604052600436106102855760003560e01c8063741bef1a11610153578063b8f8bad4116100cb578063d5f8b0141161007f578063f2fde38b11610064578063f2fde38b146106da578063fa34c84e146106fa578063fd9be5221461071a57610285565b8063d5f8b0141461069a578063f136a874146106ba57610285565b8063bf4dab51116100b0578063bf4dab511461063a578063c03f15291461065a578063c3b04e7f1461067a57610285565b8063b8f8bad4146105fa578063bedb86fb1461061a57610285565b80638576db67116101225780638da5cb5b116101075780638da5cb5b146105bb57806398dabd50146105d0578063ac353e04146105e557610285565b80638576db671461056d5780638644c5781461058d57610285565b8063741bef1a146104f6578063765a8a541461050b578063801db1fe1461053857806381ba209a1461055857610285565b806355b3524911610201578063673448dd116101b55780636c473aff1161019a5780636c473aff146104ac578063715018a6146104c1578063724e78da146104d657610285565b8063673448dd1461046a57806369cf4e3a1461048a57610285565b80635886ea65116101e65780635886ea65146104065780635c975abb146104265780636348d2691461044857610285565b806355b35249146103c6578063575765e2146103e657610285565b8063252f7b011161025857806343b9a0c41161023d57806343b9a0c414610357578063485cc955146103795780634eeba2501461039957610285565b8063252f7b01146103175780633f1034871461033757610285565b806301e336671461028a57806303343f54146102ac5780630508941e146102cc57806323161ff8146102df575b600080fd5b34801561029657600080fd5b506102aa6102a5366004612a9c565b61073a565b005b3480156102b857600080fd5b506102aa6102c7366004612a1d565b610853565b6102aa6102da366004612c95565b6108c9565b3480156102eb57600080fd5b506102ff6102fa366004612d72565b610a9b565b60405161030e93929190613224565b60405180910390f35b34801561032357600080fd5b506102aa610332366004612c13565b610b09565b34801561034357600080fd5b506102aa610352366004612e1a565b610c37565b34801561036357600080fd5b5061036c610dc2565b60405161030e919061334a565b34801561038557600080fd5b506102aa610394366004612a64565b610dc8565b3480156103a557600080fd5b506103b96103b4366004612bf9565b61101a565b60405161030e91906131e4565b3480156103d257600080fd5b506103b96103e1366004612bf9565b61103e565b3480156103f257600080fd5b506102aa610401366004612adc565b611062565b34801561041257600080fd5b5061036c610421366004612d9b565b611138565b34801561043257600080fd5b5061043b61120d565b60405161030e9190612f3d565b34801561045457600080fd5b5061045d611216565b60405161030e9190612ef5565b34801561047657600080fd5b5061043b610485366004612a1d565b611225565b34801561049657600080fd5b5061049f611247565b60405161030e9190613258565b3480156104b857600080fd5b5061045d611267565b3480156104cd57600080fd5b506102aa611276565b3480156104e257600080fd5b506102aa6104f1366004612a1d565b61134c565b34801561050257600080fd5b5061045d6113c7565b34801561051757600080fd5b5061052b610526366004612bf9565b6113db565b60405161030e91906131b8565b34801561054457600080fd5b506102aa610553366004612adc565b6114c0565b34801561056457600080fd5b5061049f61158a565b34801561057957600080fd5b5061043b610588366004612a1d565b6115ac565b34801561059957600080fd5b506105ad6105a8366004612bf9565b6115c1565b60405161030e929190613201565b3480156105c757600080fd5b5061045d6115fd565b3480156105dc57600080fd5b5061049f61160c565b3480156105f157600080fd5b506103b961162a565b34801561060657600080fd5b506102aa610615366004612d2a565b611642565b34801561062657600080fd5b506102aa610635366004612b50565b611683565b34801561064657600080fd5b506102aa610655366004612b10565b61170a565b34801561066657600080fd5b5061036c610675366004612d9b565b61180e565b34801561068657600080fd5b506102aa610695366004612bdd565b611880565b3480156106a657600080fd5b506102aa6106b5366004612b10565b6118ff565b3480156106c657600080fd5b5061043b6106d5366004612a1d565b611a03565b3480156106e657600080fd5b506102aa6106f5366004612a1d565b611a18565b34801561070657600080fd5b506102aa610715366004612a1d565b611b45565b34801561072657600080fd5b506102aa610735366004612a39565b611cbd565b336107436115fd565b6001600160a01b03161461077f5761075a33611225565b61077f5760405162461bcd60e51b815260040161077690612f48565b60405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038516906370a08231906107c7903090600401612ef5565b60206040518083038186803b1580156107df57600080fd5b505afa1580156107f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108179190612e86565b9050808211156108395760405162461bcd60e51b81526004016107769061307f565b61084d6001600160a01b0385168484611e37565b50505050565b3361085c6115fd565b6001600160a01b03161461088f5761087333611225565b61088f5760405162461bcd60e51b815260040161077690612f48565b606780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b336108d26115fd565b6001600160a01b031614610905576108e933611225565b6109055760405162461bcd60e51b815260040161077690612f48565b6002600054141561095d576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000819055506000816001600160a01b03166127103460405161098190612ef2565b600060405180830381858888f193505050503d80600081146109bf576040519150601f19603f3d011682016040523d82523d6000602084013e6109c4565b606091505b5050905080610a045760405134906001600160a01b038416907f2c7a964ca3de5ec1d42d9822f9bbd0eb142a59cc9f855e9d93813b773192c7a390600090a35b6066546040517f987fa2d50000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063987fa2d590610a59908c908c908c908c908c908c908c90600401613267565b600060405180830381600087803b158015610a7357600080fd5b505af1158015610a87573d6000803e3d6000fd5b505060016000555050505050505050505050565b60696020908152600092835260408084209091529082529020546fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b33610b126115fd565b6001600160a01b031614610b4557610b2933611225565b610b455760405162461bcd60e51b815260040161077690612f48565b60026000541415610b9d576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000556066546040517f987fa2d50000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063987fa2d590610bf7908a908a908a908a908a908a908a90600401613267565b600060405180830381600087803b158015610c1157600080fd5b505af1158015610c25573d6000803e3d6000fd5b50506001600055505050505050505050565b33610c406115fd565b6001600160a01b031614610c7357610c5733611225565b610c735760405162461bcd60e51b815260040161077690612f48565b604080516060810182526fffffffffffffffffffffffffffffffff858116825267ffffffffffffffff858116602080850191825286831685870190815261ffff8c8116600090815260698452888120918d16815292529086902094518554925191517fffffffffffffffffffffffffffffffff000000000000000000000000000000009093169416939093177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff16700100000000000000000000000000000000938316939093029290921777ffffffffffffffffffffffffffffffffffffffffffffffff1678010000000000000000000000000000000000000000000000009290911691909102179055517fd053e021dda81c7c2794ff89e320caea5379962d49ed383a3bd0a54ffc4b932f90610db390879087908790879087906132e4565b60405180910390a15050505050565b61271081565b6000610dd2611eb7565b90506001600160a01b038116610e11576001600160a01b037fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355610e26565b336001600160a01b03821614610e2657600080fd5b600154610100900460ff1680610e3f5750610e3f611edc565b80610e4d575060015460ff16155b610e885760405162461bcd60e51b815260040180806020018281038252602e8152602001806133e9602e913960400191505060405180910390fd5b600154610100900460ff16158015610eb2576001805460ff1961ff00199091166101001716811790555b610eba611eed565b606680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038616179055610ef8306001611062565b606c8054606b80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03881602179055612ee07fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116177fffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff1670a400000000000000000000000000000000177fffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff1672a0000000000000000000000000000000000000177fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055801561084d576001805461ff001916905550505050565b606d602052600090815260409020546fffffffffffffffffffffffffffffffff1681565b606e602052600090815260409020546fffffffffffffffffffffffffffffffff1681565b61106a611f9e565b6001600160a01b031661107b6115fd565b6001600160a01b0316146110d6576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0382166000908152606a602052604090819020805460ff1916831515179055517fb10786d0bfa68fb1aa29552d9203e5f545f7c073ff0784da1de1d800986f10239061112c9084908490612f22565b60405180910390a15050565b6066546000906001600160a01b031633146111655760405162461bcd60e51b8152600401610776906130dc565b6127108411156111875760405162461bcd60e51b815260040161077690612f7f565b6111ca8787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611fa292505050565b90507fdf21c415b78ed2552cc9971249e32a053abce6087a0ae0fbf3f78db5174a3493816040516111fb919061334a565b60405180910390a19695505050505050565b606b5460ff1681565b6067546001600160a01b031681565b6001600160a01b0381166000908152606a602052604090205460ff165b919050565b606c547201000000000000000000000000000000000000900461ffff1681565b6066546001600160a01b031681565b61127e611f9e565b6001600160a01b031661128f6115fd565b6001600160a01b0316146112ea576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6034546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b336113556115fd565b6001600160a01b0316146113885761136c33611225565b6113885760405162461bcd60e51b815260040161077690612f48565b606b80546001600160a01b03909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b606b5461010090046001600160a01b031681565b6113e361295a565b606b546040517fda26663a00000000000000000000000000000000000000000000000000000000815260009161010090046001600160a01b03169063da26663a90611432908690600401613258565b60606040518083038186803b15801561144a57600080fd5b505afa15801561145e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114829190612b6a565b6040805180820190915281516fffffffffffffffffffffffffffffffff16815260209182015167ffffffffffffffff16918101919091529392505050565b6114c8611f9e565b6001600160a01b03166114d96115fd565b6001600160a01b031614611534576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0382166000908152606f602052604090819020805460ff1916831515179055517fde6b048d6c4e63d85fde37ccbe03f4380c6d12cb2a1e9ce9268bbf47a1ef68789061112c9084908490612f22565b606c5474010000000000000000000000000000000000000000900461ffff1681565b606f6020526000908152604090205460ff1681565b6068602052600090815260409020546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041682565b6034546001600160a01b031690565b606c54700100000000000000000000000000000000900461ffff1681565b606c546fffffffffffffffffffffffffffffffff1681565b3361164b6115fd565b6001600160a01b03161461167e5761166233611225565b61167e5760405162461bcd60e51b815260040161077690612f48565b505050565b61168b611f9e565b6001600160a01b031661169c6115fd565b6001600160a01b0316146116f7576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b606b805460ff1916911515919091179055565b336117136115fd565b6001600160a01b03161415801561173a5750336000908152606a602052604090205460ff16155b1561176e57336000908152606f602052604090205460ff1661176e5760405162461bcd60e51b815260040161077690613048565b60005b8181101561167e573683838381811061178657fe5b90506040020190508060200160208101906117a19190612bdd565b606d60006117b26020850185612bf9565b61ffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9290921691909117905550600101611771565b60006127108411156118325760405162461bcd60e51b815260040161077690612f7f565b6118758787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611fa292505050565b979650505050505050565b336118896115fd565b6001600160a01b0316146118bc576118a033611225565b6118bc5760405162461bcd60e51b815260040161077690612f48565b606c80547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b336119086115fd565b6001600160a01b03161415801561192f5750336000908152606a602052604090205460ff16155b1561196357336000908152606f602052604090205460ff166119635760405162461bcd60e51b815260040161077690613048565b60005b8181101561167e573683838381811061197b57fe5b90506040020190508060200160208101906119969190612bdd565b606e60006119a76020850185612bf9565b61ffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9290921691909117905550600101611966565b606a6020526000908152604090205460ff1681565b611a20611f9e565b6001600160a01b0316611a316115fd565b6001600160a01b031614611a8c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116611ad15760405162461bcd60e51b815260040180806020018281038252602681526020018061339d6026913960400191505060405180910390fd5b6034546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000611b4f611eb7565b90506001600160a01b038116611b8e576001600160a01b037fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355611ba3565b336001600160a01b03821614611ba357600080fd5b50606c8054606b80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03959095169490940293909317909255612ee07fffffffffffffffffffffffffffffffff00000000000000000000000000000000909216919091177fffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff1670a400000000000000000000000000000000177fffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff1672a0000000000000000000000000000000000000177fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055565b33611cc66115fd565b6001600160a01b031614611cf957611cdd33611225565b611cf95760405162461bcd60e51b815260040161077690612f48565b6066546040517f69412bfa0000000000000000000000000000000000000000000000000000000081526000916001600160a01b0316906369412bfa90611d43903090600401612ef5565b60206040518083038186803b158015611d5b57600080fd5b505afa158015611d6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d939190612e86565b905080821115611db55760405162461bcd60e51b81526004016107769061307f565b6066546040517f07b18bde0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906307b18bde90611e009086908690600401612f09565b600060405180830381600087803b158015611e1a57600080fd5b505af1158015611e2e573d6000803e3d6000fd5b50505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261167e9084906122b8565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6000611ee730612369565b15905090565b600154610100900460ff1680611f065750611f06611edc565b80611f14575060015460ff16155b611f4f5760405162461bcd60e51b815260040180806020018281038252602e8152602001806133e9602e913960400191505060405180910390fd5b600154610100900460ff16158015611f79576001805460ff1961ff00199091166101001716811790555b611f8161236f565b611f8961240e565b8015611f9b576001805461ff00191690555b50565b3390565b606b5460009060ff1615611fc85760405162461bcd60e51b815260040161077690613113565b815160221480611fd9575060428251115b611ff55760405162461bcd60e51b815260040161077690612fb4565b600282015160228301518061201c5760405162461bcd60e51b81526004016107769061314a565b8161ffff166001148061203357508161ffff166002145b61204f5760405162461bcd60e51b815260040161077690613011565b61ffff88811660009081526069602090815260408083208b85168452909152812091841660021461209a57606c54700100000000000000000000000000000000900461ffff166120c0565b606c546120c090700100000000000000000000000000000000900461ffff16602061251e565b905060008961ffff166002146120ff57606c546120fa90899074010000000000000000000000000000000000000000900461ffff1661251e565b612127565b606c546121279089907201000000000000000000000000000000000000900461ffff1661251e565b606b549091508b9060009081908190819061010090046001600160a01b03166388a4124c866121568a8a61251e565b8b5461218090700100000000000000000000000000000000900467ffffffffffffffff168e61251e565b6040518463ffffffff1660e01b815260040161219e9392919061332e565b60806040518083038186803b1580156121b657600080fd5b505afa1580156121ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ee9190612e9e565b935093509350935060008a61ffff166002141561223e575060428c015188546fffffffffffffffffffffffffffffffff1681111561223e5760405162461bcd60e51b815260040161077690613181565b6000811561228c57606c54612289906127109061227d906fffffffffffffffffffffffffffffffff908116906122839089811690849089908d16612581565b906125da565b90612581565b90505b6122a18161229b898987612641565b9061251e565b9c5050505050505050505050505095945050505050565b600061230d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166127369092919063ffffffff16565b80519091501561167e5780806020019051602081101561232c57600080fd5b505161167e5760405162461bcd60e51b815260040180806020018281038252602a815260200180613438602a913960400191505060405180910390fd5b3b151590565b600154610100900460ff16806123885750612388611edc565b80612396575060015460ff16155b6123d15760405162461bcd60e51b815260040180806020018281038252602e8152602001806133e9602e913960400191505060405180910390fd5b600154610100900460ff16158015611f89576001805460ff1961ff00199091166101001716811790558015611f9b576001805461ff001916905550565b600154610100900460ff16806124275750612427611edc565b80612435575060015460ff16155b6124705760405162461bcd60e51b815260040180806020018281038252602e8152602001806133e9602e913960400191505060405180910390fd5b600154610100900460ff1615801561249a576001805460ff1961ff00199091166101001716811790555b60006124a4611f9e565b603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015611f9b576001805461ff001916905550565b600082820183811015612578576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b6000826125905750600061257b565b8282028284828161259d57fe5b04146125785760405162461bcd60e51b81526004018080602001828103825260218152602001806134176021913960400191505060405180910390fd5b6000808211612630576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161263957fe5b049392505050565b61ffff83166000908152606d60205260408120546fffffffffffffffffffffffffffffffff16806126835750606c546fffffffffffffffffffffffffffffffff165b60006126a761271061227d876fffffffffffffffffffffffffffffffff8616612581565b90506fffffffffffffffffffffffffffffffff84166126c957915061272f9050565b61ffff86166000908152606e6020526040812054670de0b6b3a7640000919061271790612710906fffffffffffffffffffffffffffffffff808a169161227d911686612581565b889061251e565b90508281116127265782612728565b805b9450505050505b9392505050565b6060612745848460008561274d565b949350505050565b60608247101561278e5760405162461bcd60e51b81526004018080602001828103825260268152602001806133c36026913960400191505060405180910390fd5b61279785612369565b6127e8576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b6020831061284457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612807565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146128a6576040519150601f19603f3d011682016040523d82523d6000602084013e6128ab565b606091505b5091509150611875828286606083156128c557508161272f565b8251156128d55782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561291f578181015183820152602001612907565b50505050905090810190601f16801561294c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b604080518082019091526000808252602082015290565b60008083601f840112612982578182fd5b50813567ffffffffffffffff811115612999578182fd5b6020830191508360206040830285010111156129b457600080fd5b9250929050565b8035801515811461124257600080fd5b60008083601f8401126129dc578182fd5b50813567ffffffffffffffff8111156129f3578182fd5b6020830191508360208285010111156129b457600080fd5b803561ffff8116811461124257600080fd5b600060208284031215612a2e578081fd5b813561257881613353565b60008060408385031215612a4b578081fd5b8235612a5681613353565b946020939093013593505050565b60008060408385031215612a76578182fd5b8235612a8181613353565b91506020830135612a9181613353565b809150509250929050565b600080600060608486031215612ab0578081fd5b8335612abb81613353565b92506020840135612acb81613353565b929592945050506040919091013590565b60008060408385031215612aee578182fd5b8235612af981613353565b9150612b07602084016129bb565b90509250929050565b60008060208385031215612b22578182fd5b823567ffffffffffffffff811115612b38578283fd5b612b4485828601612971565b90969095509350505050565b600060208284031215612b61578081fd5b61272f826129bb565b600060608284031215612b7b578081fd5b6040516060810181811067ffffffffffffffff82111715612b9857fe5b6040528251612ba681613368565b81526020830151612bb681613386565b6020820152604083015163ffffffff81168114612bd1578283fd5b60408201529392505050565b600060208284031215612bee578081fd5b813561257881613368565b600060208284031215612c0a578081fd5b61272f82612a0b565b600080600080600080600060c0888a031215612c2d578485fd5b612c3688612a0b565b96506020880135612c4681613353565b955060408801359450606088013593506080880135925060a088013567ffffffffffffffff811115612c76578283fd5b612c828a828b016129cb565b989b979a50959850939692959293505050565b60008060008060008060008060e0898b031215612cb0578182fd5b612cb989612a0b565b97506020890135612cc981613353565b965060408901359550606089013594506080890135935060a089013567ffffffffffffffff811115612cf9578283fd5b612d058b828c016129cb565b90945092505060c0890135612d1981613353565b809150509295985092959890939650565b600080600060608486031215612d3e578081fd5b612d4784612a0b565b92506020840135612d5781613368565b91506040840135612d6781613368565b809150509250925092565b60008060408385031215612d84578182fd5b612d8d83612a0b565b9150612b0760208401612a0b565b60008060008060008060a08789031215612db3578384fd5b612dbc87612a0b565b9550612dca60208801612a0b565b94506040870135612dda81613353565b935060608701359250608087013567ffffffffffffffff811115612dfc578283fd5b612e0889828a016129cb565b979a9699509497509295939492505050565b600080600080600060a08688031215612e31578283fd5b612e3a86612a0b565b9450612e4860208701612a0b565b93506040860135612e5881613368565b92506060860135612e6881613386565b91506080860135612e7881613386565b809150509295509295909350565b600060208284031215612e97578081fd5b5051919050565b60008060008060808587031215612eb3578182fd5b845193506020850151612ec581613368565b6040860151909350612ed681613368565b6060860151909250612ee781613368565b939692955090935050565b90565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039290921682521515602082015260400190565b901515815260200190565b60208082526015908201527f52656c617965723a206e6f7420617070726f7665640000000000000000000000604082015260600190565b6020808252818101527f52656c617965723a205f7061796c6f616453697a6520746f6f6f6f6f20626967604082015260600190565b60208082526026908201527f52656c617965723a2077726f6e67205f61646170746572506172616d6574657260408201527f732073697a650000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601b908201527f52656c617965723a20756e737570706f72746564207478547970650000000000604082015260600190565b60208082526014908201527f52656c617965723a206e6f742075706461746572000000000000000000000000604082015260600190565b60208082526026908201527f52656c617965723a206e6f7420656e6f7567682066656520666f72207769746860408201527f64726177616c0000000000000000000000000000000000000000000000000000606082015260800190565b60208082526014908201527f52656c617965723a20696e76616c696420756c6e000000000000000000000000604082015260600190565b6020808252600d908201527f41646d696e3a2070617573656400000000000000000000000000000000000000604082015260600190565b60208082526014908201527f52656c617965723a2067617320746f6f206c6f77000000000000000000000000604082015260600190565b6020808252601f908201527f52656c617965723a206473744e6174697665416d7420746f6f206c6172676500604082015260600190565b81516fffffffffffffffffffffffffffffffff9081168252602092830151169181019190915260400190565b6fffffffffffffffffffffffffffffffff91909116815260200190565b6fffffffffffffffffffffffffffffffff92831681529116602082015260400190565b6fffffffffffffffffffffffffffffffff93909316835267ffffffffffffffff918216602084015216604082015260600190565b61ffff91909116815260200190565b600061ffff891682526001600160a01b038816602083015286604083015285606083015284608083015260c060a08301528260c0830152828460e084013781830160e090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601019695505050505050565b61ffff95861681529390941660208401526fffffffffffffffffffffffffffffffff91909116604083015267ffffffffffffffff9081166060830152909116608082015260a00190565b61ffff9390931683526020830191909152604082015260600190565b90815260200190565b6001600160a01b0381168114611f9b57600080fd5b6fffffffffffffffffffffffffffffffff81168114611f9b57600080fd5b67ffffffffffffffff81168114611f9b57600080fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212206e049973a8018635560d2ae382431ef5a97c93af9d3bf02df9291cb611b14d8064736f6c63430007060033",
937
+ "deployedBytecode": "0x6080604052600436106102855760003560e01c8063741bef1a11610153578063b8f8bad4116100cb578063d5f8b0141161007f578063f2fde38b11610064578063f2fde38b146106da578063fa34c84e146106fa578063fd9be5221461071a57610285565b8063d5f8b0141461069a578063f136a874146106ba57610285565b8063bf4dab51116100b0578063bf4dab511461063a578063c03f15291461065a578063c3b04e7f1461067a57610285565b8063b8f8bad4146105fa578063bedb86fb1461061a57610285565b80638576db67116101225780638da5cb5b116101075780638da5cb5b146105bb57806398dabd50146105d0578063ac353e04146105e557610285565b80638576db671461056d5780638644c5781461058d57610285565b8063741bef1a146104f6578063765a8a541461050b578063801db1fe1461053857806381ba209a1461055857610285565b806355b3524911610201578063673448dd116101b55780636c473aff1161019a5780636c473aff146104ac578063715018a6146104c1578063724e78da146104d657610285565b8063673448dd1461046a57806369cf4e3a1461048a57610285565b80635886ea65116101e65780635886ea65146104065780635c975abb146104265780636348d2691461044857610285565b806355b35249146103c6578063575765e2146103e657610285565b8063252f7b011161025857806343b9a0c41161023d57806343b9a0c414610357578063485cc955146103795780634eeba2501461039957610285565b8063252f7b01146103175780633f1034871461033757610285565b806301e336671461028a57806303343f54146102ac5780630508941e146102cc57806323161ff8146102df575b600080fd5b34801561029657600080fd5b506102aa6102a5366004612a9c565b61073a565b005b3480156102b857600080fd5b506102aa6102c7366004612a1d565b610853565b6102aa6102da366004612c95565b6108c9565b3480156102eb57600080fd5b506102ff6102fa366004612d72565b610a9b565b60405161030e93929190613224565b60405180910390f35b34801561032357600080fd5b506102aa610332366004612c13565b610b09565b34801561034357600080fd5b506102aa610352366004612e1a565b610c37565b34801561036357600080fd5b5061036c610dc2565b60405161030e919061334a565b34801561038557600080fd5b506102aa610394366004612a64565b610dc8565b3480156103a557600080fd5b506103b96103b4366004612bf9565b61101a565b60405161030e91906131e4565b3480156103d257600080fd5b506103b96103e1366004612bf9565b61103e565b3480156103f257600080fd5b506102aa610401366004612adc565b611062565b34801561041257600080fd5b5061036c610421366004612d9b565b611138565b34801561043257600080fd5b5061043b61120d565b60405161030e9190612f3d565b34801561045457600080fd5b5061045d611216565b60405161030e9190612ef5565b34801561047657600080fd5b5061043b610485366004612a1d565b611225565b34801561049657600080fd5b5061049f611247565b60405161030e9190613258565b3480156104b857600080fd5b5061045d611267565b3480156104cd57600080fd5b506102aa611276565b3480156104e257600080fd5b506102aa6104f1366004612a1d565b61134c565b34801561050257600080fd5b5061045d6113c7565b34801561051757600080fd5b5061052b610526366004612bf9565b6113db565b60405161030e91906131b8565b34801561054457600080fd5b506102aa610553366004612adc565b6114c0565b34801561056457600080fd5b5061049f61158a565b34801561057957600080fd5b5061043b610588366004612a1d565b6115ac565b34801561059957600080fd5b506105ad6105a8366004612bf9565b6115c1565b60405161030e929190613201565b3480156105c757600080fd5b5061045d6115fd565b3480156105dc57600080fd5b5061049f61160c565b3480156105f157600080fd5b506103b961162a565b34801561060657600080fd5b506102aa610615366004612d2a565b611642565b34801561062657600080fd5b506102aa610635366004612b50565b611683565b34801561064657600080fd5b506102aa610655366004612b10565b61170a565b34801561066657600080fd5b5061036c610675366004612d9b565b61180e565b34801561068657600080fd5b506102aa610695366004612bdd565b611880565b3480156106a657600080fd5b506102aa6106b5366004612b10565b6118ff565b3480156106c657600080fd5b5061043b6106d5366004612a1d565b611a03565b3480156106e657600080fd5b506102aa6106f5366004612a1d565b611a18565b34801561070657600080fd5b506102aa610715366004612a1d565b611b45565b34801561072657600080fd5b506102aa610735366004612a39565b611cbd565b336107436115fd565b6001600160a01b03161461077f5761075a33611225565b61077f5760405162461bcd60e51b815260040161077690612f48565b60405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038516906370a08231906107c7903090600401612ef5565b60206040518083038186803b1580156107df57600080fd5b505afa1580156107f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108179190612e86565b9050808211156108395760405162461bcd60e51b81526004016107769061307f565b61084d6001600160a01b0385168484611e37565b50505050565b3361085c6115fd565b6001600160a01b03161461088f5761087333611225565b61088f5760405162461bcd60e51b815260040161077690612f48565b606780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b336108d26115fd565b6001600160a01b031614610905576108e933611225565b6109055760405162461bcd60e51b815260040161077690612f48565b6002600054141561095d576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000819055506000816001600160a01b03166127103460405161098190612ef2565b600060405180830381858888f193505050503d80600081146109bf576040519150601f19603f3d011682016040523d82523d6000602084013e6109c4565b606091505b5050905080610a045760405134906001600160a01b038416907f2c7a964ca3de5ec1d42d9822f9bbd0eb142a59cc9f855e9d93813b773192c7a390600090a35b6066546040517f987fa2d50000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063987fa2d590610a59908c908c908c908c908c908c908c90600401613267565b600060405180830381600087803b158015610a7357600080fd5b505af1158015610a87573d6000803e3d6000fd5b505060016000555050505050505050505050565b60696020908152600092835260408084209091529082529020546fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b33610b126115fd565b6001600160a01b031614610b4557610b2933611225565b610b455760405162461bcd60e51b815260040161077690612f48565b60026000541415610b9d576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000556066546040517f987fa2d50000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063987fa2d590610bf7908a908a908a908a908a908a908a90600401613267565b600060405180830381600087803b158015610c1157600080fd5b505af1158015610c25573d6000803e3d6000fd5b50506001600055505050505050505050565b33610c406115fd565b6001600160a01b031614610c7357610c5733611225565b610c735760405162461bcd60e51b815260040161077690612f48565b604080516060810182526fffffffffffffffffffffffffffffffff858116825267ffffffffffffffff858116602080850191825286831685870190815261ffff8c8116600090815260698452888120918d16815292529086902094518554925191517fffffffffffffffffffffffffffffffff000000000000000000000000000000009093169416939093177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff16700100000000000000000000000000000000938316939093029290921777ffffffffffffffffffffffffffffffffffffffffffffffff1678010000000000000000000000000000000000000000000000009290911691909102179055517fd053e021dda81c7c2794ff89e320caea5379962d49ed383a3bd0a54ffc4b932f90610db390879087908790879087906132e4565b60405180910390a15050505050565b61271081565b6000610dd2611eb7565b90506001600160a01b038116610e11576001600160a01b037fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355610e26565b336001600160a01b03821614610e2657600080fd5b600154610100900460ff1680610e3f5750610e3f611edc565b80610e4d575060015460ff16155b610e885760405162461bcd60e51b815260040180806020018281038252602e8152602001806133e9602e913960400191505060405180910390fd5b600154610100900460ff16158015610eb2576001805460ff1961ff00199091166101001716811790555b610eba611eed565b606680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038616179055610ef8306001611062565b606c8054606b80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03881602179055612ee07fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116177fffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff1670a400000000000000000000000000000000177fffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff1672a0000000000000000000000000000000000000177fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055801561084d576001805461ff001916905550505050565b606d602052600090815260409020546fffffffffffffffffffffffffffffffff1681565b606e602052600090815260409020546fffffffffffffffffffffffffffffffff1681565b61106a611f9e565b6001600160a01b031661107b6115fd565b6001600160a01b0316146110d6576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0382166000908152606a602052604090819020805460ff1916831515179055517fb10786d0bfa68fb1aa29552d9203e5f545f7c073ff0784da1de1d800986f10239061112c9084908490612f22565b60405180910390a15050565b6066546000906001600160a01b031633146111655760405162461bcd60e51b8152600401610776906130dc565b6127108411156111875760405162461bcd60e51b815260040161077690612f7f565b6111ca8787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611fa292505050565b90507fdf21c415b78ed2552cc9971249e32a053abce6087a0ae0fbf3f78db5174a3493816040516111fb919061334a565b60405180910390a19695505050505050565b606b5460ff1681565b6067546001600160a01b031681565b6001600160a01b0381166000908152606a602052604090205460ff165b919050565b606c547201000000000000000000000000000000000000900461ffff1681565b6066546001600160a01b031681565b61127e611f9e565b6001600160a01b031661128f6115fd565b6001600160a01b0316146112ea576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6034546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b336113556115fd565b6001600160a01b0316146113885761136c33611225565b6113885760405162461bcd60e51b815260040161077690612f48565b606b80546001600160a01b03909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b606b5461010090046001600160a01b031681565b6113e361295a565b606b546040517fda26663a00000000000000000000000000000000000000000000000000000000815260009161010090046001600160a01b03169063da26663a90611432908690600401613258565b60606040518083038186803b15801561144a57600080fd5b505afa15801561145e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114829190612b6a565b6040805180820190915281516fffffffffffffffffffffffffffffffff16815260209182015167ffffffffffffffff16918101919091529392505050565b6114c8611f9e565b6001600160a01b03166114d96115fd565b6001600160a01b031614611534576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0382166000908152606f602052604090819020805460ff1916831515179055517fde6b048d6c4e63d85fde37ccbe03f4380c6d12cb2a1e9ce9268bbf47a1ef68789061112c9084908490612f22565b606c5474010000000000000000000000000000000000000000900461ffff1681565b606f6020526000908152604090205460ff1681565b6068602052600090815260409020546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041682565b6034546001600160a01b031690565b606c54700100000000000000000000000000000000900461ffff1681565b606c546fffffffffffffffffffffffffffffffff1681565b3361164b6115fd565b6001600160a01b03161461167e5761166233611225565b61167e5760405162461bcd60e51b815260040161077690612f48565b505050565b61168b611f9e565b6001600160a01b031661169c6115fd565b6001600160a01b0316146116f7576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b606b805460ff1916911515919091179055565b336117136115fd565b6001600160a01b03161415801561173a5750336000908152606a602052604090205460ff16155b1561176e57336000908152606f602052604090205460ff1661176e5760405162461bcd60e51b815260040161077690613048565b60005b8181101561167e573683838381811061178657fe5b90506040020190508060200160208101906117a19190612bdd565b606d60006117b26020850185612bf9565b61ffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9290921691909117905550600101611771565b60006127108411156118325760405162461bcd60e51b815260040161077690612f7f565b6118758787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611fa292505050565b979650505050505050565b336118896115fd565b6001600160a01b0316146118bc576118a033611225565b6118bc5760405162461bcd60e51b815260040161077690612f48565b606c80547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b336119086115fd565b6001600160a01b03161415801561192f5750336000908152606a602052604090205460ff16155b1561196357336000908152606f602052604090205460ff166119635760405162461bcd60e51b815260040161077690613048565b60005b8181101561167e573683838381811061197b57fe5b90506040020190508060200160208101906119969190612bdd565b606e60006119a76020850185612bf9565b61ffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9290921691909117905550600101611966565b606a6020526000908152604090205460ff1681565b611a20611f9e565b6001600160a01b0316611a316115fd565b6001600160a01b031614611a8c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116611ad15760405162461bcd60e51b815260040180806020018281038252602681526020018061339d6026913960400191505060405180910390fd5b6034546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000611b4f611eb7565b90506001600160a01b038116611b8e576001600160a01b037fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355611ba3565b336001600160a01b03821614611ba357600080fd5b50606c8054606b80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03959095169490940293909317909255612ee07fffffffffffffffffffffffffffffffff00000000000000000000000000000000909216919091177fffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff1670a400000000000000000000000000000000177fffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff1672a0000000000000000000000000000000000000177fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055565b33611cc66115fd565b6001600160a01b031614611cf957611cdd33611225565b611cf95760405162461bcd60e51b815260040161077690612f48565b6066546040517f69412bfa0000000000000000000000000000000000000000000000000000000081526000916001600160a01b0316906369412bfa90611d43903090600401612ef5565b60206040518083038186803b158015611d5b57600080fd5b505afa158015611d6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d939190612e86565b905080821115611db55760405162461bcd60e51b81526004016107769061307f565b6066546040517f07b18bde0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906307b18bde90611e009086908690600401612f09565b600060405180830381600087803b158015611e1a57600080fd5b505af1158015611e2e573d6000803e3d6000fd5b50505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261167e9084906122b8565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6000611ee730612369565b15905090565b600154610100900460ff1680611f065750611f06611edc565b80611f14575060015460ff16155b611f4f5760405162461bcd60e51b815260040180806020018281038252602e8152602001806133e9602e913960400191505060405180910390fd5b600154610100900460ff16158015611f79576001805460ff1961ff00199091166101001716811790555b611f8161236f565b611f8961240e565b8015611f9b576001805461ff00191690555b50565b3390565b606b5460009060ff1615611fc85760405162461bcd60e51b815260040161077690613113565b815160221480611fd9575060428251115b611ff55760405162461bcd60e51b815260040161077690612fb4565b600282015160228301518061201c5760405162461bcd60e51b81526004016107769061314a565b8161ffff166001148061203357508161ffff166002145b61204f5760405162461bcd60e51b815260040161077690613011565b61ffff88811660009081526069602090815260408083208b85168452909152812091841660021461209a57606c54700100000000000000000000000000000000900461ffff166120c0565b606c546120c090700100000000000000000000000000000000900461ffff16602061251e565b905060008961ffff166002146120ff57606c546120fa90899074010000000000000000000000000000000000000000900461ffff1661251e565b612127565b606c546121279089907201000000000000000000000000000000000000900461ffff1661251e565b606b549091508b9060009081908190819061010090046001600160a01b03166388a4124c866121568a8a61251e565b8b5461218090700100000000000000000000000000000000900467ffffffffffffffff168e61251e565b6040518463ffffffff1660e01b815260040161219e9392919061332e565b60806040518083038186803b1580156121b657600080fd5b505afa1580156121ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ee9190612e9e565b935093509350935060008a61ffff166002141561223e575060428c015188546fffffffffffffffffffffffffffffffff1681111561223e5760405162461bcd60e51b815260040161077690613181565b6000811561228c57606c54612289906127109061227d906fffffffffffffffffffffffffffffffff908116906122839089811690849089908d16612581565b906125da565b90612581565b90505b6122a18161229b898987612641565b9061251e565b9c5050505050505050505050505095945050505050565b600061230d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166127369092919063ffffffff16565b80519091501561167e5780806020019051602081101561232c57600080fd5b505161167e5760405162461bcd60e51b815260040180806020018281038252602a815260200180613438602a913960400191505060405180910390fd5b3b151590565b600154610100900460ff16806123885750612388611edc565b80612396575060015460ff16155b6123d15760405162461bcd60e51b815260040180806020018281038252602e8152602001806133e9602e913960400191505060405180910390fd5b600154610100900460ff16158015611f89576001805460ff1961ff00199091166101001716811790558015611f9b576001805461ff001916905550565b600154610100900460ff16806124275750612427611edc565b80612435575060015460ff16155b6124705760405162461bcd60e51b815260040180806020018281038252602e8152602001806133e9602e913960400191505060405180910390fd5b600154610100900460ff1615801561249a576001805460ff1961ff00199091166101001716811790555b60006124a4611f9e565b603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015611f9b576001805461ff001916905550565b600082820183811015612578576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b6000826125905750600061257b565b8282028284828161259d57fe5b04146125785760405162461bcd60e51b81526004018080602001828103825260218152602001806134176021913960400191505060405180910390fd5b6000808211612630576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161263957fe5b049392505050565b61ffff83166000908152606d60205260408120546fffffffffffffffffffffffffffffffff16806126835750606c546fffffffffffffffffffffffffffffffff165b60006126a761271061227d876fffffffffffffffffffffffffffffffff8616612581565b90506fffffffffffffffffffffffffffffffff84166126c957915061272f9050565b61ffff86166000908152606e6020526040812054670de0b6b3a7640000919061271790612710906fffffffffffffffffffffffffffffffff808a169161227d911686612581565b889061251e565b90508281116127265782612728565b805b9450505050505b9392505050565b6060612745848460008561274d565b949350505050565b60608247101561278e5760405162461bcd60e51b81526004018080602001828103825260268152602001806133c36026913960400191505060405180910390fd5b61279785612369565b6127e8576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b6020831061284457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612807565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146128a6576040519150601f19603f3d011682016040523d82523d6000602084013e6128ab565b606091505b5091509150611875828286606083156128c557508161272f565b8251156128d55782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561291f578181015183820152602001612907565b50505050905090810190601f16801561294c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b604080518082019091526000808252602082015290565b60008083601f840112612982578182fd5b50813567ffffffffffffffff811115612999578182fd5b6020830191508360206040830285010111156129b457600080fd5b9250929050565b8035801515811461124257600080fd5b60008083601f8401126129dc578182fd5b50813567ffffffffffffffff8111156129f3578182fd5b6020830191508360208285010111156129b457600080fd5b803561ffff8116811461124257600080fd5b600060208284031215612a2e578081fd5b813561257881613353565b60008060408385031215612a4b578081fd5b8235612a5681613353565b946020939093013593505050565b60008060408385031215612a76578182fd5b8235612a8181613353565b91506020830135612a9181613353565b809150509250929050565b600080600060608486031215612ab0578081fd5b8335612abb81613353565b92506020840135612acb81613353565b929592945050506040919091013590565b60008060408385031215612aee578182fd5b8235612af981613353565b9150612b07602084016129bb565b90509250929050565b60008060208385031215612b22578182fd5b823567ffffffffffffffff811115612b38578283fd5b612b4485828601612971565b90969095509350505050565b600060208284031215612b61578081fd5b61272f826129bb565b600060608284031215612b7b578081fd5b6040516060810181811067ffffffffffffffff82111715612b9857fe5b6040528251612ba681613368565b81526020830151612bb681613386565b6020820152604083015163ffffffff81168114612bd1578283fd5b60408201529392505050565b600060208284031215612bee578081fd5b813561257881613368565b600060208284031215612c0a578081fd5b61272f82612a0b565b600080600080600080600060c0888a031215612c2d578485fd5b612c3688612a0b565b96506020880135612c4681613353565b955060408801359450606088013593506080880135925060a088013567ffffffffffffffff811115612c76578283fd5b612c828a828b016129cb565b989b979a50959850939692959293505050565b60008060008060008060008060e0898b031215612cb0578182fd5b612cb989612a0b565b97506020890135612cc981613353565b965060408901359550606089013594506080890135935060a089013567ffffffffffffffff811115612cf9578283fd5b612d058b828c016129cb565b90945092505060c0890135612d1981613353565b809150509295985092959890939650565b600080600060608486031215612d3e578081fd5b612d4784612a0b565b92506020840135612d5781613368565b91506040840135612d6781613368565b809150509250925092565b60008060408385031215612d84578182fd5b612d8d83612a0b565b9150612b0760208401612a0b565b60008060008060008060a08789031215612db3578384fd5b612dbc87612a0b565b9550612dca60208801612a0b565b94506040870135612dda81613353565b935060608701359250608087013567ffffffffffffffff811115612dfc578283fd5b612e0889828a016129cb565b979a9699509497509295939492505050565b600080600080600060a08688031215612e31578283fd5b612e3a86612a0b565b9450612e4860208701612a0b565b93506040860135612e5881613368565b92506060860135612e6881613386565b91506080860135612e7881613386565b809150509295509295909350565b600060208284031215612e97578081fd5b5051919050565b60008060008060808587031215612eb3578182fd5b845193506020850151612ec581613368565b6040860151909350612ed681613368565b6060860151909250612ee781613368565b939692955090935050565b90565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039290921682521515602082015260400190565b901515815260200190565b60208082526015908201527f52656c617965723a206e6f7420617070726f7665640000000000000000000000604082015260600190565b6020808252818101527f52656c617965723a205f7061796c6f616453697a6520746f6f6f6f6f20626967604082015260600190565b60208082526026908201527f52656c617965723a2077726f6e67205f61646170746572506172616d6574657260408201527f732073697a650000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601b908201527f52656c617965723a20756e737570706f72746564207478547970650000000000604082015260600190565b60208082526014908201527f52656c617965723a206e6f742075706461746572000000000000000000000000604082015260600190565b60208082526026908201527f52656c617965723a206e6f7420656e6f7567682066656520666f72207769746860408201527f64726177616c0000000000000000000000000000000000000000000000000000606082015260800190565b60208082526014908201527f52656c617965723a20696e76616c696420756c6e000000000000000000000000604082015260600190565b6020808252600d908201527f41646d696e3a2070617573656400000000000000000000000000000000000000604082015260600190565b60208082526014908201527f52656c617965723a2067617320746f6f206c6f77000000000000000000000000604082015260600190565b6020808252601f908201527f52656c617965723a206473744e6174697665416d7420746f6f206c6172676500604082015260600190565b81516fffffffffffffffffffffffffffffffff9081168252602092830151169181019190915260400190565b6fffffffffffffffffffffffffffffffff91909116815260200190565b6fffffffffffffffffffffffffffffffff92831681529116602082015260400190565b6fffffffffffffffffffffffffffffffff93909316835267ffffffffffffffff918216602084015216604082015260600190565b61ffff91909116815260200190565b600061ffff891682526001600160a01b038816602083015286604083015285606083015284608083015260c060a08301528260c0830152828460e084013781830160e090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601019695505050505050565b61ffff95861681529390941660208401526fffffffffffffffffffffffffffffffff91909116604083015267ffffffffffffffff9081166060830152909116608082015260a00190565b61ffff9390931683526020830191909152604082015260600190565b90815260200190565b6001600160a01b0381168114611f9b57600080fd5b6fffffffffffffffffffffffffffffffff81168114611f9b57600080fd5b67ffffffffffffffff81168114611f9b57600080fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212206e049973a8018635560d2ae382431ef5a97c93af9d3bf02df9291cb611b14d8064736f6c63430007060033",
925
938
  "linkReferences": {},
926
939
  "deployedLinkReferences": {}
927
940
  }
@@ -0,0 +1,104 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "ILayerZeroPriceFeedV2",
4
+ "sourceName": "contracts/interfaces/ILayerZeroPriceFeedV2.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "uint32",
10
+ "name": "_dstEid",
11
+ "type": "uint32"
12
+ },
13
+ {
14
+ "internalType": "uint256",
15
+ "name": "_callDataSize",
16
+ "type": "uint256"
17
+ },
18
+ {
19
+ "internalType": "uint256",
20
+ "name": "_gas",
21
+ "type": "uint256"
22
+ }
23
+ ],
24
+ "name": "estimateFeeByEid",
25
+ "outputs": [
26
+ {
27
+ "internalType": "uint256",
28
+ "name": "fee",
29
+ "type": "uint256"
30
+ },
31
+ {
32
+ "internalType": "uint128",
33
+ "name": "priceRatio",
34
+ "type": "uint128"
35
+ },
36
+ {
37
+ "internalType": "uint128",
38
+ "name": "priceRatioDenominator",
39
+ "type": "uint128"
40
+ },
41
+ {
42
+ "internalType": "uint128",
43
+ "name": "nativePriceUSD",
44
+ "type": "uint128"
45
+ }
46
+ ],
47
+ "stateMutability": "view",
48
+ "type": "function"
49
+ },
50
+ {
51
+ "inputs": [
52
+ {
53
+ "internalType": "uint32",
54
+ "name": "_dstEid",
55
+ "type": "uint32"
56
+ }
57
+ ],
58
+ "name": "getPrice",
59
+ "outputs": [
60
+ {
61
+ "components": [
62
+ {
63
+ "internalType": "uint128",
64
+ "name": "priceRatio",
65
+ "type": "uint128"
66
+ },
67
+ {
68
+ "internalType": "uint64",
69
+ "name": "gasPriceInUnit",
70
+ "type": "uint64"
71
+ },
72
+ {
73
+ "internalType": "uint32",
74
+ "name": "gasPerByte",
75
+ "type": "uint32"
76
+ }
77
+ ],
78
+ "internalType": "struct ILayerZeroPriceFeedV2.Price",
79
+ "name": "",
80
+ "type": "tuple"
81
+ }
82
+ ],
83
+ "stateMutability": "view",
84
+ "type": "function"
85
+ },
86
+ {
87
+ "inputs": [],
88
+ "name": "getPriceRatioDenominator",
89
+ "outputs": [
90
+ {
91
+ "internalType": "uint128",
92
+ "name": "",
93
+ "type": "uint128"
94
+ }
95
+ ],
96
+ "stateMutability": "view",
97
+ "type": "function"
98
+ }
99
+ ],
100
+ "bytecode": "0x",
101
+ "deployedBytecode": "0x",
102
+ "linkReferences": {},
103
+ "deployedLinkReferences": {}
104
+ }