@keep-network/tbtc-v2 1.0.0-dev.6 → 1.0.1-dev.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 (123) hide show
  1. package/artifacts/BLS.json +1 -1
  2. package/artifacts/Bank.json +3 -3
  3. package/artifacts/BeaconAuthorization.json +1 -1
  4. package/artifacts/BeaconDkg.json +1 -1
  5. package/artifacts/BeaconDkgValidator.json +1 -1
  6. package/artifacts/BeaconInactivity.json +1 -1
  7. package/artifacts/BeaconSortitionPool.json +3 -3
  8. package/artifacts/Bridge.json +5 -5
  9. package/artifacts/BridgeGovernance.json +9 -9
  10. package/artifacts/BridgeGovernanceParameters.json +2 -2
  11. package/artifacts/Deposit.json +7 -7
  12. package/artifacts/DepositSweep.json +7 -7
  13. package/artifacts/DonationVault.json +3 -3
  14. package/artifacts/EcdsaDkgValidator.json +1 -1
  15. package/artifacts/EcdsaInactivity.json +1 -1
  16. package/artifacts/EcdsaSortitionPool.json +3 -3
  17. package/artifacts/Fraud.json +7 -7
  18. package/artifacts/KeepRegistry.json +1 -1
  19. package/artifacts/KeepStake.json +2 -2
  20. package/artifacts/KeepToken.json +2 -2
  21. package/artifacts/KeepTokenStaking.json +1 -1
  22. package/artifacts/LightRelay.json +18 -18
  23. package/artifacts/MaintainerProxy.json +25 -25
  24. package/artifacts/MovingFunds.json +7 -7
  25. package/artifacts/NuCypherStakingEscrow.json +1 -1
  26. package/artifacts/NuCypherToken.json +2 -2
  27. package/artifacts/RandomBeacon.json +2 -2
  28. package/artifacts/RandomBeaconChaosnet.json +2 -2
  29. package/artifacts/RandomBeaconGovernance.json +2 -2
  30. package/artifacts/Redemption.json +7 -7
  31. package/artifacts/ReimbursementPool.json +2 -2
  32. package/artifacts/T.json +2 -2
  33. package/artifacts/TBTC.json +3 -3
  34. package/artifacts/TBTCToken.json +3 -3
  35. package/artifacts/TBTCVault.json +29 -29
  36. package/artifacts/TokenStaking.json +1 -1
  37. package/artifacts/TokenholderGovernor.json +9 -9
  38. package/artifacts/TokenholderTimelock.json +8 -8
  39. package/artifacts/VendingMachine.json +10 -10
  40. package/artifacts/VendingMachineKeep.json +1 -1
  41. package/artifacts/VendingMachineNuCypher.json +1 -1
  42. package/artifacts/WalletRegistry.json +5 -5
  43. package/artifacts/WalletRegistryGovernance.json +2 -2
  44. package/artifacts/Wallets.json +7 -7
  45. package/artifacts/solcInputs/{79a96d1cf4af176d93e6844dc248dcff.json → 02bce6ad4d51639a29a8a0ab743e5d10.json} +2 -2
  46. package/artifacts/solcInputs/{fccb130292c8c7cc958ab4fa31a3e180.json → 38fab978d510587e7683f801d87bbd84.json} +2 -2
  47. package/build/contracts/GovernanceUtils.sol/GovernanceUtils.dbg.json +1 -1
  48. package/build/contracts/bank/Bank.sol/Bank.dbg.json +1 -1
  49. package/build/contracts/bank/IReceiveBalanceApproval.sol/IReceiveBalanceApproval.dbg.json +1 -1
  50. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.dbg.json +1 -1
  51. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.json +2 -2
  52. package/build/contracts/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  53. package/build/contracts/bridge/Bridge.sol/Bridge.json +2 -2
  54. package/build/contracts/bridge/BridgeGovernance.sol/BridgeGovernance.dbg.json +1 -1
  55. package/build/contracts/bridge/BridgeGovernance.sol/BridgeGovernance.json +2 -2
  56. package/build/contracts/bridge/BridgeGovernanceParameters.sol/BridgeGovernanceParameters.dbg.json +1 -1
  57. package/build/contracts/bridge/BridgeState.sol/BridgeState.dbg.json +1 -1
  58. package/build/contracts/bridge/BridgeState.sol/BridgeState.json +2 -2
  59. package/build/contracts/bridge/Deposit.sol/Deposit.dbg.json +1 -1
  60. package/build/contracts/bridge/Deposit.sol/Deposit.json +2 -2
  61. package/build/contracts/bridge/DepositSweep.sol/DepositSweep.dbg.json +1 -1
  62. package/build/contracts/bridge/DepositSweep.sol/DepositSweep.json +2 -2
  63. package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.dbg.json +1 -1
  64. package/build/contracts/bridge/Fraud.sol/Fraud.dbg.json +1 -1
  65. package/build/contracts/bridge/Fraud.sol/Fraud.json +2 -2
  66. package/build/contracts/bridge/Heartbeat.sol/Heartbeat.dbg.json +1 -1
  67. package/build/contracts/bridge/IRelay.sol/IRelay.dbg.json +1 -1
  68. package/build/contracts/bridge/MovingFunds.sol/MovingFunds.dbg.json +1 -1
  69. package/build/contracts/bridge/MovingFunds.sol/MovingFunds.json +2 -2
  70. package/build/contracts/bridge/Redemption.sol/OutboundTx.dbg.json +1 -1
  71. package/build/contracts/bridge/Redemption.sol/OutboundTx.json +2 -2
  72. package/build/contracts/bridge/Redemption.sol/Redemption.dbg.json +1 -1
  73. package/build/contracts/bridge/Redemption.sol/Redemption.json +2 -2
  74. package/build/contracts/bridge/VendingMachine.sol/VendingMachine.dbg.json +1 -1
  75. package/build/contracts/bridge/Wallets.sol/Wallets.dbg.json +1 -1
  76. package/build/contracts/bridge/Wallets.sol/Wallets.json +2 -2
  77. package/build/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.dbg.json +1 -1
  78. package/build/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.json +2 -2
  79. package/build/contracts/relay/LightRelay.sol/ILightRelay.dbg.json +1 -1
  80. package/build/contracts/relay/LightRelay.sol/LightRelay.dbg.json +1 -1
  81. package/build/contracts/relay/LightRelay.sol/RelayUtils.dbg.json +1 -1
  82. package/build/contracts/token/TBTC.sol/TBTC.dbg.json +1 -1
  83. package/build/contracts/vault/DonationVault.sol/DonationVault.dbg.json +1 -1
  84. package/build/contracts/vault/IVault.sol/IVault.dbg.json +1 -1
  85. package/build/contracts/vault/TBTCOptimisticMinting.sol/TBTCOptimisticMinting.dbg.json +1 -1
  86. package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +1 -1
  87. package/build/contracts/vault/TBTCVault.sol/TBTCVault.json +2 -2
  88. package/contracts/bridge/Bridge.sol +0 -1
  89. package/contracts/bridge/BridgeState.sol +0 -5
  90. package/deploy/18_disable_moving_funds.ts +1 -5
  91. package/export/artifacts/contracts/bridge/Bridge.sol/Bridge.json +1111 -1342
  92. package/export/artifacts/contracts/bridge/BridgeGovernance.sol/BridgeGovernance.json +5 -5
  93. package/export/artifacts/contracts/bridge/VendingMachine.sol/VendingMachine.json +67 -67
  94. package/export/artifacts/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.json +93 -93
  95. package/export/artifacts/contracts/relay/LightRelay.sol/LightRelay.json +57 -57
  96. package/export/artifacts/contracts/test/BankStub.sol/BankStub.json +2 -2
  97. package/export/artifacts/contracts/test/BridgeStub.sol/BridgeStub.json +1162 -1393
  98. package/export/artifacts/contracts/test/GoerliLightRelay.sol/GoerliLightRelay.json +57 -57
  99. package/export/artifacts/contracts/test/HeartbeatStub.sol/HeartbeatStub.json +4 -4
  100. package/export/artifacts/contracts/test/LightRelayStub.sol/LightRelayStub.json +59 -59
  101. package/export/artifacts/contracts/test/ReceiveApprovalStub.sol/ReceiveApprovalStub.json +7 -7
  102. package/export/artifacts/contracts/test/SystemTestRelay.sol/SystemTestRelay.json +19 -19
  103. package/export/artifacts/contracts/test/TestERC20.sol/TestERC20.json +6 -6
  104. package/export/artifacts/contracts/test/TestERC721.sol/TestERC721.json +8 -8
  105. package/export/artifacts/contracts/test/TestEcdsaLib.sol/TestEcdsaLib.json +4 -4
  106. package/export/artifacts/contracts/token/TBTC.sol/TBTC.json +2 -2
  107. package/export/artifacts/contracts/vault/DonationVault.sol/DonationVault.json +11 -11
  108. package/export/artifacts/contracts/vault/TBTCVault.sol/TBTCVault.json +138 -138
  109. package/export/deploy/18_disable_moving_funds.js +1 -1
  110. package/export/typechain/factories/BridgeGovernance__factory.js +1 -1
  111. package/export/typechain/factories/BridgeState__factory.js +1 -1
  112. package/export/typechain/factories/BridgeStub__factory.js +1 -1
  113. package/export/typechain/factories/Bridge__factory.js +1 -1
  114. package/export/typechain/factories/DepositSweep__factory.js +1 -1
  115. package/export/typechain/factories/Deposit__factory.js +1 -1
  116. package/export/typechain/factories/Fraud__factory.js +1 -1
  117. package/export/typechain/factories/MaintainerProxy__factory.js +1 -1
  118. package/export/typechain/factories/MovingFunds__factory.js +1 -1
  119. package/export/typechain/factories/Redemption__factory.js +1 -1
  120. package/export/typechain/factories/SystemTestRelay__factory.js +1 -1
  121. package/export/typechain/factories/TBTCVault__factory.js +1 -1
  122. package/export/typechain/factories/Wallets__factory.js +1 -1
  123. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/078fcdb1e35b74b0dedf4019cd69c4d6.json"
3
+ "buildInfo": "../../../build-info/d926d1da251e520e63a062927473833a.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/078fcdb1e35b74b0dedf4019cd69c4d6.json"
3
+ "buildInfo": "../../../build-info/d926d1da251e520e63a062927473833a.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/078fcdb1e35b74b0dedf4019cd69c4d6.json"
3
+ "buildInfo": "../../../build-info/d926d1da251e520e63a062927473833a.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/078fcdb1e35b74b0dedf4019cd69c4d6.json"
3
+ "buildInfo": "../../../build-info/d926d1da251e520e63a062927473833a.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/078fcdb1e35b74b0dedf4019cd69c4d6.json"
3
+ "buildInfo": "../../../build-info/d926d1da251e520e63a062927473833a.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/078fcdb1e35b74b0dedf4019cd69c4d6.json"
3
+ "buildInfo": "../../../build-info/d926d1da251e520e63a062927473833a.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/078fcdb1e35b74b0dedf4019cd69c4d6.json"
3
+ "buildInfo": "../../../build-info/d926d1da251e520e63a062927473833a.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/078fcdb1e35b74b0dedf4019cd69c4d6.json"
3
+ "buildInfo": "../../../build-info/d926d1da251e520e63a062927473833a.json"
4
4
  }
@@ -1076,8 +1076,8 @@
1076
1076
  "type": "function"
1077
1077
  }
1078
1078
  ],
1079
- "bytecode": "0x60e060405260008054600160a81b600160e81b031916650a8c0000007d60aa1b1790553480156200002f57600080fd5b5060405162003d0f38038062003d0f83398101604081905262000052916200020c565b806200005e33620001a3565b6001600160a01b038116620000c55760405162461bcd60e51b815260206004820152602260248201527f4272696467652063616e206e6f7420626520746865207a65726f206164647265604482015261737360f01b60648201526084015b60405180910390fd5b6001600160a01b039081166080528316620001235760405162461bcd60e51b815260206004820181905260248201527f42616e6b2063616e206e6f7420626520746865207a65726f20616464726573736044820152606401620000bc565b6001600160a01b0382166200018a5760405162461bcd60e51b815260206004820152602660248201527f5442544320746f6b656e2063616e206e6f7420626520746865207a65726f206160448201526564647265737360d01b6064820152608401620000bc565b506001600160a01b0391821660a0521660c05262000260565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146200020957600080fd5b50565b6000806000606084860312156200022257600080fd5b83516200022f81620001f3565b60208501519093506200024281620001f3565b60408501519092506200025581620001f3565b809150509250925092565b60805160a05160c0516139f36200031c600039600081816106e30152818161093001528181610ca401528181611ece015281816122b701528181612c8701528181612dfe0152612f4e01526000818161053501528181610d1001528181610e5b01528181610ee901528181610fe501528181612333015281816124520152818161254a01528181612e880152612fe701526000818161070a015281816114e30152818161167101528181611c8d0152612eb701526139f36000f3fe608060405234801561001057600080fd5b50600436106103205760003560e01c80638532c511116101a7578063a410d29b116100ee578063c36b32b711610097578063e78cea9211610071578063e78cea9214610705578063f2fde38b1461072c578063fc4e51f61461073f57600080fd5b8063c36b32b7146106bb578063d0ff65b5146106ce578063e5d3d714146106de57600080fd5b8063b0b54895116100c8578063b0b5489514610689578063b9f7879814610693578063bc7b6b99146106b357600080fd5b8063a410d29b1461064b578063a526d83b14610653578063aa271e1a1461066657600080fd5b806395131526116101505780639a508c8e1161012a5780639a508c8e14610627578063a0712d681461062f578063a0cceb951461064257600080fd5b80639513152614610603578063983b2d561461060c5780639a4e36d51461061f57600080fd5b8063897f712c11610181578063897f712c146105cb5780638da5cb5b146105df5780638f4ffcb1146105f057600080fd5b80638532c511146105955780638623ec7b146105a557806388aaf0c8146105b857600080fd5b806347c1ffdb1161026b5780636c626aa41161021457806376cdb03b116101ee57806376cdb03b1461053057806380df5ed21461056f578063820b55131461058257600080fd5b80636c626aa4146104ba5780637140415614610515578063715018a61461052857600080fd5b806364e779b11161024557806364e779b11461047f5780636abe3a6c146104925780636b32810b146104a557600080fd5b806347c1ffdb1461044d57806353dce4df146104555780635ae2da461461046857600080fd5b80633092afd5116102cd578063461c6373116102a7578063461c637314610414578063475d057014610427578063479aa9271461043a57600080fd5b80633092afd5146103e5578063317dfa76146103f857806341906ab71461040b57600080fd5b80631171bda9116102fe5780631171bda91461039e578063124f65bd146103b15780632e73e398146103d257600080fd5b806309b53f51146103255780630c68ba21146103565780630f34257314610389575b600080fd5b60005461033c90600160a81b900463ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b6103796103643660046132fc565b60036020526000908152604090205460ff1681565b604051901515815260200161034d565b61039c61039736600461332b565b610752565b005b61039c6103ac366004613348565b6107f2565b6103c46103bf366004613389565b610853565b60405190815260200161034d565b61039c6103e0366004613402565b6108b8565b61039c6103f33660046132fc565b6109a6565b61039c610406366004613348565b610c15565b6103c460095481565b61039c6104223660046134ba565b610d05565b61039c610435366004613526565b610e50565b61039c6104483660046132fc565b611048565b61039c61114d565b61039c610463366004613576565b61122b565b60005461033c90600160c81b900463ffffffff1681565b61039c61048d3660046135c2565b611237565b61039c6104a0366004613389565b611244565b6104ad611783565b60405161034d91906135db565b6104f46104c83660046135c2565b60046020526000908152604090205467ffffffffffffffff808216916801000000000000000090041682565b6040805167ffffffffffffffff93841681529290911660208301520161034d565b61039c6105233660046132fc565b6117e5565b61039c6118de565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161034d565b61039c61057d366004613389565b611932565b61039c610590366004613389565b611b1e565b60065461033c9063ffffffff1681565b6105576105b33660046135c2565b611ea2565b600a54610557906001600160a01b031681565b60005461037990600160a01b900460ff1681565b6000546001600160a01b0316610557565b61039c6105fe366004613628565b611ecc565b6103c4600b5481565b61039c61061a3660046132fc565b611fc9565b61039c612106565b61039c6121e4565b61039c61063d3660046135c2565b61243b565b6103c460075481565b61039c6125aa565b61039c6106613660046132fc565b612692565b6103796106743660046132fc565b60016020526000908152604090205460ff1681565b6103c46201518081565b6103c46106a13660046132fc565b60056020526000908152604090205481565b61039c6127b5565b61039c6106c936600461332b565b61288c565b60085461033c9063ffffffff1681565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b61039c61073a3660046132fc565b612920565b61039c61074d366004613402565b6129ed565b6000546001600160a01b0316331461079f5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e83398151915260448201526064015b60405180910390fd5b426009556008805463ffffffff191663ffffffff83169081179091556040519081527f682bc0fb7e0d6bcb974cf556b95f68533cafc411d83d9f33ac192ccf45dda605906020015b60405180910390a150565b6000546001600160a01b0316331461083a5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b61084e6001600160a01b0384168383612a82565b505050565b6000828260405160200161089692919091825260e01b7fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b6040516020818303038152906040528051906020012060001c90505b92915050565b6000546001600160a01b031633146109005760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6040517ffc4e51f60000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fc4e51f69061096d90889088908890889088906004016136a7565b600060405180830381600087803b15801561098757600080fd5b505af115801561099b573d6000803e3d6000fd5b505050505050505050565b336109b96000546001600160a01b031690565b6001600160a01b031614806109dd57503360009081526003602052604090205460ff165b610a4f5760405162461bcd60e51b815260206004820152602360248201527f43616c6c6572206973206e6f7420746865206f776e6572206f7220677561726460448201527f69616e00000000000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b03811660009081526001602052604090205460ff16610ab75760405162461bcd60e51b815260206004820152601c60248201527f546869732061646472657373206973206e6f742061206d696e746572000000006044820152606401610796565b6001600160a01b0381166000908152600160205260408120805460ff191690555b600254811015610bdd57816001600160a01b031660028281548110610aff57610aff6136da565b6000918252602090912001546001600160a01b031603610bcb5760028054610b2990600190613706565b81548110610b3957610b396136da565b600091825260209091200154600280546001600160a01b039092169183908110610b6557610b656136da565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506002805480610ba457610ba4613719565b600082815260209020810160001990810180546001600160a01b0319169055019055610bdd565b80610bd58161372f565b915050610ad8565b506040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b6000546001600160a01b03163314610c5d5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6040517f1171bda90000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528381166024830152604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631171bda990606401600060405180830381600087803b158015610ce857600080fd5b505af1158015610cfc573d6000803e3d6000fd5b50505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d7d5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610796565b6000839003610dce5760405162461bcd60e51b815260206004820152601760248201527f4e6f206465706f7369746f7273207370656369666965640000000000000000006044820152606401610796565b60005b83811015610e49576000858583818110610ded57610ded6136da565b9050602002016020810190610e0291906132fc565b90506000848484818110610e1857610e186136da565b905060200201359050610e3482610e2f8484612b02565b612c05565b50508080610e419061372f565b915050610dd1565b5050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ec85760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610796565b6040516370a0823160e01b81526001600160a01b03858116600483015284917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f569190613748565b1015610faf5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610796565b610fb98484612c05565b604051631f1b6d2760e21b81526001600160a01b038581166004830152306024830152604482018590527f00000000000000000000000000000000000000000000000000000000000000001690637c6db49c906064015b600060405180830381600087803b15801561102a57600080fd5b505af115801561103e573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146110905760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b0381166110e65760405162461bcd60e51b815260206004820181905260248201527f4e6577207661756c7420616464726573732063616e6e6f74206265207a65726f6044820152606401610796565b604080516001600160a01b03831681524260208201527f5cc842cab066489e13292128663547c68705dbf476f0131e0107f155719c6124910160405180910390a142600b55600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146111955760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6007546111a58162015180612ce8565b600654600080547fffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff1663ffffffff909216600160a81b81029290921790556040519081527fa7f4ce7c3586e2000cdec6b25c5e7d0b20f9b4f435aa22d9c1feb32dbb506f779060200160405180910390a1506006805463ffffffff191690556000600755565b61084e33848484612d95565b6112413382612ee5565b50565b3360009081526001602052604090205460ff166112a35760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f742061206d696e746572000000000000000000006044820152606401610796565b600054600160a01b900460ff16156112fd5760405162461bcd60e51b815260206004820152601960248201527f4f7074696d6973746963206d696e74696e6720706175736564000000000000006044820152606401610796565b60006113098383610853565b600081815260046020526040812080549293509167ffffffffffffffff16900361139b5760405162461bcd60e51b815260206004820152603060248201527f4f7074696d6973746963206d696e74696e67206e6f742072657175657374656460448201527f20666f7220746865206465706f736974000000000000000000000000000000006064820152608401610796565b805468010000000000000000900467ffffffffffffffff16156114265760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c72656164792066696e616c60448201527f697a656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b600054815461144c91600160c81b900463ffffffff169067ffffffffffffffff16613761565b67ffffffffffffffff1642116114ca5760405162461bcd60e51b815260206004820152602b60248201527f4f7074696d6973746963206d696e74696e672064656c617920686173206e6f7460448201527f20706173736564207965740000000000000000000000000000000000000000006064820152608401610796565b604051630b02c43d60e41b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b02c43d09060240160c060405180830381865afa158015611532573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155691906137b5565b90508060a0015163ffffffff166000146115b25760405162461bcd60e51b815260206004820152601c60248201527f546865206465706f73697420697320616c7265616479207377657074000000006044820152606401610796565b6000816080015182602001516115c89190613862565b6000805467ffffffffffffffff92909216925090600160a81b900463ffffffff166115f457600061160e565b60005461160e90600160a81b900463ffffffff1683613883565b83516001600160a01b0316600090815260056020526040812054919250906116379084906138a5565b84516001600160a01b03166000908152600560205260409020819055845190915061166690610e2f8486613706565b81156116f7576116f77f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361d027b36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f191906138b8565b83612c05565b84547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000004267ffffffffffffffff160217855583516040518281526001600160a01b0390911690879033907f2cffebf26d639426e79514d100febae8b2c63e700e5dc0fa6c88a129633506369060200160405180910390a45050505050505050565b606060028054806020026020016040519081016040528092919081815260200182805480156117db57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116117bd575b5050505050905090565b6000546001600160a01b0316331461182d5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b03811660009081526003602052604090205460ff166118955760405162461bcd60e51b815260206004820152601e60248201527f546869732061646472657373206973206e6f74206120677561726469616e00006044820152606401610796565b6001600160a01b038116600081815260036020526040808220805460ff19169055517fb8107d0c6b40be480ce3172ee66ba6d64b71f6b1685a851340036e6e2e3e3c529190a250565b6000546001600160a01b031633146119265760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6119306000613018565b565b3360009081526003602052604090205460ff166119915760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f74206120677561726469616e00000000000000006044820152606401610796565b600061199d8383610853565b600081815260046020526040812080549293509167ffffffffffffffff169003611a2f5760405162461bcd60e51b815260206004820152603060248201527f4f7074696d6973746963206d696e74696e67206e6f742072657175657374656460448201527f20666f7220746865206465706f736974000000000000000000000000000000006064820152608401610796565b805468010000000000000000900467ffffffffffffffff1615611aba5760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c72656164792066696e616c60448201527f697a656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b60008281526004602052604080822080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016905551839133917f1256b41d4b18d922811c358ab80cb0375aae28f45373de35cfda580662193fcd9190a350505050565b3360009081526001602052604090205460ff16611b7d5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f742061206d696e746572000000000000000000006044820152606401610796565b600054600160a01b900460ff1615611bd75760405162461bcd60e51b815260206004820152601960248201527f4f7074696d6973746963206d696e74696e6720706175736564000000000000006044820152606401610796565b6000611be38383610853565b600081815260046020526040902080549192509067ffffffffffffffff1615611c745760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c726561647920726571756560448201527f7374656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b604051630b02c43d60e41b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b02c43d09060240160c060405180830381865afa158015611cdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0091906137b5565b9050806040015163ffffffff16600003611d665760405162461bcd60e51b815260206004820152602160248201527f546865206465706f73697420686173206e6f74206265656e2072657665616c656044820152601960fa1b6064820152608401610796565b60a081015163ffffffff1615611dbe5760405162461bcd60e51b815260206004820152601c60248201527f546865206465706f73697420697320616c7265616479207377657074000000006044820152606401610796565b60608101516001600160a01b03163014611e1a5760405162461bcd60e51b815260206004820152601860248201527f556e6578706563746564207661756c74206164647265737300000000000000006044820152606401610796565b815467ffffffffffffffff19164267ffffffffffffffff90811691909117835581516020808401516040805191909416815290810188905263ffffffff8716928101929092526001600160a01b031690849033907f36f39c606d55d7dd2a05b8c4e41e9a6ca8c501cea10009c1762f6826a146e0559060600160405180910390a45050505050565b60028181548110611eb257600080fd5b6000918252602090912001546001600160a01b0316905081565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614611f4d5760405162461bcd60e51b815260206004820152601160248201527f546f6b656e206973206e6f7420544254430000000000000000000000000000006044820152606401610796565b336001600160a01b03841614611fa55760405162461bcd60e51b815260206004820152601860248201527f4f6e6c7920544254432063616c6c657220616c6c6f77656400000000000000006044820152606401610796565b6000819003611fbd57611fb88585612ee5565b610e49565b610e4985858484612d95565b6000546001600160a01b031633146120115760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b03811660009081526001602052604090205460ff161561207a5760405162461bcd60e51b815260206004820181905260248201527f54686973206164647265737320697320616c72656164792061206d696e7465726044820152606401610796565b6001600160a01b0381166000818152600160208190526040808320805460ff19168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180546001600160a01b03191684179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6000546001600160a01b0316331461214e5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b60095461215e8162015180612ce8565b600854600080547fffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffff1663ffffffff909216600160c81b81029290921790556040519081527ff52de3377e3ae270d1e38f99b9b8d587814643811516ea55ba4d597f9950d4ec9060200160405180910390a1506008805463ffffffff191690556000600955565b6000546001600160a01b0316331461222c5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b600b5461223c8162015180612ce8565b600a546040516001600160a01b0390911681527f81a9bb8030ed4116b405800280e065110a37afb57b69948e714c97fab23475ec9060200160405180910390a1600a546040517ff2fde38b0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000009091169063f2fde38b90602401600060405180830381600087803b1580156122fd57600080fd5b505af1158015612311573d6000803e3d6000fd5b5050600a546040516370a0823160e01b81523060048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811694506356a6d9ef93509091169083906370a0823190602401602060405180830381865afa158015612389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ad9190613748565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561240b57600080fd5b505af115801561241f573d6000803e3d6000fd5b5050600a80546001600160a01b031916905550506000600b5550565b6040516370a0823160e01b815233600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156124a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c59190613748565b101561251e5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610796565b6125283382612c05565b604051631f1b6d2760e21b8152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637c6db49c90606401600060405180830381600087803b15801561259657600080fd5b505af1158015610e49573d6000803e3d6000fd5b6000546001600160a01b031633146125f25760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b600054600160a01b900460ff16156126565760405162461bcd60e51b815260206004820152602160248201527f4f7074696d6973746963206d696e74696e6720616c72656164792070617573656044820152601960fa1b6064820152608401610796565b6000805460ff60a01b1916600160a01b1781556040517f23a83c8aeda8c831401c17b5bfb8b2ead79fcfe9c027fe34a4f8576e2c7c74cc9190a1565b6000546001600160a01b031633146126da5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b03811660009081526003602052604090205460ff16156127695760405162461bcd60e51b815260206004820152602260248201527f54686973206164647265737320697320616c726561647920612067756172646960448201527f616e0000000000000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b038116600081815260036020526040808220805460ff19166001179055517f038596bb31e2e7d3d9f184d4c98b310103f6d7f5830e5eec32bffe6f1728f9699190a250565b6000546001600160a01b031633146127fd5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b600054600160a01b900460ff166128565760405162461bcd60e51b815260206004820181905260248201527f4f7074696d6973746963206d696e74696e67206973206e6f74207061757365646044820152606401610796565b6000805460ff60a01b191681556040517fcb27470ed9568d9eeb8939707bafc19404d908a26ce5f468a6aa781024fd6a839190a1565b6000546001600160a01b031633146128d45760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b426007556006805463ffffffff191663ffffffff83169081179091556040519081527f0dbfec7f12acffbb5cec595ac4370907eaf84caa7025dd71f4021433be79eba9906020016107e7565b6000546001600160a01b031633146129685760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b0381166129e45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610796565b61124181613018565b6000546001600160a01b03163314612a355760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6040517fb88d4fde0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063b88d4fde9061096d90309088908890889088906004016136a7565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261084e908490613068565b6001600160a01b038216600090815260056020526040812054808203612b2b57829150506108b2565b80831115612b92576001600160a01b0384166000818152600560209081526040808320839055519182527fb30abd1b9e3d58cd8525b3d5c5aa002db1e43a150af5b172a8d16efcc7a141f8910160405180910390a2612b8a8184613706565b9150506108b2565b612b9c8382613706565b6001600160a01b0385166000818152600560205260409020919091557fb30abd1b9e3d58cd8525b3d5c5aa002db1e43a150af5b172a8d16efcc7a141f8612be38584613706565b60405190815260200160405180910390a260009150506108b2565b5092915050565b816001600160a01b03167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe82604051612c4091815260200190565b60405180910390a26040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f19906044015b600060405180830381600087803b158015612ccc57600080fd5b505af1158015612ce0573d6000803e3d6000fd5b505050505050565b60008211612d385760405162461bcd60e51b815260206004820152601460248201527f4368616e6765206e6f7420696e697469617465640000000000000000000000006044820152606401610796565b80612d438342613706565b1015612d915760405162461bcd60e51b815260206004820181905260248201527f476f7665726e616e63652064656c617920686173206e6f7420656c61707365646044820152606401610796565b5050565b836001600160a01b03167f68751a4c3821398cb63d11609eca2440742ef19446f0c0261bfa8a13dd0748b884604051612dd091815260200190565b60405180910390a260405163079cc67960e41b81526001600160a01b038581166004830152602482018590527f000000000000000000000000000000000000000000000000000000000000000016906379cc679090604401600060405180830381600087803b158015612e4257600080fd5b505af1158015612e56573d6000803e3d6000fd5b50506040517f4a38757e0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250634a38757e9150611010907f0000000000000000000000000000000000000000000000000000000000000000908790879087906004016138d5565b816001600160a01b03167f68751a4c3821398cb63d11609eca2440742ef19446f0c0261bfa8a13dd0748b882604051612f2091815260200190565b60405180910390a260405163079cc67960e41b81526001600160a01b038381166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906379cc679090604401600060405180830381600087803b158015612f9257600080fd5b505af1158015612fa6573d6000803e3d6000fd5b50506040517f56a6d9ef0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590527f00000000000000000000000000000000000000000000000000000000000000001692506356a6d9ef9150604401612cb2565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006130bd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661314d9092919063ffffffff16565b80519091501561084e57808060200190518101906130db9190613908565b61084e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610796565b606061315c8484600085613166565b90505b9392505050565b6060824710156131de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b0385163b6132355760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610796565b600080866001600160a01b03168587604051613251919061394e565b60006040518083038185875af1925050503d806000811461328e576040519150601f19603f3d011682016040523d82523d6000602084013e613293565b606091505b50915091506132a38282866132ae565b979650505050505050565b606083156132bd57508161315f565b8251156132cd5782518084602001fd5b8160405162461bcd60e51b8152600401610796919061396a565b6001600160a01b038116811461124157600080fd5b60006020828403121561330e57600080fd5b813561315f816132e7565b63ffffffff8116811461124157600080fd5b60006020828403121561333d57600080fd5b813561315f81613319565b60008060006060848603121561335d57600080fd5b8335613368816132e7565b92506020840135613378816132e7565b929592945050506040919091013590565b6000806040838503121561339c57600080fd5b8235915060208301356133ae81613319565b809150509250929050565b60008083601f8401126133cb57600080fd5b50813567ffffffffffffffff8111156133e357600080fd5b6020830191508360208285010111156133fb57600080fd5b9250929050565b60008060008060006080868803121561341a57600080fd5b8535613425816132e7565b94506020860135613435816132e7565b935060408601359250606086013567ffffffffffffffff81111561345857600080fd5b613464888289016133b9565b969995985093965092949392505050565b60008083601f84011261348757600080fd5b50813567ffffffffffffffff81111561349f57600080fd5b6020830191508360208260051b85010111156133fb57600080fd5b600080600080604085870312156134d057600080fd5b843567ffffffffffffffff808211156134e857600080fd5b6134f488838901613475565b9096509450602087013591508082111561350d57600080fd5b5061351a87828801613475565b95989497509550505050565b6000806000806060858703121561353c57600080fd5b8435613547816132e7565b935060208501359250604085013567ffffffffffffffff81111561356a57600080fd5b61351a878288016133b9565b60008060006040848603121561358b57600080fd5b83359250602084013567ffffffffffffffff8111156135a957600080fd5b6135b5868287016133b9565b9497909650939450505050565b6000602082840312156135d457600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b8181101561361c5783516001600160a01b0316835292840192918401916001016135f7565b50909695505050505050565b60008060008060006080868803121561364057600080fd5b853561364b816132e7565b9450602086013593506040860135613662816132e7565b9250606086013567ffffffffffffffff81111561345857600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b038088168352808716602084015250846040830152608060608301526132a360808301848661367e565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156108b2576108b26136f0565b634e487b7160e01b600052603160045260246000fd5b600060018201613741576137416136f0565b5060010190565b60006020828403121561375a57600080fd5b5051919050565b67ffffffffffffffff818116838216019080821115612bfe57612bfe6136f0565b805161378d816132e7565b919050565b805167ffffffffffffffff8116811461378d57600080fd5b805161378d81613319565b600060c082840312156137c757600080fd5b60405160c0810181811067ffffffffffffffff821117156137f857634e487b7160e01b600052604160045260246000fd5b60405261380483613782565b815261381260208401613792565b6020820152613823604084016137aa565b604082015261383460608401613782565b606082015261384560808401613792565b608082015261385660a084016137aa565b60a08201529392505050565b67ffffffffffffffff828116828216039080821115612bfe57612bfe6136f0565b6000826138a057634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156108b2576108b26136f0565b6000602082840312156138ca57600080fd5b815161315f816132e7565b6001600160a01b03851681528360208201526060604082015260006138fe60608301848661367e565b9695505050505050565b60006020828403121561391a57600080fd5b8151801515811461315f57600080fd5b60005b8381101561394557818101518382015260200161392d565b50506000910152565b6000825161396081846020870161392a565b9190910192915050565b602081526000825180602084015261398981604085016020870161392a565b601f01601f1916919091016040019291505056fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a26469706673582212206df27f1fd72e328e7748f792dcab62895a452e873cfd8135f1a805978412e1f164736f6c63430008110033",
1080
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103205760003560e01c80638532c511116101a7578063a410d29b116100ee578063c36b32b711610097578063e78cea9211610071578063e78cea9214610705578063f2fde38b1461072c578063fc4e51f61461073f57600080fd5b8063c36b32b7146106bb578063d0ff65b5146106ce578063e5d3d714146106de57600080fd5b8063b0b54895116100c8578063b0b5489514610689578063b9f7879814610693578063bc7b6b99146106b357600080fd5b8063a410d29b1461064b578063a526d83b14610653578063aa271e1a1461066657600080fd5b806395131526116101505780639a508c8e1161012a5780639a508c8e14610627578063a0712d681461062f578063a0cceb951461064257600080fd5b80639513152614610603578063983b2d561461060c5780639a4e36d51461061f57600080fd5b8063897f712c11610181578063897f712c146105cb5780638da5cb5b146105df5780638f4ffcb1146105f057600080fd5b80638532c511146105955780638623ec7b146105a557806388aaf0c8146105b857600080fd5b806347c1ffdb1161026b5780636c626aa41161021457806376cdb03b116101ee57806376cdb03b1461053057806380df5ed21461056f578063820b55131461058257600080fd5b80636c626aa4146104ba5780637140415614610515578063715018a61461052857600080fd5b806364e779b11161024557806364e779b11461047f5780636abe3a6c146104925780636b32810b146104a557600080fd5b806347c1ffdb1461044d57806353dce4df146104555780635ae2da461461046857600080fd5b80633092afd5116102cd578063461c6373116102a7578063461c637314610414578063475d057014610427578063479aa9271461043a57600080fd5b80633092afd5146103e5578063317dfa76146103f857806341906ab71461040b57600080fd5b80631171bda9116102fe5780631171bda91461039e578063124f65bd146103b15780632e73e398146103d257600080fd5b806309b53f51146103255780630c68ba21146103565780630f34257314610389575b600080fd5b60005461033c90600160a81b900463ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b6103796103643660046132fc565b60036020526000908152604090205460ff1681565b604051901515815260200161034d565b61039c61039736600461332b565b610752565b005b61039c6103ac366004613348565b6107f2565b6103c46103bf366004613389565b610853565b60405190815260200161034d565b61039c6103e0366004613402565b6108b8565b61039c6103f33660046132fc565b6109a6565b61039c610406366004613348565b610c15565b6103c460095481565b61039c6104223660046134ba565b610d05565b61039c610435366004613526565b610e50565b61039c6104483660046132fc565b611048565b61039c61114d565b61039c610463366004613576565b61122b565b60005461033c90600160c81b900463ffffffff1681565b61039c61048d3660046135c2565b611237565b61039c6104a0366004613389565b611244565b6104ad611783565b60405161034d91906135db565b6104f46104c83660046135c2565b60046020526000908152604090205467ffffffffffffffff808216916801000000000000000090041682565b6040805167ffffffffffffffff93841681529290911660208301520161034d565b61039c6105233660046132fc565b6117e5565b61039c6118de565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161034d565b61039c61057d366004613389565b611932565b61039c610590366004613389565b611b1e565b60065461033c9063ffffffff1681565b6105576105b33660046135c2565b611ea2565b600a54610557906001600160a01b031681565b60005461037990600160a01b900460ff1681565b6000546001600160a01b0316610557565b61039c6105fe366004613628565b611ecc565b6103c4600b5481565b61039c61061a3660046132fc565b611fc9565b61039c612106565b61039c6121e4565b61039c61063d3660046135c2565b61243b565b6103c460075481565b61039c6125aa565b61039c6106613660046132fc565b612692565b6103796106743660046132fc565b60016020526000908152604090205460ff1681565b6103c46201518081565b6103c46106a13660046132fc565b60056020526000908152604090205481565b61039c6127b5565b61039c6106c936600461332b565b61288c565b60085461033c9063ffffffff1681565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b61039c61073a3660046132fc565b612920565b61039c61074d366004613402565b6129ed565b6000546001600160a01b0316331461079f5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e83398151915260448201526064015b60405180910390fd5b426009556008805463ffffffff191663ffffffff83169081179091556040519081527f682bc0fb7e0d6bcb974cf556b95f68533cafc411d83d9f33ac192ccf45dda605906020015b60405180910390a150565b6000546001600160a01b0316331461083a5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b61084e6001600160a01b0384168383612a82565b505050565b6000828260405160200161089692919091825260e01b7fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b6040516020818303038152906040528051906020012060001c90505b92915050565b6000546001600160a01b031633146109005760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6040517ffc4e51f60000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fc4e51f69061096d90889088908890889088906004016136a7565b600060405180830381600087803b15801561098757600080fd5b505af115801561099b573d6000803e3d6000fd5b505050505050505050565b336109b96000546001600160a01b031690565b6001600160a01b031614806109dd57503360009081526003602052604090205460ff165b610a4f5760405162461bcd60e51b815260206004820152602360248201527f43616c6c6572206973206e6f7420746865206f776e6572206f7220677561726460448201527f69616e00000000000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b03811660009081526001602052604090205460ff16610ab75760405162461bcd60e51b815260206004820152601c60248201527f546869732061646472657373206973206e6f742061206d696e746572000000006044820152606401610796565b6001600160a01b0381166000908152600160205260408120805460ff191690555b600254811015610bdd57816001600160a01b031660028281548110610aff57610aff6136da565b6000918252602090912001546001600160a01b031603610bcb5760028054610b2990600190613706565b81548110610b3957610b396136da565b600091825260209091200154600280546001600160a01b039092169183908110610b6557610b656136da565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506002805480610ba457610ba4613719565b600082815260209020810160001990810180546001600160a01b0319169055019055610bdd565b80610bd58161372f565b915050610ad8565b506040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b6000546001600160a01b03163314610c5d5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6040517f1171bda90000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528381166024830152604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631171bda990606401600060405180830381600087803b158015610ce857600080fd5b505af1158015610cfc573d6000803e3d6000fd5b50505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d7d5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610796565b6000839003610dce5760405162461bcd60e51b815260206004820152601760248201527f4e6f206465706f7369746f7273207370656369666965640000000000000000006044820152606401610796565b60005b83811015610e49576000858583818110610ded57610ded6136da565b9050602002016020810190610e0291906132fc565b90506000848484818110610e1857610e186136da565b905060200201359050610e3482610e2f8484612b02565b612c05565b50508080610e419061372f565b915050610dd1565b5050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ec85760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610796565b6040516370a0823160e01b81526001600160a01b03858116600483015284917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f569190613748565b1015610faf5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610796565b610fb98484612c05565b604051631f1b6d2760e21b81526001600160a01b038581166004830152306024830152604482018590527f00000000000000000000000000000000000000000000000000000000000000001690637c6db49c906064015b600060405180830381600087803b15801561102a57600080fd5b505af115801561103e573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146110905760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b0381166110e65760405162461bcd60e51b815260206004820181905260248201527f4e6577207661756c7420616464726573732063616e6e6f74206265207a65726f6044820152606401610796565b604080516001600160a01b03831681524260208201527f5cc842cab066489e13292128663547c68705dbf476f0131e0107f155719c6124910160405180910390a142600b55600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146111955760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6007546111a58162015180612ce8565b600654600080547fffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff1663ffffffff909216600160a81b81029290921790556040519081527fa7f4ce7c3586e2000cdec6b25c5e7d0b20f9b4f435aa22d9c1feb32dbb506f779060200160405180910390a1506006805463ffffffff191690556000600755565b61084e33848484612d95565b6112413382612ee5565b50565b3360009081526001602052604090205460ff166112a35760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f742061206d696e746572000000000000000000006044820152606401610796565b600054600160a01b900460ff16156112fd5760405162461bcd60e51b815260206004820152601960248201527f4f7074696d6973746963206d696e74696e6720706175736564000000000000006044820152606401610796565b60006113098383610853565b600081815260046020526040812080549293509167ffffffffffffffff16900361139b5760405162461bcd60e51b815260206004820152603060248201527f4f7074696d6973746963206d696e74696e67206e6f742072657175657374656460448201527f20666f7220746865206465706f736974000000000000000000000000000000006064820152608401610796565b805468010000000000000000900467ffffffffffffffff16156114265760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c72656164792066696e616c60448201527f697a656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b600054815461144c91600160c81b900463ffffffff169067ffffffffffffffff16613761565b67ffffffffffffffff1642116114ca5760405162461bcd60e51b815260206004820152602b60248201527f4f7074696d6973746963206d696e74696e672064656c617920686173206e6f7460448201527f20706173736564207965740000000000000000000000000000000000000000006064820152608401610796565b604051630b02c43d60e41b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b02c43d09060240160c060405180830381865afa158015611532573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155691906137b5565b90508060a0015163ffffffff166000146115b25760405162461bcd60e51b815260206004820152601c60248201527f546865206465706f73697420697320616c7265616479207377657074000000006044820152606401610796565b6000816080015182602001516115c89190613862565b6000805467ffffffffffffffff92909216925090600160a81b900463ffffffff166115f457600061160e565b60005461160e90600160a81b900463ffffffff1683613883565b83516001600160a01b0316600090815260056020526040812054919250906116379084906138a5565b84516001600160a01b03166000908152600560205260409020819055845190915061166690610e2f8486613706565b81156116f7576116f77f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361d027b36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f191906138b8565b83612c05565b84547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000004267ffffffffffffffff160217855583516040518281526001600160a01b0390911690879033907f2cffebf26d639426e79514d100febae8b2c63e700e5dc0fa6c88a129633506369060200160405180910390a45050505050505050565b606060028054806020026020016040519081016040528092919081815260200182805480156117db57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116117bd575b5050505050905090565b6000546001600160a01b0316331461182d5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b03811660009081526003602052604090205460ff166118955760405162461bcd60e51b815260206004820152601e60248201527f546869732061646472657373206973206e6f74206120677561726469616e00006044820152606401610796565b6001600160a01b038116600081815260036020526040808220805460ff19169055517fb8107d0c6b40be480ce3172ee66ba6d64b71f6b1685a851340036e6e2e3e3c529190a250565b6000546001600160a01b031633146119265760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6119306000613018565b565b3360009081526003602052604090205460ff166119915760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f74206120677561726469616e00000000000000006044820152606401610796565b600061199d8383610853565b600081815260046020526040812080549293509167ffffffffffffffff169003611a2f5760405162461bcd60e51b815260206004820152603060248201527f4f7074696d6973746963206d696e74696e67206e6f742072657175657374656460448201527f20666f7220746865206465706f736974000000000000000000000000000000006064820152608401610796565b805468010000000000000000900467ffffffffffffffff1615611aba5760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c72656164792066696e616c60448201527f697a656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b60008281526004602052604080822080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016905551839133917f1256b41d4b18d922811c358ab80cb0375aae28f45373de35cfda580662193fcd9190a350505050565b3360009081526001602052604090205460ff16611b7d5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f742061206d696e746572000000000000000000006044820152606401610796565b600054600160a01b900460ff1615611bd75760405162461bcd60e51b815260206004820152601960248201527f4f7074696d6973746963206d696e74696e6720706175736564000000000000006044820152606401610796565b6000611be38383610853565b600081815260046020526040902080549192509067ffffffffffffffff1615611c745760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c726561647920726571756560448201527f7374656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b604051630b02c43d60e41b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b02c43d09060240160c060405180830381865afa158015611cdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0091906137b5565b9050806040015163ffffffff16600003611d665760405162461bcd60e51b815260206004820152602160248201527f546865206465706f73697420686173206e6f74206265656e2072657665616c656044820152601960fa1b6064820152608401610796565b60a081015163ffffffff1615611dbe5760405162461bcd60e51b815260206004820152601c60248201527f546865206465706f73697420697320616c7265616479207377657074000000006044820152606401610796565b60608101516001600160a01b03163014611e1a5760405162461bcd60e51b815260206004820152601860248201527f556e6578706563746564207661756c74206164647265737300000000000000006044820152606401610796565b815467ffffffffffffffff19164267ffffffffffffffff90811691909117835581516020808401516040805191909416815290810188905263ffffffff8716928101929092526001600160a01b031690849033907f36f39c606d55d7dd2a05b8c4e41e9a6ca8c501cea10009c1762f6826a146e0559060600160405180910390a45050505050565b60028181548110611eb257600080fd5b6000918252602090912001546001600160a01b0316905081565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614611f4d5760405162461bcd60e51b815260206004820152601160248201527f546f6b656e206973206e6f7420544254430000000000000000000000000000006044820152606401610796565b336001600160a01b03841614611fa55760405162461bcd60e51b815260206004820152601860248201527f4f6e6c7920544254432063616c6c657220616c6c6f77656400000000000000006044820152606401610796565b6000819003611fbd57611fb88585612ee5565b610e49565b610e4985858484612d95565b6000546001600160a01b031633146120115760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b03811660009081526001602052604090205460ff161561207a5760405162461bcd60e51b815260206004820181905260248201527f54686973206164647265737320697320616c72656164792061206d696e7465726044820152606401610796565b6001600160a01b0381166000818152600160208190526040808320805460ff19168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180546001600160a01b03191684179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6000546001600160a01b0316331461214e5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b60095461215e8162015180612ce8565b600854600080547fffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffff1663ffffffff909216600160c81b81029290921790556040519081527ff52de3377e3ae270d1e38f99b9b8d587814643811516ea55ba4d597f9950d4ec9060200160405180910390a1506008805463ffffffff191690556000600955565b6000546001600160a01b0316331461222c5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b600b5461223c8162015180612ce8565b600a546040516001600160a01b0390911681527f81a9bb8030ed4116b405800280e065110a37afb57b69948e714c97fab23475ec9060200160405180910390a1600a546040517ff2fde38b0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000009091169063f2fde38b90602401600060405180830381600087803b1580156122fd57600080fd5b505af1158015612311573d6000803e3d6000fd5b5050600a546040516370a0823160e01b81523060048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811694506356a6d9ef93509091169083906370a0823190602401602060405180830381865afa158015612389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ad9190613748565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561240b57600080fd5b505af115801561241f573d6000803e3d6000fd5b5050600a80546001600160a01b031916905550506000600b5550565b6040516370a0823160e01b815233600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156124a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c59190613748565b101561251e5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610796565b6125283382612c05565b604051631f1b6d2760e21b8152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637c6db49c90606401600060405180830381600087803b15801561259657600080fd5b505af1158015610e49573d6000803e3d6000fd5b6000546001600160a01b031633146125f25760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b600054600160a01b900460ff16156126565760405162461bcd60e51b815260206004820152602160248201527f4f7074696d6973746963206d696e74696e6720616c72656164792070617573656044820152601960fa1b6064820152608401610796565b6000805460ff60a01b1916600160a01b1781556040517f23a83c8aeda8c831401c17b5bfb8b2ead79fcfe9c027fe34a4f8576e2c7c74cc9190a1565b6000546001600160a01b031633146126da5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b03811660009081526003602052604090205460ff16156127695760405162461bcd60e51b815260206004820152602260248201527f54686973206164647265737320697320616c726561647920612067756172646960448201527f616e0000000000000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b038116600081815260036020526040808220805460ff19166001179055517f038596bb31e2e7d3d9f184d4c98b310103f6d7f5830e5eec32bffe6f1728f9699190a250565b6000546001600160a01b031633146127fd5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b600054600160a01b900460ff166128565760405162461bcd60e51b815260206004820181905260248201527f4f7074696d6973746963206d696e74696e67206973206e6f74207061757365646044820152606401610796565b6000805460ff60a01b191681556040517fcb27470ed9568d9eeb8939707bafc19404d908a26ce5f468a6aa781024fd6a839190a1565b6000546001600160a01b031633146128d45760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b426007556006805463ffffffff191663ffffffff83169081179091556040519081527f0dbfec7f12acffbb5cec595ac4370907eaf84caa7025dd71f4021433be79eba9906020016107e7565b6000546001600160a01b031633146129685760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b0381166129e45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610796565b61124181613018565b6000546001600160a01b03163314612a355760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6040517fb88d4fde0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063b88d4fde9061096d90309088908890889088906004016136a7565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261084e908490613068565b6001600160a01b038216600090815260056020526040812054808203612b2b57829150506108b2565b80831115612b92576001600160a01b0384166000818152600560209081526040808320839055519182527fb30abd1b9e3d58cd8525b3d5c5aa002db1e43a150af5b172a8d16efcc7a141f8910160405180910390a2612b8a8184613706565b9150506108b2565b612b9c8382613706565b6001600160a01b0385166000818152600560205260409020919091557fb30abd1b9e3d58cd8525b3d5c5aa002db1e43a150af5b172a8d16efcc7a141f8612be38584613706565b60405190815260200160405180910390a260009150506108b2565b5092915050565b816001600160a01b03167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe82604051612c4091815260200190565b60405180910390a26040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f19906044015b600060405180830381600087803b158015612ccc57600080fd5b505af1158015612ce0573d6000803e3d6000fd5b505050505050565b60008211612d385760405162461bcd60e51b815260206004820152601460248201527f4368616e6765206e6f7420696e697469617465640000000000000000000000006044820152606401610796565b80612d438342613706565b1015612d915760405162461bcd60e51b815260206004820181905260248201527f476f7665726e616e63652064656c617920686173206e6f7420656c61707365646044820152606401610796565b5050565b836001600160a01b03167f68751a4c3821398cb63d11609eca2440742ef19446f0c0261bfa8a13dd0748b884604051612dd091815260200190565b60405180910390a260405163079cc67960e41b81526001600160a01b038581166004830152602482018590527f000000000000000000000000000000000000000000000000000000000000000016906379cc679090604401600060405180830381600087803b158015612e4257600080fd5b505af1158015612e56573d6000803e3d6000fd5b50506040517f4a38757e0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250634a38757e9150611010907f0000000000000000000000000000000000000000000000000000000000000000908790879087906004016138d5565b816001600160a01b03167f68751a4c3821398cb63d11609eca2440742ef19446f0c0261bfa8a13dd0748b882604051612f2091815260200190565b60405180910390a260405163079cc67960e41b81526001600160a01b038381166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906379cc679090604401600060405180830381600087803b158015612f9257600080fd5b505af1158015612fa6573d6000803e3d6000fd5b50506040517f56a6d9ef0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590527f00000000000000000000000000000000000000000000000000000000000000001692506356a6d9ef9150604401612cb2565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006130bd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661314d9092919063ffffffff16565b80519091501561084e57808060200190518101906130db9190613908565b61084e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610796565b606061315c8484600085613166565b90505b9392505050565b6060824710156131de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b0385163b6132355760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610796565b600080866001600160a01b03168587604051613251919061394e565b60006040518083038185875af1925050503d806000811461328e576040519150601f19603f3d011682016040523d82523d6000602084013e613293565b606091505b50915091506132a38282866132ae565b979650505050505050565b606083156132bd57508161315f565b8251156132cd5782518084602001fd5b8160405162461bcd60e51b8152600401610796919061396a565b6001600160a01b038116811461124157600080fd5b60006020828403121561330e57600080fd5b813561315f816132e7565b63ffffffff8116811461124157600080fd5b60006020828403121561333d57600080fd5b813561315f81613319565b60008060006060848603121561335d57600080fd5b8335613368816132e7565b92506020840135613378816132e7565b929592945050506040919091013590565b6000806040838503121561339c57600080fd5b8235915060208301356133ae81613319565b809150509250929050565b60008083601f8401126133cb57600080fd5b50813567ffffffffffffffff8111156133e357600080fd5b6020830191508360208285010111156133fb57600080fd5b9250929050565b60008060008060006080868803121561341a57600080fd5b8535613425816132e7565b94506020860135613435816132e7565b935060408601359250606086013567ffffffffffffffff81111561345857600080fd5b613464888289016133b9565b969995985093965092949392505050565b60008083601f84011261348757600080fd5b50813567ffffffffffffffff81111561349f57600080fd5b6020830191508360208260051b85010111156133fb57600080fd5b600080600080604085870312156134d057600080fd5b843567ffffffffffffffff808211156134e857600080fd5b6134f488838901613475565b9096509450602087013591508082111561350d57600080fd5b5061351a87828801613475565b95989497509550505050565b6000806000806060858703121561353c57600080fd5b8435613547816132e7565b935060208501359250604085013567ffffffffffffffff81111561356a57600080fd5b61351a878288016133b9565b60008060006040848603121561358b57600080fd5b83359250602084013567ffffffffffffffff8111156135a957600080fd5b6135b5868287016133b9565b9497909650939450505050565b6000602082840312156135d457600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b8181101561361c5783516001600160a01b0316835292840192918401916001016135f7565b50909695505050505050565b60008060008060006080868803121561364057600080fd5b853561364b816132e7565b9450602086013593506040860135613662816132e7565b9250606086013567ffffffffffffffff81111561345857600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b038088168352808716602084015250846040830152608060608301526132a360808301848661367e565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156108b2576108b26136f0565b634e487b7160e01b600052603160045260246000fd5b600060018201613741576137416136f0565b5060010190565b60006020828403121561375a57600080fd5b5051919050565b67ffffffffffffffff818116838216019080821115612bfe57612bfe6136f0565b805161378d816132e7565b919050565b805167ffffffffffffffff8116811461378d57600080fd5b805161378d81613319565b600060c082840312156137c757600080fd5b60405160c0810181811067ffffffffffffffff821117156137f857634e487b7160e01b600052604160045260246000fd5b60405261380483613782565b815261381260208401613792565b6020820152613823604084016137aa565b604082015261383460608401613782565b606082015261384560808401613792565b608082015261385660a084016137aa565b60a08201529392505050565b67ffffffffffffffff828116828216039080821115612bfe57612bfe6136f0565b6000826138a057634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156108b2576108b26136f0565b6000602082840312156138ca57600080fd5b815161315f816132e7565b6001600160a01b03851681528360208201526060604082015260006138fe60608301848661367e565b9695505050505050565b60006020828403121561391a57600080fd5b8151801515811461315f57600080fd5b60005b8381101561394557818101518382015260200161392d565b50506000910152565b6000825161396081846020870161392a565b9190910192915050565b602081526000825180602084015261398981604085016020870161392a565b601f01601f1916919091016040019291505056fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a26469706673582212206df27f1fd72e328e7748f792dcab62895a452e873cfd8135f1a805978412e1f164736f6c63430008110033",
1079
+ "bytecode": "0x60e060405260008054600160a81b600160e81b031916650a8c0000007d60aa1b1790553480156200002f57600080fd5b5060405162003d0f38038062003d0f83398101604081905262000052916200020c565b806200005e33620001a3565b6001600160a01b038116620000c55760405162461bcd60e51b815260206004820152602260248201527f4272696467652063616e206e6f7420626520746865207a65726f206164647265604482015261737360f01b60648201526084015b60405180910390fd5b6001600160a01b039081166080528316620001235760405162461bcd60e51b815260206004820181905260248201527f42616e6b2063616e206e6f7420626520746865207a65726f20616464726573736044820152606401620000bc565b6001600160a01b0382166200018a5760405162461bcd60e51b815260206004820152602660248201527f5442544320746f6b656e2063616e206e6f7420626520746865207a65726f206160448201526564647265737360d01b6064820152608401620000bc565b506001600160a01b0391821660a0521660c05262000260565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146200020957600080fd5b50565b6000806000606084860312156200022257600080fd5b83516200022f81620001f3565b60208501519093506200024281620001f3565b60408501519092506200025581620001f3565b809150509250925092565b60805160a05160c0516139f36200031c600039600081816106e30152818161093001528181610ca401528181611ece015281816122b701528181612c8701528181612dfe0152612f4e01526000818161053501528181610d1001528181610e5b01528181610ee901528181610fe501528181612333015281816124520152818161254a01528181612e880152612fe701526000818161070a015281816114e30152818161167101528181611c8d0152612eb701526139f36000f3fe608060405234801561001057600080fd5b50600436106103205760003560e01c80638532c511116101a7578063a410d29b116100ee578063c36b32b711610097578063e78cea9211610071578063e78cea9214610705578063f2fde38b1461072c578063fc4e51f61461073f57600080fd5b8063c36b32b7146106bb578063d0ff65b5146106ce578063e5d3d714146106de57600080fd5b8063b0b54895116100c8578063b0b5489514610689578063b9f7879814610693578063bc7b6b99146106b357600080fd5b8063a410d29b1461064b578063a526d83b14610653578063aa271e1a1461066657600080fd5b806395131526116101505780639a508c8e1161012a5780639a508c8e14610627578063a0712d681461062f578063a0cceb951461064257600080fd5b80639513152614610603578063983b2d561461060c5780639a4e36d51461061f57600080fd5b8063897f712c11610181578063897f712c146105cb5780638da5cb5b146105df5780638f4ffcb1146105f057600080fd5b80638532c511146105955780638623ec7b146105a557806388aaf0c8146105b857600080fd5b806347c1ffdb1161026b5780636c626aa41161021457806376cdb03b116101ee57806376cdb03b1461053057806380df5ed21461056f578063820b55131461058257600080fd5b80636c626aa4146104ba5780637140415614610515578063715018a61461052857600080fd5b806364e779b11161024557806364e779b11461047f5780636abe3a6c146104925780636b32810b146104a557600080fd5b806347c1ffdb1461044d57806353dce4df146104555780635ae2da461461046857600080fd5b80633092afd5116102cd578063461c6373116102a7578063461c637314610414578063475d057014610427578063479aa9271461043a57600080fd5b80633092afd5146103e5578063317dfa76146103f857806341906ab71461040b57600080fd5b80631171bda9116102fe5780631171bda91461039e578063124f65bd146103b15780632e73e398146103d257600080fd5b806309b53f51146103255780630c68ba21146103565780630f34257314610389575b600080fd5b60005461033c90600160a81b900463ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b6103796103643660046132fc565b60036020526000908152604090205460ff1681565b604051901515815260200161034d565b61039c61039736600461332b565b610752565b005b61039c6103ac366004613348565b6107f2565b6103c46103bf366004613389565b610853565b60405190815260200161034d565b61039c6103e0366004613402565b6108b8565b61039c6103f33660046132fc565b6109a6565b61039c610406366004613348565b610c15565b6103c460095481565b61039c6104223660046134ba565b610d05565b61039c610435366004613526565b610e50565b61039c6104483660046132fc565b611048565b61039c61114d565b61039c610463366004613576565b61122b565b60005461033c90600160c81b900463ffffffff1681565b61039c61048d3660046135c2565b611237565b61039c6104a0366004613389565b611244565b6104ad611783565b60405161034d91906135db565b6104f46104c83660046135c2565b60046020526000908152604090205467ffffffffffffffff808216916801000000000000000090041682565b6040805167ffffffffffffffff93841681529290911660208301520161034d565b61039c6105233660046132fc565b6117e5565b61039c6118de565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161034d565b61039c61057d366004613389565b611932565b61039c610590366004613389565b611b1e565b60065461033c9063ffffffff1681565b6105576105b33660046135c2565b611ea2565b600a54610557906001600160a01b031681565b60005461037990600160a01b900460ff1681565b6000546001600160a01b0316610557565b61039c6105fe366004613628565b611ecc565b6103c4600b5481565b61039c61061a3660046132fc565b611fc9565b61039c612106565b61039c6121e4565b61039c61063d3660046135c2565b61243b565b6103c460075481565b61039c6125aa565b61039c6106613660046132fc565b612692565b6103796106743660046132fc565b60016020526000908152604090205460ff1681565b6103c46201518081565b6103c46106a13660046132fc565b60056020526000908152604090205481565b61039c6127b5565b61039c6106c936600461332b565b61288c565b60085461033c9063ffffffff1681565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b61039c61073a3660046132fc565b612920565b61039c61074d366004613402565b6129ed565b6000546001600160a01b0316331461079f5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e83398151915260448201526064015b60405180910390fd5b426009556008805463ffffffff191663ffffffff83169081179091556040519081527f682bc0fb7e0d6bcb974cf556b95f68533cafc411d83d9f33ac192ccf45dda605906020015b60405180910390a150565b6000546001600160a01b0316331461083a5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b61084e6001600160a01b0384168383612a82565b505050565b6000828260405160200161089692919091825260e01b7fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b6040516020818303038152906040528051906020012060001c90505b92915050565b6000546001600160a01b031633146109005760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6040517ffc4e51f60000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fc4e51f69061096d90889088908890889088906004016136a7565b600060405180830381600087803b15801561098757600080fd5b505af115801561099b573d6000803e3d6000fd5b505050505050505050565b336109b96000546001600160a01b031690565b6001600160a01b031614806109dd57503360009081526003602052604090205460ff165b610a4f5760405162461bcd60e51b815260206004820152602360248201527f43616c6c6572206973206e6f7420746865206f776e6572206f7220677561726460448201527f69616e00000000000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b03811660009081526001602052604090205460ff16610ab75760405162461bcd60e51b815260206004820152601c60248201527f546869732061646472657373206973206e6f742061206d696e746572000000006044820152606401610796565b6001600160a01b0381166000908152600160205260408120805460ff191690555b600254811015610bdd57816001600160a01b031660028281548110610aff57610aff6136da565b6000918252602090912001546001600160a01b031603610bcb5760028054610b2990600190613706565b81548110610b3957610b396136da565b600091825260209091200154600280546001600160a01b039092169183908110610b6557610b656136da565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506002805480610ba457610ba4613719565b600082815260209020810160001990810180546001600160a01b0319169055019055610bdd565b80610bd58161372f565b915050610ad8565b506040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b6000546001600160a01b03163314610c5d5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6040517f1171bda90000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528381166024830152604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631171bda990606401600060405180830381600087803b158015610ce857600080fd5b505af1158015610cfc573d6000803e3d6000fd5b50505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d7d5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610796565b6000839003610dce5760405162461bcd60e51b815260206004820152601760248201527f4e6f206465706f7369746f7273207370656369666965640000000000000000006044820152606401610796565b60005b83811015610e49576000858583818110610ded57610ded6136da565b9050602002016020810190610e0291906132fc565b90506000848484818110610e1857610e186136da565b905060200201359050610e3482610e2f8484612b02565b612c05565b50508080610e419061372f565b915050610dd1565b5050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ec85760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610796565b6040516370a0823160e01b81526001600160a01b03858116600483015284917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f569190613748565b1015610faf5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610796565b610fb98484612c05565b604051631f1b6d2760e21b81526001600160a01b038581166004830152306024830152604482018590527f00000000000000000000000000000000000000000000000000000000000000001690637c6db49c906064015b600060405180830381600087803b15801561102a57600080fd5b505af115801561103e573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146110905760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b0381166110e65760405162461bcd60e51b815260206004820181905260248201527f4e6577207661756c7420616464726573732063616e6e6f74206265207a65726f6044820152606401610796565b604080516001600160a01b03831681524260208201527f5cc842cab066489e13292128663547c68705dbf476f0131e0107f155719c6124910160405180910390a142600b55600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146111955760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6007546111a58162015180612ce8565b600654600080547fffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff1663ffffffff909216600160a81b81029290921790556040519081527fa7f4ce7c3586e2000cdec6b25c5e7d0b20f9b4f435aa22d9c1feb32dbb506f779060200160405180910390a1506006805463ffffffff191690556000600755565b61084e33848484612d95565b6112413382612ee5565b50565b3360009081526001602052604090205460ff166112a35760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f742061206d696e746572000000000000000000006044820152606401610796565b600054600160a01b900460ff16156112fd5760405162461bcd60e51b815260206004820152601960248201527f4f7074696d6973746963206d696e74696e6720706175736564000000000000006044820152606401610796565b60006113098383610853565b600081815260046020526040812080549293509167ffffffffffffffff16900361139b5760405162461bcd60e51b815260206004820152603060248201527f4f7074696d6973746963206d696e74696e67206e6f742072657175657374656460448201527f20666f7220746865206465706f736974000000000000000000000000000000006064820152608401610796565b805468010000000000000000900467ffffffffffffffff16156114265760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c72656164792066696e616c60448201527f697a656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b600054815461144c91600160c81b900463ffffffff169067ffffffffffffffff16613761565b67ffffffffffffffff1642116114ca5760405162461bcd60e51b815260206004820152602b60248201527f4f7074696d6973746963206d696e74696e672064656c617920686173206e6f7460448201527f20706173736564207965740000000000000000000000000000000000000000006064820152608401610796565b604051630b02c43d60e41b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b02c43d09060240160c060405180830381865afa158015611532573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155691906137b5565b90508060a0015163ffffffff166000146115b25760405162461bcd60e51b815260206004820152601c60248201527f546865206465706f73697420697320616c7265616479207377657074000000006044820152606401610796565b6000816080015182602001516115c89190613862565b6000805467ffffffffffffffff92909216925090600160a81b900463ffffffff166115f457600061160e565b60005461160e90600160a81b900463ffffffff1683613883565b83516001600160a01b0316600090815260056020526040812054919250906116379084906138a5565b84516001600160a01b03166000908152600560205260409020819055845190915061166690610e2f8486613706565b81156116f7576116f77f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361d027b36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f191906138b8565b83612c05565b84547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000004267ffffffffffffffff160217855583516040518281526001600160a01b0390911690879033907f2cffebf26d639426e79514d100febae8b2c63e700e5dc0fa6c88a129633506369060200160405180910390a45050505050505050565b606060028054806020026020016040519081016040528092919081815260200182805480156117db57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116117bd575b5050505050905090565b6000546001600160a01b0316331461182d5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b03811660009081526003602052604090205460ff166118955760405162461bcd60e51b815260206004820152601e60248201527f546869732061646472657373206973206e6f74206120677561726469616e00006044820152606401610796565b6001600160a01b038116600081815260036020526040808220805460ff19169055517fb8107d0c6b40be480ce3172ee66ba6d64b71f6b1685a851340036e6e2e3e3c529190a250565b6000546001600160a01b031633146119265760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6119306000613018565b565b3360009081526003602052604090205460ff166119915760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f74206120677561726469616e00000000000000006044820152606401610796565b600061199d8383610853565b600081815260046020526040812080549293509167ffffffffffffffff169003611a2f5760405162461bcd60e51b815260206004820152603060248201527f4f7074696d6973746963206d696e74696e67206e6f742072657175657374656460448201527f20666f7220746865206465706f736974000000000000000000000000000000006064820152608401610796565b805468010000000000000000900467ffffffffffffffff1615611aba5760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c72656164792066696e616c60448201527f697a656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b60008281526004602052604080822080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016905551839133917f1256b41d4b18d922811c358ab80cb0375aae28f45373de35cfda580662193fcd9190a350505050565b3360009081526001602052604090205460ff16611b7d5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f742061206d696e746572000000000000000000006044820152606401610796565b600054600160a01b900460ff1615611bd75760405162461bcd60e51b815260206004820152601960248201527f4f7074696d6973746963206d696e74696e6720706175736564000000000000006044820152606401610796565b6000611be38383610853565b600081815260046020526040902080549192509067ffffffffffffffff1615611c745760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c726561647920726571756560448201527f7374656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b604051630b02c43d60e41b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b02c43d09060240160c060405180830381865afa158015611cdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0091906137b5565b9050806040015163ffffffff16600003611d665760405162461bcd60e51b815260206004820152602160248201527f546865206465706f73697420686173206e6f74206265656e2072657665616c656044820152601960fa1b6064820152608401610796565b60a081015163ffffffff1615611dbe5760405162461bcd60e51b815260206004820152601c60248201527f546865206465706f73697420697320616c7265616479207377657074000000006044820152606401610796565b60608101516001600160a01b03163014611e1a5760405162461bcd60e51b815260206004820152601860248201527f556e6578706563746564207661756c74206164647265737300000000000000006044820152606401610796565b815467ffffffffffffffff19164267ffffffffffffffff90811691909117835581516020808401516040805191909416815290810188905263ffffffff8716928101929092526001600160a01b031690849033907f36f39c606d55d7dd2a05b8c4e41e9a6ca8c501cea10009c1762f6826a146e0559060600160405180910390a45050505050565b60028181548110611eb257600080fd5b6000918252602090912001546001600160a01b0316905081565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614611f4d5760405162461bcd60e51b815260206004820152601160248201527f546f6b656e206973206e6f7420544254430000000000000000000000000000006044820152606401610796565b336001600160a01b03841614611fa55760405162461bcd60e51b815260206004820152601860248201527f4f6e6c7920544254432063616c6c657220616c6c6f77656400000000000000006044820152606401610796565b6000819003611fbd57611fb88585612ee5565b610e49565b610e4985858484612d95565b6000546001600160a01b031633146120115760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b03811660009081526001602052604090205460ff161561207a5760405162461bcd60e51b815260206004820181905260248201527f54686973206164647265737320697320616c72656164792061206d696e7465726044820152606401610796565b6001600160a01b0381166000818152600160208190526040808320805460ff19168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180546001600160a01b03191684179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6000546001600160a01b0316331461214e5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b60095461215e8162015180612ce8565b600854600080547fffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffff1663ffffffff909216600160c81b81029290921790556040519081527ff52de3377e3ae270d1e38f99b9b8d587814643811516ea55ba4d597f9950d4ec9060200160405180910390a1506008805463ffffffff191690556000600955565b6000546001600160a01b0316331461222c5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b600b5461223c8162015180612ce8565b600a546040516001600160a01b0390911681527f81a9bb8030ed4116b405800280e065110a37afb57b69948e714c97fab23475ec9060200160405180910390a1600a546040517ff2fde38b0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000009091169063f2fde38b90602401600060405180830381600087803b1580156122fd57600080fd5b505af1158015612311573d6000803e3d6000fd5b5050600a546040516370a0823160e01b81523060048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811694506356a6d9ef93509091169083906370a0823190602401602060405180830381865afa158015612389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ad9190613748565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561240b57600080fd5b505af115801561241f573d6000803e3d6000fd5b5050600a80546001600160a01b031916905550506000600b5550565b6040516370a0823160e01b815233600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156124a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c59190613748565b101561251e5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610796565b6125283382612c05565b604051631f1b6d2760e21b8152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637c6db49c90606401600060405180830381600087803b15801561259657600080fd5b505af1158015610e49573d6000803e3d6000fd5b6000546001600160a01b031633146125f25760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b600054600160a01b900460ff16156126565760405162461bcd60e51b815260206004820152602160248201527f4f7074696d6973746963206d696e74696e6720616c72656164792070617573656044820152601960fa1b6064820152608401610796565b6000805460ff60a01b1916600160a01b1781556040517f23a83c8aeda8c831401c17b5bfb8b2ead79fcfe9c027fe34a4f8576e2c7c74cc9190a1565b6000546001600160a01b031633146126da5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b03811660009081526003602052604090205460ff16156127695760405162461bcd60e51b815260206004820152602260248201527f54686973206164647265737320697320616c726561647920612067756172646960448201527f616e0000000000000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b038116600081815260036020526040808220805460ff19166001179055517f038596bb31e2e7d3d9f184d4c98b310103f6d7f5830e5eec32bffe6f1728f9699190a250565b6000546001600160a01b031633146127fd5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b600054600160a01b900460ff166128565760405162461bcd60e51b815260206004820181905260248201527f4f7074696d6973746963206d696e74696e67206973206e6f74207061757365646044820152606401610796565b6000805460ff60a01b191681556040517fcb27470ed9568d9eeb8939707bafc19404d908a26ce5f468a6aa781024fd6a839190a1565b6000546001600160a01b031633146128d45760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b426007556006805463ffffffff191663ffffffff83169081179091556040519081527f0dbfec7f12acffbb5cec595ac4370907eaf84caa7025dd71f4021433be79eba9906020016107e7565b6000546001600160a01b031633146129685760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b0381166129e45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610796565b61124181613018565b6000546001600160a01b03163314612a355760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6040517fb88d4fde0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063b88d4fde9061096d90309088908890889088906004016136a7565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261084e908490613068565b6001600160a01b038216600090815260056020526040812054808203612b2b57829150506108b2565b80831115612b92576001600160a01b0384166000818152600560209081526040808320839055519182527fb30abd1b9e3d58cd8525b3d5c5aa002db1e43a150af5b172a8d16efcc7a141f8910160405180910390a2612b8a8184613706565b9150506108b2565b612b9c8382613706565b6001600160a01b0385166000818152600560205260409020919091557fb30abd1b9e3d58cd8525b3d5c5aa002db1e43a150af5b172a8d16efcc7a141f8612be38584613706565b60405190815260200160405180910390a260009150506108b2565b5092915050565b816001600160a01b03167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe82604051612c4091815260200190565b60405180910390a26040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f19906044015b600060405180830381600087803b158015612ccc57600080fd5b505af1158015612ce0573d6000803e3d6000fd5b505050505050565b60008211612d385760405162461bcd60e51b815260206004820152601460248201527f4368616e6765206e6f7420696e697469617465640000000000000000000000006044820152606401610796565b80612d438342613706565b1015612d915760405162461bcd60e51b815260206004820181905260248201527f476f7665726e616e63652064656c617920686173206e6f7420656c61707365646044820152606401610796565b5050565b836001600160a01b03167f68751a4c3821398cb63d11609eca2440742ef19446f0c0261bfa8a13dd0748b884604051612dd091815260200190565b60405180910390a260405163079cc67960e41b81526001600160a01b038581166004830152602482018590527f000000000000000000000000000000000000000000000000000000000000000016906379cc679090604401600060405180830381600087803b158015612e4257600080fd5b505af1158015612e56573d6000803e3d6000fd5b50506040517f4a38757e0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250634a38757e9150611010907f0000000000000000000000000000000000000000000000000000000000000000908790879087906004016138d5565b816001600160a01b03167f68751a4c3821398cb63d11609eca2440742ef19446f0c0261bfa8a13dd0748b882604051612f2091815260200190565b60405180910390a260405163079cc67960e41b81526001600160a01b038381166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906379cc679090604401600060405180830381600087803b158015612f9257600080fd5b505af1158015612fa6573d6000803e3d6000fd5b50506040517f56a6d9ef0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590527f00000000000000000000000000000000000000000000000000000000000000001692506356a6d9ef9150604401612cb2565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006130bd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661314d9092919063ffffffff16565b80519091501561084e57808060200190518101906130db9190613908565b61084e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610796565b606061315c8484600085613166565b90505b9392505050565b6060824710156131de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b0385163b6132355760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610796565b600080866001600160a01b03168587604051613251919061394e565b60006040518083038185875af1925050503d806000811461328e576040519150601f19603f3d011682016040523d82523d6000602084013e613293565b606091505b50915091506132a38282866132ae565b979650505050505050565b606083156132bd57508161315f565b8251156132cd5782518084602001fd5b8160405162461bcd60e51b8152600401610796919061396a565b6001600160a01b038116811461124157600080fd5b60006020828403121561330e57600080fd5b813561315f816132e7565b63ffffffff8116811461124157600080fd5b60006020828403121561333d57600080fd5b813561315f81613319565b60008060006060848603121561335d57600080fd5b8335613368816132e7565b92506020840135613378816132e7565b929592945050506040919091013590565b6000806040838503121561339c57600080fd5b8235915060208301356133ae81613319565b809150509250929050565b60008083601f8401126133cb57600080fd5b50813567ffffffffffffffff8111156133e357600080fd5b6020830191508360208285010111156133fb57600080fd5b9250929050565b60008060008060006080868803121561341a57600080fd5b8535613425816132e7565b94506020860135613435816132e7565b935060408601359250606086013567ffffffffffffffff81111561345857600080fd5b613464888289016133b9565b969995985093965092949392505050565b60008083601f84011261348757600080fd5b50813567ffffffffffffffff81111561349f57600080fd5b6020830191508360208260051b85010111156133fb57600080fd5b600080600080604085870312156134d057600080fd5b843567ffffffffffffffff808211156134e857600080fd5b6134f488838901613475565b9096509450602087013591508082111561350d57600080fd5b5061351a87828801613475565b95989497509550505050565b6000806000806060858703121561353c57600080fd5b8435613547816132e7565b935060208501359250604085013567ffffffffffffffff81111561356a57600080fd5b61351a878288016133b9565b60008060006040848603121561358b57600080fd5b83359250602084013567ffffffffffffffff8111156135a957600080fd5b6135b5868287016133b9565b9497909650939450505050565b6000602082840312156135d457600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b8181101561361c5783516001600160a01b0316835292840192918401916001016135f7565b50909695505050505050565b60008060008060006080868803121561364057600080fd5b853561364b816132e7565b9450602086013593506040860135613662816132e7565b9250606086013567ffffffffffffffff81111561345857600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b038088168352808716602084015250846040830152608060608301526132a360808301848661367e565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156108b2576108b26136f0565b634e487b7160e01b600052603160045260246000fd5b600060018201613741576137416136f0565b5060010190565b60006020828403121561375a57600080fd5b5051919050565b67ffffffffffffffff818116838216019080821115612bfe57612bfe6136f0565b805161378d816132e7565b919050565b805167ffffffffffffffff8116811461378d57600080fd5b805161378d81613319565b600060c082840312156137c757600080fd5b60405160c0810181811067ffffffffffffffff821117156137f857634e487b7160e01b600052604160045260246000fd5b60405261380483613782565b815261381260208401613792565b6020820152613823604084016137aa565b604082015261383460608401613782565b606082015261384560808401613792565b608082015261385660a084016137aa565b60a08201529392505050565b67ffffffffffffffff828116828216039080821115612bfe57612bfe6136f0565b6000826138a057634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156108b2576108b26136f0565b6000602082840312156138ca57600080fd5b815161315f816132e7565b6001600160a01b03851681528360208201526060604082015260006138fe60608301848661367e565b9695505050505050565b60006020828403121561391a57600080fd5b8151801515811461315f57600080fd5b60005b8381101561394557818101518382015260200161392d565b50506000910152565b6000825161396081846020870161392a565b9190910192915050565b602081526000825180602084015261398981604085016020870161392a565b601f01601f1916919091016040019291505056fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a264697066735822122037330a9907e361443441101bb14a38c9a552ac4dacc35885d704d1021da556ed64736f6c63430008110033",
1080
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103205760003560e01c80638532c511116101a7578063a410d29b116100ee578063c36b32b711610097578063e78cea9211610071578063e78cea9214610705578063f2fde38b1461072c578063fc4e51f61461073f57600080fd5b8063c36b32b7146106bb578063d0ff65b5146106ce578063e5d3d714146106de57600080fd5b8063b0b54895116100c8578063b0b5489514610689578063b9f7879814610693578063bc7b6b99146106b357600080fd5b8063a410d29b1461064b578063a526d83b14610653578063aa271e1a1461066657600080fd5b806395131526116101505780639a508c8e1161012a5780639a508c8e14610627578063a0712d681461062f578063a0cceb951461064257600080fd5b80639513152614610603578063983b2d561461060c5780639a4e36d51461061f57600080fd5b8063897f712c11610181578063897f712c146105cb5780638da5cb5b146105df5780638f4ffcb1146105f057600080fd5b80638532c511146105955780638623ec7b146105a557806388aaf0c8146105b857600080fd5b806347c1ffdb1161026b5780636c626aa41161021457806376cdb03b116101ee57806376cdb03b1461053057806380df5ed21461056f578063820b55131461058257600080fd5b80636c626aa4146104ba5780637140415614610515578063715018a61461052857600080fd5b806364e779b11161024557806364e779b11461047f5780636abe3a6c146104925780636b32810b146104a557600080fd5b806347c1ffdb1461044d57806353dce4df146104555780635ae2da461461046857600080fd5b80633092afd5116102cd578063461c6373116102a7578063461c637314610414578063475d057014610427578063479aa9271461043a57600080fd5b80633092afd5146103e5578063317dfa76146103f857806341906ab71461040b57600080fd5b80631171bda9116102fe5780631171bda91461039e578063124f65bd146103b15780632e73e398146103d257600080fd5b806309b53f51146103255780630c68ba21146103565780630f34257314610389575b600080fd5b60005461033c90600160a81b900463ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b6103796103643660046132fc565b60036020526000908152604090205460ff1681565b604051901515815260200161034d565b61039c61039736600461332b565b610752565b005b61039c6103ac366004613348565b6107f2565b6103c46103bf366004613389565b610853565b60405190815260200161034d565b61039c6103e0366004613402565b6108b8565b61039c6103f33660046132fc565b6109a6565b61039c610406366004613348565b610c15565b6103c460095481565b61039c6104223660046134ba565b610d05565b61039c610435366004613526565b610e50565b61039c6104483660046132fc565b611048565b61039c61114d565b61039c610463366004613576565b61122b565b60005461033c90600160c81b900463ffffffff1681565b61039c61048d3660046135c2565b611237565b61039c6104a0366004613389565b611244565b6104ad611783565b60405161034d91906135db565b6104f46104c83660046135c2565b60046020526000908152604090205467ffffffffffffffff808216916801000000000000000090041682565b6040805167ffffffffffffffff93841681529290911660208301520161034d565b61039c6105233660046132fc565b6117e5565b61039c6118de565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161034d565b61039c61057d366004613389565b611932565b61039c610590366004613389565b611b1e565b60065461033c9063ffffffff1681565b6105576105b33660046135c2565b611ea2565b600a54610557906001600160a01b031681565b60005461037990600160a01b900460ff1681565b6000546001600160a01b0316610557565b61039c6105fe366004613628565b611ecc565b6103c4600b5481565b61039c61061a3660046132fc565b611fc9565b61039c612106565b61039c6121e4565b61039c61063d3660046135c2565b61243b565b6103c460075481565b61039c6125aa565b61039c6106613660046132fc565b612692565b6103796106743660046132fc565b60016020526000908152604090205460ff1681565b6103c46201518081565b6103c46106a13660046132fc565b60056020526000908152604090205481565b61039c6127b5565b61039c6106c936600461332b565b61288c565b60085461033c9063ffffffff1681565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b6105577f000000000000000000000000000000000000000000000000000000000000000081565b61039c61073a3660046132fc565b612920565b61039c61074d366004613402565b6129ed565b6000546001600160a01b0316331461079f5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e83398151915260448201526064015b60405180910390fd5b426009556008805463ffffffff191663ffffffff83169081179091556040519081527f682bc0fb7e0d6bcb974cf556b95f68533cafc411d83d9f33ac192ccf45dda605906020015b60405180910390a150565b6000546001600160a01b0316331461083a5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b61084e6001600160a01b0384168383612a82565b505050565b6000828260405160200161089692919091825260e01b7fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b6040516020818303038152906040528051906020012060001c90505b92915050565b6000546001600160a01b031633146109005760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6040517ffc4e51f60000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fc4e51f69061096d90889088908890889088906004016136a7565b600060405180830381600087803b15801561098757600080fd5b505af115801561099b573d6000803e3d6000fd5b505050505050505050565b336109b96000546001600160a01b031690565b6001600160a01b031614806109dd57503360009081526003602052604090205460ff165b610a4f5760405162461bcd60e51b815260206004820152602360248201527f43616c6c6572206973206e6f7420746865206f776e6572206f7220677561726460448201527f69616e00000000000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b03811660009081526001602052604090205460ff16610ab75760405162461bcd60e51b815260206004820152601c60248201527f546869732061646472657373206973206e6f742061206d696e746572000000006044820152606401610796565b6001600160a01b0381166000908152600160205260408120805460ff191690555b600254811015610bdd57816001600160a01b031660028281548110610aff57610aff6136da565b6000918252602090912001546001600160a01b031603610bcb5760028054610b2990600190613706565b81548110610b3957610b396136da565b600091825260209091200154600280546001600160a01b039092169183908110610b6557610b656136da565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506002805480610ba457610ba4613719565b600082815260209020810160001990810180546001600160a01b0319169055019055610bdd565b80610bd58161372f565b915050610ad8565b506040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b6000546001600160a01b03163314610c5d5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6040517f1171bda90000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528381166024830152604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631171bda990606401600060405180830381600087803b158015610ce857600080fd5b505af1158015610cfc573d6000803e3d6000fd5b50505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d7d5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610796565b6000839003610dce5760405162461bcd60e51b815260206004820152601760248201527f4e6f206465706f7369746f7273207370656369666965640000000000000000006044820152606401610796565b60005b83811015610e49576000858583818110610ded57610ded6136da565b9050602002016020810190610e0291906132fc565b90506000848484818110610e1857610e186136da565b905060200201359050610e3482610e2f8484612b02565b612c05565b50508080610e419061372f565b915050610dd1565b5050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ec85760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f74207468652042616e6b000000000000000000006044820152606401610796565b6040516370a0823160e01b81526001600160a01b03858116600483015284917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f569190613748565b1015610faf5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610796565b610fb98484612c05565b604051631f1b6d2760e21b81526001600160a01b038581166004830152306024830152604482018590527f00000000000000000000000000000000000000000000000000000000000000001690637c6db49c906064015b600060405180830381600087803b15801561102a57600080fd5b505af115801561103e573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146110905760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b0381166110e65760405162461bcd60e51b815260206004820181905260248201527f4e6577207661756c7420616464726573732063616e6e6f74206265207a65726f6044820152606401610796565b604080516001600160a01b03831681524260208201527f5cc842cab066489e13292128663547c68705dbf476f0131e0107f155719c6124910160405180910390a142600b55600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146111955760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6007546111a58162015180612ce8565b600654600080547fffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff1663ffffffff909216600160a81b81029290921790556040519081527fa7f4ce7c3586e2000cdec6b25c5e7d0b20f9b4f435aa22d9c1feb32dbb506f779060200160405180910390a1506006805463ffffffff191690556000600755565b61084e33848484612d95565b6112413382612ee5565b50565b3360009081526001602052604090205460ff166112a35760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f742061206d696e746572000000000000000000006044820152606401610796565b600054600160a01b900460ff16156112fd5760405162461bcd60e51b815260206004820152601960248201527f4f7074696d6973746963206d696e74696e6720706175736564000000000000006044820152606401610796565b60006113098383610853565b600081815260046020526040812080549293509167ffffffffffffffff16900361139b5760405162461bcd60e51b815260206004820152603060248201527f4f7074696d6973746963206d696e74696e67206e6f742072657175657374656460448201527f20666f7220746865206465706f736974000000000000000000000000000000006064820152608401610796565b805468010000000000000000900467ffffffffffffffff16156114265760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c72656164792066696e616c60448201527f697a656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b600054815461144c91600160c81b900463ffffffff169067ffffffffffffffff16613761565b67ffffffffffffffff1642116114ca5760405162461bcd60e51b815260206004820152602b60248201527f4f7074696d6973746963206d696e74696e672064656c617920686173206e6f7460448201527f20706173736564207965740000000000000000000000000000000000000000006064820152608401610796565b604051630b02c43d60e41b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b02c43d09060240160c060405180830381865afa158015611532573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155691906137b5565b90508060a0015163ffffffff166000146115b25760405162461bcd60e51b815260206004820152601c60248201527f546865206465706f73697420697320616c7265616479207377657074000000006044820152606401610796565b6000816080015182602001516115c89190613862565b6000805467ffffffffffffffff92909216925090600160a81b900463ffffffff166115f457600061160e565b60005461160e90600160a81b900463ffffffff1683613883565b83516001600160a01b0316600090815260056020526040812054919250906116379084906138a5565b84516001600160a01b03166000908152600560205260409020819055845190915061166690610e2f8486613706565b81156116f7576116f77f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361d027b36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f191906138b8565b83612c05565b84547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000004267ffffffffffffffff160217855583516040518281526001600160a01b0390911690879033907f2cffebf26d639426e79514d100febae8b2c63e700e5dc0fa6c88a129633506369060200160405180910390a45050505050505050565b606060028054806020026020016040519081016040528092919081815260200182805480156117db57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116117bd575b5050505050905090565b6000546001600160a01b0316331461182d5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b03811660009081526003602052604090205460ff166118955760405162461bcd60e51b815260206004820152601e60248201527f546869732061646472657373206973206e6f74206120677561726469616e00006044820152606401610796565b6001600160a01b038116600081815260036020526040808220805460ff19169055517fb8107d0c6b40be480ce3172ee66ba6d64b71f6b1685a851340036e6e2e3e3c529190a250565b6000546001600160a01b031633146119265760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6119306000613018565b565b3360009081526003602052604090205460ff166119915760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f74206120677561726469616e00000000000000006044820152606401610796565b600061199d8383610853565b600081815260046020526040812080549293509167ffffffffffffffff169003611a2f5760405162461bcd60e51b815260206004820152603060248201527f4f7074696d6973746963206d696e74696e67206e6f742072657175657374656460448201527f20666f7220746865206465706f736974000000000000000000000000000000006064820152608401610796565b805468010000000000000000900467ffffffffffffffff1615611aba5760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c72656164792066696e616c60448201527f697a656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b60008281526004602052604080822080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016905551839133917f1256b41d4b18d922811c358ab80cb0375aae28f45373de35cfda580662193fcd9190a350505050565b3360009081526001602052604090205460ff16611b7d5760405162461bcd60e51b815260206004820152601660248201527f43616c6c6572206973206e6f742061206d696e746572000000000000000000006044820152606401610796565b600054600160a01b900460ff1615611bd75760405162461bcd60e51b815260206004820152601960248201527f4f7074696d6973746963206d696e74696e6720706175736564000000000000006044820152606401610796565b6000611be38383610853565b600081815260046020526040902080549192509067ffffffffffffffff1615611c745760405162461bcd60e51b815260206004820152603460248201527f4f7074696d6973746963206d696e74696e6720616c726561647920726571756560448201527f7374656420666f7220746865206465706f7369740000000000000000000000006064820152608401610796565b604051630b02c43d60e41b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b02c43d09060240160c060405180830381865afa158015611cdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0091906137b5565b9050806040015163ffffffff16600003611d665760405162461bcd60e51b815260206004820152602160248201527f546865206465706f73697420686173206e6f74206265656e2072657665616c656044820152601960fa1b6064820152608401610796565b60a081015163ffffffff1615611dbe5760405162461bcd60e51b815260206004820152601c60248201527f546865206465706f73697420697320616c7265616479207377657074000000006044820152606401610796565b60608101516001600160a01b03163014611e1a5760405162461bcd60e51b815260206004820152601860248201527f556e6578706563746564207661756c74206164647265737300000000000000006044820152606401610796565b815467ffffffffffffffff19164267ffffffffffffffff90811691909117835581516020808401516040805191909416815290810188905263ffffffff8716928101929092526001600160a01b031690849033907f36f39c606d55d7dd2a05b8c4e41e9a6ca8c501cea10009c1762f6826a146e0559060600160405180910390a45050505050565b60028181548110611eb257600080fd5b6000918252602090912001546001600160a01b0316905081565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614611f4d5760405162461bcd60e51b815260206004820152601160248201527f546f6b656e206973206e6f7420544254430000000000000000000000000000006044820152606401610796565b336001600160a01b03841614611fa55760405162461bcd60e51b815260206004820152601860248201527f4f6e6c7920544254432063616c6c657220616c6c6f77656400000000000000006044820152606401610796565b6000819003611fbd57611fb88585612ee5565b610e49565b610e4985858484612d95565b6000546001600160a01b031633146120115760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b03811660009081526001602052604090205460ff161561207a5760405162461bcd60e51b815260206004820181905260248201527f54686973206164647265737320697320616c72656164792061206d696e7465726044820152606401610796565b6001600160a01b0381166000818152600160208190526040808320805460ff19168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180546001600160a01b03191684179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6000546001600160a01b0316331461214e5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b60095461215e8162015180612ce8565b600854600080547fffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffff1663ffffffff909216600160c81b81029290921790556040519081527ff52de3377e3ae270d1e38f99b9b8d587814643811516ea55ba4d597f9950d4ec9060200160405180910390a1506008805463ffffffff191690556000600955565b6000546001600160a01b0316331461222c5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b600b5461223c8162015180612ce8565b600a546040516001600160a01b0390911681527f81a9bb8030ed4116b405800280e065110a37afb57b69948e714c97fab23475ec9060200160405180910390a1600a546040517ff2fde38b0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000009091169063f2fde38b90602401600060405180830381600087803b1580156122fd57600080fd5b505af1158015612311573d6000803e3d6000fd5b5050600a546040516370a0823160e01b81523060048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811694506356a6d9ef93509091169083906370a0823190602401602060405180830381865afa158015612389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ad9190613748565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561240b57600080fd5b505af115801561241f573d6000803e3d6000fd5b5050600a80546001600160a01b031916905550506000600b5550565b6040516370a0823160e01b815233600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156124a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c59190613748565b101561251e5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420657863656564732062616c616e636520696e207468652062616044820152616e6b60f01b6064820152608401610796565b6125283382612c05565b604051631f1b6d2760e21b8152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637c6db49c90606401600060405180830381600087803b15801561259657600080fd5b505af1158015610e49573d6000803e3d6000fd5b6000546001600160a01b031633146125f25760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b600054600160a01b900460ff16156126565760405162461bcd60e51b815260206004820152602160248201527f4f7074696d6973746963206d696e74696e6720616c72656164792070617573656044820152601960fa1b6064820152608401610796565b6000805460ff60a01b1916600160a01b1781556040517f23a83c8aeda8c831401c17b5bfb8b2ead79fcfe9c027fe34a4f8576e2c7c74cc9190a1565b6000546001600160a01b031633146126da5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b03811660009081526003602052604090205460ff16156127695760405162461bcd60e51b815260206004820152602260248201527f54686973206164647265737320697320616c726561647920612067756172646960448201527f616e0000000000000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b038116600081815260036020526040808220805460ff19166001179055517f038596bb31e2e7d3d9f184d4c98b310103f6d7f5830e5eec32bffe6f1728f9699190a250565b6000546001600160a01b031633146127fd5760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b600054600160a01b900460ff166128565760405162461bcd60e51b815260206004820181905260248201527f4f7074696d6973746963206d696e74696e67206973206e6f74207061757365646044820152606401610796565b6000805460ff60a01b191681556040517fcb27470ed9568d9eeb8939707bafc19404d908a26ce5f468a6aa781024fd6a839190a1565b6000546001600160a01b031633146128d45760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b426007556006805463ffffffff191663ffffffff83169081179091556040519081527f0dbfec7f12acffbb5cec595ac4370907eaf84caa7025dd71f4021433be79eba9906020016107e7565b6000546001600160a01b031633146129685760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6001600160a01b0381166129e45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610796565b61124181613018565b6000546001600160a01b03163314612a355760405162461bcd60e51b8152602060048201819052602482015260008051602061399e8339815191526044820152606401610796565b6040517fb88d4fde0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063b88d4fde9061096d90309088908890889088906004016136a7565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261084e908490613068565b6001600160a01b038216600090815260056020526040812054808203612b2b57829150506108b2565b80831115612b92576001600160a01b0384166000818152600560209081526040808320839055519182527fb30abd1b9e3d58cd8525b3d5c5aa002db1e43a150af5b172a8d16efcc7a141f8910160405180910390a2612b8a8184613706565b9150506108b2565b612b9c8382613706565b6001600160a01b0385166000818152600560205260409020919091557fb30abd1b9e3d58cd8525b3d5c5aa002db1e43a150af5b172a8d16efcc7a141f8612be38584613706565b60405190815260200160405180910390a260009150506108b2565b5092915050565b816001600160a01b03167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe82604051612c4091815260200190565b60405180910390a26040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f19906044015b600060405180830381600087803b158015612ccc57600080fd5b505af1158015612ce0573d6000803e3d6000fd5b505050505050565b60008211612d385760405162461bcd60e51b815260206004820152601460248201527f4368616e6765206e6f7420696e697469617465640000000000000000000000006044820152606401610796565b80612d438342613706565b1015612d915760405162461bcd60e51b815260206004820181905260248201527f476f7665726e616e63652064656c617920686173206e6f7420656c61707365646044820152606401610796565b5050565b836001600160a01b03167f68751a4c3821398cb63d11609eca2440742ef19446f0c0261bfa8a13dd0748b884604051612dd091815260200190565b60405180910390a260405163079cc67960e41b81526001600160a01b038581166004830152602482018590527f000000000000000000000000000000000000000000000000000000000000000016906379cc679090604401600060405180830381600087803b158015612e4257600080fd5b505af1158015612e56573d6000803e3d6000fd5b50506040517f4a38757e0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250634a38757e9150611010907f0000000000000000000000000000000000000000000000000000000000000000908790879087906004016138d5565b816001600160a01b03167f68751a4c3821398cb63d11609eca2440742ef19446f0c0261bfa8a13dd0748b882604051612f2091815260200190565b60405180910390a260405163079cc67960e41b81526001600160a01b038381166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906379cc679090604401600060405180830381600087803b158015612f9257600080fd5b505af1158015612fa6573d6000803e3d6000fd5b50506040517f56a6d9ef0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590527f00000000000000000000000000000000000000000000000000000000000000001692506356a6d9ef9150604401612cb2565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006130bd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661314d9092919063ffffffff16565b80519091501561084e57808060200190518101906130db9190613908565b61084e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610796565b606061315c8484600085613166565b90505b9392505050565b6060824710156131de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610796565b6001600160a01b0385163b6132355760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610796565b600080866001600160a01b03168587604051613251919061394e565b60006040518083038185875af1925050503d806000811461328e576040519150601f19603f3d011682016040523d82523d6000602084013e613293565b606091505b50915091506132a38282866132ae565b979650505050505050565b606083156132bd57508161315f565b8251156132cd5782518084602001fd5b8160405162461bcd60e51b8152600401610796919061396a565b6001600160a01b038116811461124157600080fd5b60006020828403121561330e57600080fd5b813561315f816132e7565b63ffffffff8116811461124157600080fd5b60006020828403121561333d57600080fd5b813561315f81613319565b60008060006060848603121561335d57600080fd5b8335613368816132e7565b92506020840135613378816132e7565b929592945050506040919091013590565b6000806040838503121561339c57600080fd5b8235915060208301356133ae81613319565b809150509250929050565b60008083601f8401126133cb57600080fd5b50813567ffffffffffffffff8111156133e357600080fd5b6020830191508360208285010111156133fb57600080fd5b9250929050565b60008060008060006080868803121561341a57600080fd5b8535613425816132e7565b94506020860135613435816132e7565b935060408601359250606086013567ffffffffffffffff81111561345857600080fd5b613464888289016133b9565b969995985093965092949392505050565b60008083601f84011261348757600080fd5b50813567ffffffffffffffff81111561349f57600080fd5b6020830191508360208260051b85010111156133fb57600080fd5b600080600080604085870312156134d057600080fd5b843567ffffffffffffffff808211156134e857600080fd5b6134f488838901613475565b9096509450602087013591508082111561350d57600080fd5b5061351a87828801613475565b95989497509550505050565b6000806000806060858703121561353c57600080fd5b8435613547816132e7565b935060208501359250604085013567ffffffffffffffff81111561356a57600080fd5b61351a878288016133b9565b60008060006040848603121561358b57600080fd5b83359250602084013567ffffffffffffffff8111156135a957600080fd5b6135b5868287016133b9565b9497909650939450505050565b6000602082840312156135d457600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b8181101561361c5783516001600160a01b0316835292840192918401916001016135f7565b50909695505050505050565b60008060008060006080868803121561364057600080fd5b853561364b816132e7565b9450602086013593506040860135613662816132e7565b9250606086013567ffffffffffffffff81111561345857600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b038088168352808716602084015250846040830152608060608301526132a360808301848661367e565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156108b2576108b26136f0565b634e487b7160e01b600052603160045260246000fd5b600060018201613741576137416136f0565b5060010190565b60006020828403121561375a57600080fd5b5051919050565b67ffffffffffffffff818116838216019080821115612bfe57612bfe6136f0565b805161378d816132e7565b919050565b805167ffffffffffffffff8116811461378d57600080fd5b805161378d81613319565b600060c082840312156137c757600080fd5b60405160c0810181811067ffffffffffffffff821117156137f857634e487b7160e01b600052604160045260246000fd5b60405261380483613782565b815261381260208401613792565b6020820152613823604084016137aa565b604082015261383460608401613782565b606082015261384560808401613792565b608082015261385660a084016137aa565b60a08201529392505050565b67ffffffffffffffff828116828216039080821115612bfe57612bfe6136f0565b6000826138a057634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156108b2576108b26136f0565b6000602082840312156138ca57600080fd5b815161315f816132e7565b6001600160a01b03851681528360208201526060604082015260006138fe60608301848661367e565b9695505050505050565b60006020828403121561391a57600080fd5b8151801515811461315f57600080fd5b60005b8381101561394557818101518382015260200161392d565b50506000910152565b6000825161396081846020870161392a565b9190910192915050565b602081526000825180602084015261398981604085016020870161392a565b601f01601f1916919091016040019291505056fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a264697066735822122037330a9907e361443441101bb14a38c9a552ac4dacc35885d704d1021da556ed64736f6c63430008110033",
1081
1081
  "linkReferences": {},
1082
1082
  "deployedLinkReferences": {}
1083
1083
  }
@@ -1449,7 +1449,6 @@ contract Bridge is
1449
1449
  /// @dev Requirements:
1450
1450
  /// - Wallet maximum BTC balance must be greater than the wallet
1451
1451
  /// minimum BTC balance,
1452
- /// - Wallet closure BTC balance must be greater than zero,
1453
1452
  /// - Wallet maximum BTC transfer must be greater than zero,
1454
1453
  /// - Wallet closing period must be greater than zero.
1455
1454
  function updateWalletParameters(
@@ -726,7 +726,6 @@ library BridgeState {
726
726
  /// @dev Requirements:
727
727
  /// - Wallet maximum BTC balance must be greater than the wallet
728
728
  /// minimum BTC balance,
729
- /// - Wallet closure BTC balance must be greater than zero,
730
729
  /// - Wallet maximum BTC transfer must be greater than zero,
731
730
  /// - Wallet closing period must be greater than zero.
732
731
  function updateWalletParameters(
@@ -743,10 +742,6 @@ library BridgeState {
743
742
  _walletCreationMaxBtcBalance > _walletCreationMinBtcBalance,
744
743
  "Wallet creation maximum BTC balance must be greater than the creation minimum BTC balance"
745
744
  );
746
- require(
747
- _walletClosureMinBtcBalance > 0,
748
- "Wallet closure minimum BTC balance must be greater than zero"
749
- );
750
745
  require(
751
746
  _walletMaxBtcTransfer > 0,
752
747
  "Wallet maximum BTC transfer must be greater than zero"
@@ -28,12 +28,8 @@ const func: DeployFunction = async (hre: HardhatRuntimeEnvironment) => {
28
28
  // become "closeable" if both of the following is true:
29
29
  // - walletMaxAge is set to the maximum value allowed for uint32 type (2^32-1 = 4294967295)
30
30
  // - walletClosureMinBtcBalance is zero
31
- //
32
- // In practice, walletClosureMinBtcBalance's minimum value enforced by the
33
- // contract is 1. That should do the trick because only non-active wallets
34
- // with 0 BTC (no funds to move) can become "closeable" in that case.
35
31
  const walletMaxAge = ethers.BigNumber.from("4294967295")
36
- const walletClosureMinBtcBalance = ethers.BigNumber.from("1")
32
+ const walletClosureMinBtcBalance = ethers.BigNumber.from("0")
37
33
 
38
34
  // Fetch the current values of other wallet parameters to keep them unchanged.
39
35
  const walletParameters = await read("Bridge", "walletParameters")