@ensuro/core 2.8.3 → 2.9.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 (44) hide show
  1. package/README.md +2 -3
  2. package/build/contracts/AccessManager.sol/AccessManager.json +2 -15
  3. package/build/contracts/ERC4626AssetManager.sol/ERC4626AssetManager.json +2 -2
  4. package/build/contracts/ERC4626PlusVaultAssetManager.sol/ERC4626PlusVaultAssetManager.json +2 -2
  5. package/build/contracts/EToken.sol/EToken.json +7 -85
  6. package/build/contracts/FullSignedBucketRiskModule.sol/FullSignedBucketRiskModule.json +1484 -0
  7. package/build/contracts/LPManualWhitelist.sol/LPManualWhitelist.json +7 -85
  8. package/build/contracts/Policy.sol/Policy.json +2 -2
  9. package/build/contracts/PolicyPool.sol/PolicyPool.json +2 -15
  10. package/build/contracts/PolicyPoolComponent.sol/PolicyPoolComponent.json +5 -83
  11. package/build/contracts/PremiumsAccount.sol/PremiumsAccount.json +7 -85
  12. package/build/contracts/Reserve.sol/Reserve.json +5 -83
  13. package/build/contracts/RiskModule.sol/RiskModule.json +5 -96
  14. package/build/contracts/SignedBucketRiskModule.sol/SignedBucketRiskModule.json +7 -150
  15. package/build/contracts/SignedQuoteRiskModule.sol/SignedQuoteRiskModule.json +7 -98
  16. package/build/contracts/TimeScaled.sol/TimeScaled.json +2 -2
  17. package/build/contracts/TrustfulRiskModule.sol/TrustfulRiskModule.json +7 -98
  18. package/build/contracts/dependencies/WadRayMath.sol/WadRayMath.json +2 -2
  19. package/build/contracts/migration/LPManualWhitelistV20.sol/LPManualWhitelistV20.json +5 -83
  20. package/build/contracts/migration/LPManualWhitelistV20Upgraded.sol/LPManualWhitelistV20Upgraded.json +7 -85
  21. package/build/contracts/mocks/FixedRateVault.sol/FixedRateVault.json +2 -2
  22. package/build/contracts/mocks/ForwardProxy.sol/ForwardProxy.json +2 -2
  23. package/build/contracts/mocks/InterfaceIdCalculator.sol/InterfaceIdCalculator.json +2 -2
  24. package/build/contracts/mocks/PolicyHolderMock.sol/PolicyHolderMock.json +2 -2
  25. package/build/contracts/mocks/PolicyPoolComponentMock.sol/PolicyPoolComponentMock.json +2 -2
  26. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMock.json +2 -2
  27. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMockForward.json +2 -2
  28. package/build/contracts/mocks/RiskModuleMock.sol/RiskModuleMock.json +7 -98
  29. package/build/contracts/mocks/TestCurrency.sol/TestCurrency.json +2 -2
  30. package/build/contracts/mocks/TestNFT.sol/TestNFT.json +2 -2
  31. package/contracts/AccessManager.sol +0 -1
  32. package/contracts/EToken.sol +2 -20
  33. package/contracts/FullSignedBucketRiskModule.sol +204 -0
  34. package/contracts/PolicyPool.sol +0 -1
  35. package/contracts/PolicyPoolComponent.sol +7 -44
  36. package/contracts/PremiumsAccount.sol +3 -3
  37. package/contracts/RiskModule.sol +10 -21
  38. package/contracts/SignedBucketRiskModule.sol +15 -9
  39. package/contracts/SignedQuoteRiskModule.sol +7 -4
  40. package/js/test-utils.js +1 -2
  41. package/js/utils.js +65 -0
  42. package/package.json +1 -1
  43. package/scripts/deploySmokeTest-fork.sh +1 -1
  44. package/scripts/deploySmokeTest.sh +1 -1
@@ -534,19 +534,6 @@
534
534
  "stateMutability": "view",
535
535
  "type": "function"
536
536
  },
537
- {
538
- "inputs": [],
539
- "name": "LEVEL3_ROLE",
540
- "outputs": [
541
- {
542
- "internalType": "bytes32",
543
- "name": "",
544
- "type": "bytes32"
545
- }
546
- ],
547
- "stateMutability": "view",
548
- "type": "function"
549
- },
550
537
  {
551
538
  "inputs": [],
552
539
  "name": "access",
@@ -1768,8 +1755,8 @@
1768
1755
  "type": "function"
1769
1756
  }
1770
1757
  ],
1771
- "bytecode": "0x60e0604052306080523480156200001557600080fd5b5060405162005f5c38038062005f5c833981016040819052620000389162000184565b6001600160a01b038216620000605760405163a9f283c960e01b815260040160405180910390fd5b6001600160a01b038116620000885760405163559a03cd60e01b815260040160405180910390fd5b62000092620000aa565b6001600160a01b0391821660a0521660c052620001c3565b600054610100900460ff1615620001175760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161462000169576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200018157600080fd5b50565b600080604083850312156200019857600080fd5b8251620001a5816200016b565b6020840151909250620001b8816200016b565b809150509250929050565b60805160a05160c051615cac620002b0600039600081816107ba015281816111570152818161120d015281816112c301528181611579015281816115ed0152818161164e01528181611ebe01528181611f69015281816120120152818161205101528181612182015261379501526000818161063f01528181611490015281816118de015281816119d601528181611af101528181611b92015281816122940152818161283401528181612eb30152818161310a0152818161364e01526136e2015260008181610c5601528181610c960152818161173e0152818161177e015261180d0152615cac6000f3fe6080604052600436106102675760003560e01c80636769a76f1161014457806395d89b41116100b6578063e5a6b10f1161007a578063e5a6b10f146107ab578063e985e9c5146107de578063f0f4426014610828578063f3fef3a314610848578063f67b2bad14610868578063ffa600e31461088a57600080fd5b806395d89b4114610716578063a22cb4651461072b578063b88d4fde1461074b578063c016f88a1461076b578063c87b56dd1461078b57600080fd5b806371907f171161010857806371907f1714610630578063792da09e146106635780637a702b3c1461069157806382afd23b146106b15780638456cb59146106e15780638c916d46146106f657600080fd5b80636769a76f146105905780636af6f1ef146105b05780636b8734e7146105d05780636f86c897146105f057806370a082311461061057600080fd5b806342842e0e116101dd57806355f804b3116101a157806355f804b3146104c55780635b494dd5146104e55780635c975abb146105195780635fcbf4451461053157806361d027b3146105515780636352211e1461057057600080fd5b806342842e0e1461042957806347e7ef24146104495780634a47a3e0146104695780634f1ef2861461049d57806352d1902d146104b057600080fd5b806323b872dd1161022f57806323b872dd1461033d57806324ea54f41461035d57806333d6157a1461038d5780633659cfe6146103d45780633ed7c1ae146103f45780633f4ba83a1461041457600080fd5b806301ffc9a71461026c57806306fdde03146102a1578063077f224a146102c3578063081812fc146102e5578063095ea7b31461031d575b600080fd5b34801561027857600080fd5b5061028c610287366004614e8e565b6108aa565b60405190151581526020015b60405180910390f35b3480156102ad57600080fd5b506102b66108d6565b6040516102989190614efb565b3480156102cf57600080fd5b506102e36102de366004614ff0565b610968565b005b3480156102f157600080fd5b50610305610300366004615068565b610adf565b6040516001600160a01b039091168152602001610298565b34801561032957600080fd5b506102e3610338366004615081565b610b06565b34801561034957600080fd5b506102e36103583660046150ad565b610c1b565b34801561036957600080fd5b5061037f600080516020615c5783398151915281565b604051908152602001610298565b34801561039957600080fd5b506103c76103a83660046150ee565b6001600160a01b0316600090815261012e602052604090205460ff1690565b604051610298919061513f565b3480156103e057600080fd5b506102e36103ef3660046150ee565b610c4c565b34801561040057600080fd5b5061037f61040f366004615255565b610d2b565b34801561042057600080fd5b506102e3611468565b34801561043557600080fd5b506102e36104443660046150ad565b611529565b34801561045557600080fd5b506102e3610464366004615081565b611544565b34801561047557600080fd5b5061037f7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b6102e36104ab3660046152b1565b611734565b3480156104bc57600080fd5b5061037f611800565b3480156104d157600080fd5b506102e36104e0366004615301565b6118b3565b3480156104f157600080fd5b5061037f7f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b34801561052557600080fd5b5060335460ff1661028c565b34801561053d57600080fd5b506102e361054c366004615343565b6119ae565b34801561055d57600080fd5b5061012d546001600160a01b0316610305565b34801561057c57600080fd5b5061030561058b366004615068565b611c9d565b34801561059c57600080fd5b5061037f6105ab36600461537c565b611cfd565b3480156105bc57600080fd5b506102e36105cb3660046153e7565b6121f7565b3480156105dc57600080fd5b506102e36105eb366004615343565b61227b565b3480156105fc57600080fd5b506102e361060b3660046150ee565b61281b565b34801561061c57600080fd5b5061037f61062b3660046150ee565b612df2565b34801561063c57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610305565b34801561066f57600080fd5b5061037f61067e366004615068565b600090815261012f602052604090205490565b34801561069d57600080fd5b506102e36106ac366004615404565b612e78565b3480156106bd57600080fd5b5061028c6106cc366004615068565b600090815261012f6020526040902054151590565b3480156106ed57600080fd5b506102e3612e9a565b34801561070257600080fd5b506102e3610711366004615431565b612f3f565b34801561072257600080fd5b506102b661300b565b34801561073757600080fd5b506102e36107463660046154b5565b61301a565b34801561075757600080fd5b506102e36107663660046154e3565b613025565b34801561077757600080fd5b5061037f61078636600461554f565b613057565b34801561079757600080fd5b506102b66107a6366004615068565b61308b565b3480156107b757600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610305565b3480156107ea57600080fd5b5061028c6107f9366004615584565b6001600160a01b0391821660009081526101006020908152604080832093909416825291909152205460ff1690565b34801561083457600080fd5b506102e36108433660046150ee565b6130f1565b34801561085457600080fd5b5061037f610863366004615081565b613197565b34801561087457600080fd5b5061037f600080516020615c1083398151915281565b34801561089657600080fd5b506102e36108a53660046155b2565b61322d565b60006108b582613260565b806108d057506001600160e01b0319821663019c676f60e31b145b92915050565b606060fb80546108e5906155e1565b80601f0160208091040260200160405190810160405280929190818152602001828054610911906155e1565b801561095e5780601f106109335761010080835404028352916020019161095e565b820191906000526020600020905b81548152906001019060200180831161094157829003601f168201915b5050505050905090565b600054610100900460ff16158080156109885750600054600160ff909116105b806109a25750303b1580156109a2575060005460ff166001145b610a0a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610a2d576000805461ff0019166101001790555b8351600003610a4e57604051620beefb60e01b815260040160405180910390fd5b8251600003610a70576040516343b47bcb60e01b815260040160405180910390fd5b610a786132b0565b610a8284846132d9565b610a8a61330a565b610a9382613339565b8015610ad9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6000610aea82613369565b50600090815260ff60205260409020546001600160a01b031690565b6000610b1182611c9d565b9050806001600160a01b0316836001600160a01b031603610b7e5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610a01565b336001600160a01b0382161480610b9a5750610b9a81336107f9565b610c0c5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610a01565b610c1683836133c8565b505050565b610c253382613436565b610c415760405162461bcd60e51b8152600401610a0190615615565b610c168383836134b5565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c945760405162461bcd60e51b8152600401610a0190615662565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610cdd600080516020615bf0833981519152546001600160a01b031690565b6001600160a01b031614610d035760405162461bcd60e51b8152600401610a01906156ae565b610d0c81613626565b60408051600080825260208201909252610d2891839190613846565b50565b6000610d356139b1565b610d3e856139f7565b6101608501516001600160a01b0381163314610d6d57604051634ace04f960e01b815260040160405180910390fd5b610d78816002613a5e565b6000816001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc91906156fa565b9050610de9816003613a5e565b4264ffffffffff16876101a0015164ffffffffff1611610e435760405162461bcd60e51b815260206004820152601560248201527413db19081c1bdb1a58de481a5cc8195e1c1a5c9959605a1b6044820152606401610a01565b85610180015164ffffffffff1687610180015164ffffffffff1614610ec15760405162461bcd60e51b815260206004820152602e60248201527f426f746820706f6c6963696573206d7573742068617665207468652073616d6560448201526d207374617274696e67206461746560901b6064820152608401610a01565b8560200151876020015111158015610ee157508560c001518760c0015111155b8015610ef557508560e001518760e0015111155b8015610f0b575085610120015187610120015111155b8015610f21575085610140015187610140015111155b8015610f3557508560600151876060015111155b8015610f4957508560800151876080015111155b8015610f5f575085610100015187610100015111155b8015610f835750856101a0015164ffffffffff16876101a0015164ffffffffff1611155b8015610fa557508561016001516001600160a01b0316826001600160a01b0316145b61100d5760405162461bcd60e51b815260206004820152603360248201527f4e657720706f6c696379206d7573742062652067726561746572206f7220657160448201527275616c207468616e206f6c6420706f6c69637960681b6064820152608401610a01565b6110178285613057565b808752600090815261012f60205260409020541561106f5760405162461bcd60e51b8152602060048201526015602482015274506f6c69637920616c72656164792065786973747360581b6044820152606401610a01565b61107886613a99565b8651600090815261012f6020526040812091909155875161109890611c9d565b90506110b881886000015160405180602001604052806000815250613b18565b8751600090815261012f602052604080822091909155516355c1da5f60e11b81526001600160a01b0383169063ab83b4be906110fa908b908b906004016157cf565b600060405180830381600087803b15801561111457600080fd5b505af1158015611128573d6000803e3d6000fd5b5050505060008860c001518860c001516111429190615802565b9050801561117f5761117f6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016888584613b4b565b8861014001518861014001516111959190615802565b905080156112355761123587846001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120391906156fa565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016919084613b4b565b88610120015188610120015161124b9190615802565b905080156112955761129587846001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111df573d6000803e3d6000fd5b8860e001518860e001516112a99190615802565b905080156112ee5761012d546112ee906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116918a911684613b4b565b8861010001518861010001516113049190615802565b90506000811180156113895750836001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa15801561134f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137391906156fa565b6001600160a01b0316876001600160a01b031614155b156113d0576113d087856001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111df573d6000803e3d6000fd5b836001600160a01b03167f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b896040516114099190615815565b60405180910390a2875189516040516001600160a01b038716907f4ff4ac703cb703b7ea535d47e65e64b4cabf11b3e2eb41f152dab17971953add90600090a4885188516114579190613ba5565b50508551925050505b949350505050565b600080516020615c57833981519152600080516020615c108339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b15801561150557600080fd5b505afa158015611519573d6000803e3d6000fd5b50505050611525613ca5565b5050565b610c1683838360405180602001604052806000815250613025565b61154c6139b1565b611557826001613a5e565b6040516370a0823160e01b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e69190615824565b905061161d7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316338585613b4b565b6001600160a01b0383166347e7ef24336040516370a0823160e01b81526001600160a01b03878116600483015285917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015611697573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bb9190615824565b6116c59190615802565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611710573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad99190615824565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361177c5760405162461bcd60e51b8152600401610a0190615662565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117c5600080516020615bf0833981519152546001600160a01b031690565b6001600160a01b0316146117eb5760405162461bcd60e51b8152600401610a01906156ae565b6117f482613626565b61152582826001613846565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146118a05760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610a01565b50600080516020615bf083398151915290565b7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c06001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b15801561194a57600080fd5b505afa15801561195e573d6000803e3d6000fd5b505050508161013090816119729190615883565b506040513381526004907fb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f906020015b60405180910390a25050565b600080516020615c57833981519152600080516020615c108339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b158015611a4b57600080fd5b505afa158015611a5f573d6000803e3d6000fd5b5050506001600160a01b038516600090815261012e602052604081209150815460ff166003811115611a9357611a9361510b565b03611ab157604051637d91856360e01b815260040160405180910390fd5b6001846003811115611ac557611ac561510b565b1480611ae257506002846003811115611ae057611ae061510b565b145b15611b88576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad600080516020615c10833981519152336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015611b6b57600080fd5b505afa158015611b7f573d6000803e3d6000fd5b50505050611c25565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad600080516020615c57833981519152336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015611c0c57600080fd5b505afa158015611c20573d6000803e3d6000fd5b505050505b80548490829060ff19166001836003811115611c4357611c4361510b565b021790555080546040516001600160a01b038716917ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef91611c8e91610100900460ff16908890615943565b60405180910390a25050505050565b600081815260fd60205260408120546001600160a01b0316806108d05760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610a01565b6000611d076139b1565b6101608501516001600160a01b0381163314611d3657604051634ace04f960e01b815260040160405180910390fd5b611d41816002613a5e565b6000816001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da591906156fa565b9050611db2816003613a5e565b611dbc8285613057565b808852600090815261012f602052604090205415611e145760405162461bcd60e51b8152602060048201526015602482015274506f6c69637920616c72656164792065786973747360581b6044820152606401610a01565b611e1d87613a99565b8751600090815261012f602090815260408083209390935589518351918201909352908152611e4d918791613b18565b60405163e3638ea360e01b81526001600160a01b0382169063e3638ea390611e79908a90600401615815565b600060405180830381600087803b158015611e9357600080fd5b505af1158015611ea7573d6000803e3d6000fd5b50505060c0880151611ee891506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169088908490613b4b565b61014087015115611f9157611f9186826001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f5991906156fa565b6101408a01516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190613b4b565b6101208701511561203a5761203a86826001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fde573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200291906156fa565b6101208a01516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190613b4b565b61012d5460e088015161207f916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116928a929190911690613b4b565b60008761010001511180156121075750816001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f191906156fa565b6001600160a01b0316866001600160a01b031614155b156121aa576121aa86836001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa15801561214e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217291906156fa565b6101008a01516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190613b4b565b816001600160a01b03167f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b886040516121e39190615815565b60405180910390a250509351949350505050565b6121ff6139b1565b426122126101c083016101a08401615969565b64ffffffffff1611156122605760405162461bcd60e51b8152602060048201526016602482015275141bdb1a58de481b9bdd08195e1c1a5c9959081e595d60521b6044820152606401610a01565b610d2861227236839003830183615984565b60006001613cf7565b600080516020615c108339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b15801561230057600080fd5b505afa158015612314573d6000803e3d6000fd5b5050506001600160a01b038416600090815261012e602052604081209150815460ff1660038111156123485761234861510b565b146123665760405163cf9a96f360e01b815260040160405180910390fd5b306001600160a01b0316846001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d291906156fa565b6001600160a01b0316146123f957604051630fdee24360e11b815260040160405180910390fd5b600183600381111561240d5761240d61510b565b14801561248b57506040516301ffc9a760e01b81526001600160a01b038516906301ffc9a79061244890639077062160e01b906004016159a1565b602060405180830381865afa158015612465573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248991906159b6565b155b80612523575060038360038111156124a5576124a561510b565b14801561252357506040516301ffc9a760e01b81526001600160a01b038516906301ffc9a7906124e090630e72532960e11b906004016159a1565b602060405180830381865afa1580156124fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252191906159b6565b155b806125bb5750600283600381111561253d5761253d61510b565b1480156125bb57506040516301ffc9a760e01b81526001600160a01b038516906301ffc9a7906125789063da40804f60e01b906004016159a1565b602060405180830381865afa158015612595573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b991906159b6565b155b156125dd57838360405163502c9a5f60e01b8152600401610a019291906159d3565b8054600160ff198216811783558491839161ffff199091161761010083600381111561260b5761260b61510b565b021790555060038360038111156126245761262461510b565b036127d15760008490506000816001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561266e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269291906156fa565b90506001600160a01b038116156126ff576040516338ea38a760e21b81526001600160a01b03838116600483015282169063e3a8e29c90602401600060405180830381600087803b1580156126e657600080fd5b505af11580156126fa573d6000803e3d6000fd5b505050505b816001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561273d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276191906156fa565b90506001600160a01b038116156127ce576040516338ea38a760e21b81526001600160a01b03838116600483015282169063e3a8e29c90602401600060405180830381600087803b1580156127b557600080fd5b505af11580156127c9573d6000803e3d6000fd5b505050505b50505b836001600160a01b03167ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef84600160405161280d929190615943565b60405180910390a250505050565b600080516020615c108339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b1580156128a057600080fd5b505afa1580156128b4573d6000803e3d6000fd5b505050506001600160a01b038216600090815261012e602052604090206002815460ff1660038111156128e9576128e961510b565b1461290757604051635c92b23960e11b815260040160405180910390fd5b60018154610100900460ff1660038111156129245761292461510b565b03612a2457826001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061298b9190615824565b15612a1f578060000160019054906101000a900460ff16836001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a049190615824565b604051631d0ec0ab60e01b8152600401610a019291906159ec565b612d7e565b60028154610100900460ff166003811115612a4157612a4161510b565b03612afd57826001600160a01b0316637ff8bf256040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aa89190615824565b15612a1f578060000160019054906101000a900460ff16836001600160a01b0316637ff8bf256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e0573d6000803e3d6000fd5b60038154610100900460ff166003811115612b1a57612b1a61510b565b03612d7e576000839050806001600160a01b03166326ccbd226040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b869190615824565b15612bdb578160000160019054906101000a900460ff16816001600160a01b03166326ccbd226040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e0573d6000803e3d6000fd5b6000816001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c3f91906156fa565b90506001600160a01b03811615612cac576040516376c7fc5560e01b81526001600160a01b0383811660048301528216906376c7fc5590602401600060405180830381600087803b158015612c9357600080fd5b505af1158015612ca7573d6000803e3d6000fd5b505050505b816001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0e91906156fa565b90506001600160a01b03811615612d7b576040516376c7fc5560e01b81526001600160a01b0383811660048301528216906376c7fc5590602401600060405180830381600087803b158015612d6257600080fd5b505af1158015612d76573d6000803e3d6000fd5b505050505b50505b80546040516001600160a01b038516917ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef91612dc591610100900460ff1690600090615943565b60405180910390a250506001600160a01b0316600090815261012e60205260409020805461ffff19169055565b60006001600160a01b038216612e5c5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610a01565b506001600160a01b0316600090815260fe602052604090205490565b612e806139b1565b611525612e9236849003840184615984565b826000613cf7565b600080516020615c578339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015612f1f57600080fd5b505afa158015612f33573d6000803e3d6000fd5b50505050610d28614037565b612f476139b1565b60005b81811015610c165742838383818110612f6557612f65615a03565b90506101c002016101a0016020810190612f7f9190615969565b64ffffffffff161115612fcd5760405162461bcd60e51b8152602060048201526016602482015275141bdb1a58de481b9bdd08195e1c1a5c9959081e595d60521b6044820152606401610a01565b612ff9838383818110612fe257612fe2615a03565b90506101c002018036038101906122729190615984565b8061300381615a19565b915050612f4a565b606060fc80546108e5906155e1565b611525338383614074565b61302f3383613436565b61304b5760405162461bcd60e51b8152600401610a0190615615565b610ad984848484614143565b60006130846bffffffffffffffffffffffff83166bffffffffffffffffffffffff19606086901b16615a32565b9392505050565b606061309682613369565b60006130a0614176565b905060008151116130c05760405180602001604052806000815250613084565b806130ca84614186565b6040516020016130db929190615a45565b6040516020818303038152906040529392505050565b600080516020615c108339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b15801561317657600080fd5b505afa15801561318a573d6000803e3d6000fd5b5050505061152582614219565b60006131a16139b1565b6131ac8360016142a2565b6001600160a01b03831663f3fef3a3336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044016020604051808303816000875af1158015613209573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130849190615824565b6132356139b1565b61152561324736849003840184615984565b82613253576000613259565b83602001355b6000613cf7565b60006001600160e01b031982166380ac58cd60e01b148061329157506001600160e01b03198216635b5e139f60e01b145b806108d057506301ffc9a760e01b6001600160e01b03198316146108d0565b600054610100900460ff166132d75760405162461bcd60e51b8152600401610a0190615a74565b565b600054610100900460ff166133005760405162461bcd60e51b8152600401610a0190615a74565b6115258282614302565b600054610100900460ff166133315760405162461bcd60e51b8152600401610a0190615a74565b6132d7614342565b600054610100900460ff166133605760405162461bcd60e51b8152600401610a0190615a74565b610d2881614219565b600081815260fd60205260409020546001600160a01b0316610d285760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610a01565b600081815260ff6020526040902080546001600160a01b0319166001600160a01b03841690811790915581906133fd82611c9d565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061344283611c9d565b9050806001600160a01b0316846001600160a01b0316148061348a57506001600160a01b038082166000908152610100602090815260408083209388168352929052205460ff165b806114605750836001600160a01b03166134a384610adf565b6001600160a01b031614949350505050565b826001600160a01b03166134c882611c9d565b6001600160a01b0316146134ee5760405162461bcd60e51b8152600401610a0190615abf565b6001600160a01b0382166135505760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610a01565b61355d8383836001614375565b826001600160a01b031661357082611c9d565b6001600160a01b0316146135965760405162461bcd60e51b8152600401610a0190615abf565b600081815260ff6020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260fe855283862080546000190190559087168086528386208054600101905586865260fd90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600080516020615c57833981519152600080516020615c108339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b1580156136c357600080fd5b505afa1580156136d7573d6000803e3d6000fd5b5050505060008390507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015613748573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061376c91906156fa565b6001600160a01b03161461379357604051630f13081760e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381f91906156fa565b6001600160a01b031614610ad9576040516324a41b4360e11b815260040160405180910390fd5b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561387957610c1683614382565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156138d3575060408051601f3d908101601f191682019092526138d091810190615824565b60015b6139365760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610a01565b600080516020615bf083398151915281146139a55760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610a01565b50610c1683838361441e565b60335460ff16156132d75760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610a01565b805115801590613a1f57508051600090815261012f6020526040902054613a1d82613a99565b145b610d285760405162461bcd60e51b815260206004820152601060248201526f141bdb1a58de481b9bdd08199bdd5b9960821b6044820152606401610a01565b6001613a6a8383614443565b6003811115613a7b57613a7b61510b565b1461152557604051630422f25f60e01b815260040160405180910390fd5b600081604051602001613aac9190615815565b60408051601f198184030181529190528051602090910120905080613b135760405162461bcd60e51b815260206004820152601860248201527f506f6c6963793a20686173682063616e6e6f74206265203000000000000000006044820152606401610a01565b919050565b613b2283836144b6565b613b2f600084848461464f565b610c165760405162461bcd60e51b8152600401610a0190615b04565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ad990859061474d565b6000613bb083611c9d565b90506001600160a01b0381163b613bc657505050565b613bd781635ee0c7dd60e01b614822565b613be057505050565b60006001600160a01b038216635ee0c7dd336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101879052606481018690526084016020604051808303816000875af1158015613c4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c709190615b56565b90506001600160e01b03198116635ee0c7dd60e01b14610ad957806040516381784a5160e01b8152600401610a0191906159a1565b613cad61483e565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b613d00836139f7565b61016083015181158015613d1d57506001600160a01b0381163314155b15613d3b57604051634ace04f960e01b815260040160405180910390fd5b821580613d53575042846101a0015164ffffffffff16115b613d9f5760405162461bcd60e51b815260206004820152601860248201527f43616e277420706179206578706972656420706f6c69637900000000000000006044820152606401610a01565b613daa8160026142a2565b8360200151831115613df75760405162461bcd60e51b81526020600482015260166024820152751c185e5bdd5d080f881c1bdb1a58de4b9c185e5bdd5d60521b6044820152606401610a01565b600080841190506000826001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e6291906156fa565b9050613e6f8160036142a2565b8551600090815261012f60205260408120558115613f01576000613e968760000151611c9d565b604051639d8c5ee760e01b81529091506001600160a01b03831690639d8c5ee790613ec99084908b908b90600401615b73565b600060405180830381600087803b158015613ee357600080fd5b505af1158015613ef7573d6000803e3d6000fd5b5050505050613f60565b60405163c7a9c70d60e01b81526001600160a01b0382169063c7a9c70d90613f2d908990600401615815565b600060405180830381600087803b158015613f4757600080fd5b505af1158015613f5b573d6000803e3d6000fd5b505050505b6020860151604051636a448ef160e01b815260048101919091526001600160a01b03841690636a448ef190602401600060405180830381600087803b158015613fa857600080fd5b505af1158015613fbc573d6000803e3d6000fd5b5050505085600001518661016001516001600160a01b03167f54f4a270ea08f88dc23b2520d6b063fecb24d956c4496f447926d736338f545e8760405161400591815260200190565b60405180910390a3841561402457855161401f9086614887565b61402f565b855161402f90614987565b505050505050565b61403f6139b1565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613cda3390565b816001600160a01b0316836001600160a01b0316036140d55760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610a01565b6001600160a01b0383811660008181526101006020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61414e8484846134b5565b61415a8484848461464f565b610ad95760405162461bcd60e51b8152600401610a0190615b04565b606061013080546108e5906155e1565b6060600061419383614a83565b600101905060008167ffffffffffffffff8111156141b3576141b3614f0e565b6040519080825280601f01601f1916602001820160405280156141dd576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846141e757509392505050565b6001600160a01b038116614240576040516307a2ee8b60e11b815260040160405180910390fd5b61012d80546001600160a01b0319166001600160a01b038316179055600161012d546040516001600160a01b0390911681527fb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f9060200160405180910390a250565b60006142ae8383614443565b905060018160038111156142c4576142c461510b565b141580156142e4575060028160038111156142e1576142e161510b565b14155b15610c165760405163d08ef1ff60e01b815260040160405180910390fd5b600054610100900460ff166143295760405162461bcd60e51b8152600401610a0190615a74565b60fb6143358382615883565b5060fc610c168282615883565b600054610100900460ff166143695760405162461bcd60e51b8152600401610a0190615a74565b6033805460ff19169055565b61437d6139b1565b610ad9565b6001600160a01b0381163b6143ef5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610a01565b600080516020615bf083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61442783614b5b565b6000825111806144345750805b15610c1657610ad98383614b9b565b6001600160a01b038216600090815261012e6020526040812082600381111561446e5761446e61510b565b8154610100900460ff1660038111156144895761448961510b565b146144ab57838360405163502c9a5f60e01b8152600401610a019291906159d3565b5460ff169392505050565b6001600160a01b03821661450c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610a01565b600081815260fd60205260409020546001600160a01b0316156145715760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a01565b61457f600083836001614375565b600081815260fd60205260409020546001600160a01b0316156145e45760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a01565b6001600160a01b038216600081815260fe602090815260408083208054600101905584835260fd90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b1561474557604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290614693903390899088908890600401615ba0565b6020604051808303816000875af19250505080156146ce575060408051601f3d908101601f191682019092526146cb91810190615b56565b60015b61472b573d8080156146fc576040519150601f19603f3d011682016040523d82523d6000602084013e614701565b606091505b5080516000036147235760405162461bcd60e51b8152600401610a0190615b04565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611460565b506001611460565b60006147a2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614bc09092919063ffffffff16565b90508051600014806147c35750808060200190518101906147c391906159b6565b610c165760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610a01565b600061482d83614bcf565b801561308457506130848383614c02565b60335460ff166132d75760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610a01565b600061489283611c9d565b90506001600160a01b0381163b6148a857505050565b6148b981633ece0a8960e01b614822565b6148c257505050565b60006001600160a01b03821663d6281d3e336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101879052606481018690526084016020604051808303816000875af115801561492e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149529190615b56565b90506001600160e01b03198116636b140e9f60e11b14610ad957806040516381784a5160e01b8152600401610a0191906159a1565b600061499282611c9d565b90506001600160a01b0381163b6149a7575050565b6149b881633ece0a8960e01b614822565b6149c0575050565b6001600160a01b03811663e8e617b7620249f0336040516001600160e01b031960e085901b1681526001600160a01b0390911660048201523060248201526044810186905260640160206040518083038160008887f193505050508015614a44575060408051601f3d908101601f19168201909252614a4191810190615b56565b60015b610c16576040516001600160a01b038216815282907f6ce8016f81523f240956bca9a698e643d09e84e7d0e931470b1016baf1027bd0906020016119a2565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310614ac25772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310614aee576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310614b0c57662386f26fc10000830492506010015b6305f5e1008310614b24576305f5e100830492506008015b6127108310614b3857612710830492506004015b60648310614b4a576064830492506002015b600a83106108d05760010192915050565b614b6481614382565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606130848383604051806060016040528060278152602001615c3060279139614c96565b60606114608484600085614d0e565b6000614be2826301ffc9a760e01b614c02565b80156108d05750614bfb826001600160e01b0319614c02565b1592915050565b6000806301ffc9a760e01b83604051602401614c1e91906159a1565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090506000806000602060008551602087018a617530fa92503d91506000519050828015614c7f575060208210155b8015614c8b5750600081115b979650505050505050565b6060600080856001600160a01b031685604051614cb39190615bd3565b600060405180830381855af49150503d8060008114614cee576040519150601f19603f3d011682016040523d82523d6000602084013e614cf3565b606091505b5091509150614d0486838387614dda565b9695505050505050565b606082471015614d6f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610a01565b600080866001600160a01b03168587604051614d8b9190615bd3565b60006040518083038185875af1925050503d8060008114614dc8576040519150601f19603f3d011682016040523d82523d6000602084013e614dcd565b606091505b5091509150614c8b878383875b60608315614e49578251600003614e42576001600160a01b0385163b614e425760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a01565b5081611460565b6114608383815115614e5e5781518083602001fd5b8060405162461bcd60e51b8152600401610a019190614efb565b6001600160e01b031981168114610d2857600080fd5b600060208284031215614ea057600080fd5b813561308481614e78565b60005b83811015614ec6578181015183820152602001614eae565b50506000910152565b60008151808452614ee7816020860160208601614eab565b601f01601f19169290920160200192915050565b6020815260006130846020830184614ecf565b634e487b7160e01b600052604160045260246000fd5b6040516101c0810167ffffffffffffffff81118282101715614f4857614f48614f0e565b60405290565b600082601f830112614f5f57600080fd5b813567ffffffffffffffff80821115614f7a57614f7a614f0e565b604051601f8301601f19908116603f01168101908282118183101715614fa257614fa2614f0e565b81604052838152866020858801011115614fbb57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6001600160a01b0381168114610d2857600080fd5b60008060006060848603121561500557600080fd5b833567ffffffffffffffff8082111561501d57600080fd5b61502987838801614f4e565b9450602086013591508082111561503f57600080fd5b5061504c86828701614f4e565b925050604084013561505d81614fdb565b809150509250925092565b60006020828403121561507a57600080fd5b5035919050565b6000806040838503121561509457600080fd5b823561509f81614fdb565b946020939093013593505050565b6000806000606084860312156150c257600080fd5b83356150cd81614fdb565b925060208401356150dd81614fdb565b929592945050506040919091013590565b60006020828403121561510057600080fd5b813561308481614fdb565b634e487b7160e01b600052602160045260246000fd5b60048110610d2857634e487b7160e01b600052602160045260246000fd5b6020810161514c83615121565b91905290565b8035613b1381614fdb565b803564ffffffffff81168114613b1357600080fd5b60006101c0828403121561518557600080fd5b61518d614f24565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e082015261010080830135818301525061012080830135818301525061014080830135818301525061016061520b818401615152565b9082015261018061521d83820161515d565b908201526101a061522f83820161515d565b9082015292915050565b80356bffffffffffffffffffffffff81168114613b1357600080fd5b6000806000806103c0858703121561526c57600080fd5b6152768686615172565b9350615286866101c08701615172565b925061038085013561529781614fdb565b91506152a66103a08601615239565b905092959194509250565b600080604083850312156152c457600080fd5b82356152cf81614fdb565b9150602083013567ffffffffffffffff8111156152eb57600080fd5b6152f785828601614f4e565b9150509250929050565b60006020828403121561531357600080fd5b813567ffffffffffffffff81111561532a57600080fd5b61146084828501614f4e565b60048110610d2857600080fd5b6000806040838503121561535657600080fd5b823561536181614fdb565b9150602083013561537181615336565b809150509250929050565b600080600080610220858703121561539357600080fd5b61539d8686615172565b93506101c08501356153ae81614fdb565b92506101e08501356153bf81614fdb565b91506152a66102008601615239565b60006101c082840312156153e157600080fd5b50919050565b60006101c082840312156153fa57600080fd5b61308483836153ce565b6000806101e0838503121561541857600080fd5b61542284846153ce565b946101c0939093013593505050565b6000806020838503121561544457600080fd5b823567ffffffffffffffff8082111561545c57600080fd5b818501915085601f83011261547057600080fd5b81358181111561547f57600080fd5b8660206101c08302850101111561549557600080fd5b60209290920196919550909350505050565b8015158114610d2857600080fd5b600080604083850312156154c857600080fd5b82356154d381614fdb565b91506020830135615371816154a7565b600080600080608085870312156154f957600080fd5b843561550481614fdb565b9350602085013561551481614fdb565b925060408501359150606085013567ffffffffffffffff81111561553757600080fd5b61554387828801614f4e565b91505092959194509250565b6000806040838503121561556257600080fd5b823561556d81614fdb565b915061557b60208401615239565b90509250929050565b6000806040838503121561559757600080fd5b82356155a281614fdb565b9150602083013561537181614fdb565b6000806101e083850312156155c657600080fd5b6155d084846153ce565b91506101c0830135615371816154a7565b600181811c908216806155f557607f821691505b6020821081036153e157634e487b7160e01b600052602260045260246000fd5b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60006020828403121561570c57600080fd5b815161308481614fdb565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e0830152610100808201518184015250610120808201518184015250610140808201518184015250610160808201516157a0828501826001600160a01b03169052565b50506101808181015164ffffffffff81168483015250506101a08181015164ffffffffff811684830152610ad9565b61038081016157de8285615717565b6130846101c0830184615717565b634e487b7160e01b600052601160045260246000fd5b818103818111156108d0576108d06157ec565b6101c081016108d08284615717565b60006020828403121561583657600080fd5b5051919050565b601f821115610c1657600081815260208120601f850160051c810160208610156158645750805b601f850160051c820191505b8181101561402f57828155600101615870565b815167ffffffffffffffff81111561589d5761589d614f0e565b6158b1816158ab84546155e1565b8461583d565b602080601f8311600181146158e657600084156158ce5750858301515b600019600386901b1c1916600185901b17855561402f565b600085815260208120601f198616915b82811015615915578886015182559484019460019091019084016158f6565b50858210156159335787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040810161595084615121565b83825261595c83615121565b8260208301529392505050565b60006020828403121561597b57600080fd5b6130848261515d565b60006101c0828403121561599757600080fd5b6130848383615172565b6001600160e01b031991909116815260200190565b6000602082840312156159c857600080fd5b8151613084816154a7565b6001600160a01b03831681526040810161595c83615121565b604081016159f984615121565b9281526020015290565b634e487b7160e01b600052603260045260246000fd5b600060018201615a2b57615a2b6157ec565b5060010190565b808201808211156108d0576108d06157ec565b60008351615a57818460208801614eab565b835190830190615a6b818360208801614eab565b01949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600060208284031215615b6857600080fd5b815161308481614e78565b6001600160a01b03841681526102008101615b916020830185615717565b826101e0830152949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090614d0490830184614ecf565b60008251615be5818460208701614eab565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212207bec76ac01a477aae48ee4cb156913fb71820f48dcf1320fef3499298e2af87f64736f6c63430008100033",
1772
- "deployedBytecode": "0x6080604052600436106102675760003560e01c80636769a76f1161014457806395d89b41116100b6578063e5a6b10f1161007a578063e5a6b10f146107ab578063e985e9c5146107de578063f0f4426014610828578063f3fef3a314610848578063f67b2bad14610868578063ffa600e31461088a57600080fd5b806395d89b4114610716578063a22cb4651461072b578063b88d4fde1461074b578063c016f88a1461076b578063c87b56dd1461078b57600080fd5b806371907f171161010857806371907f1714610630578063792da09e146106635780637a702b3c1461069157806382afd23b146106b15780638456cb59146106e15780638c916d46146106f657600080fd5b80636769a76f146105905780636af6f1ef146105b05780636b8734e7146105d05780636f86c897146105f057806370a082311461061057600080fd5b806342842e0e116101dd57806355f804b3116101a157806355f804b3146104c55780635b494dd5146104e55780635c975abb146105195780635fcbf4451461053157806361d027b3146105515780636352211e1461057057600080fd5b806342842e0e1461042957806347e7ef24146104495780634a47a3e0146104695780634f1ef2861461049d57806352d1902d146104b057600080fd5b806323b872dd1161022f57806323b872dd1461033d57806324ea54f41461035d57806333d6157a1461038d5780633659cfe6146103d45780633ed7c1ae146103f45780633f4ba83a1461041457600080fd5b806301ffc9a71461026c57806306fdde03146102a1578063077f224a146102c3578063081812fc146102e5578063095ea7b31461031d575b600080fd5b34801561027857600080fd5b5061028c610287366004614e8e565b6108aa565b60405190151581526020015b60405180910390f35b3480156102ad57600080fd5b506102b66108d6565b6040516102989190614efb565b3480156102cf57600080fd5b506102e36102de366004614ff0565b610968565b005b3480156102f157600080fd5b50610305610300366004615068565b610adf565b6040516001600160a01b039091168152602001610298565b34801561032957600080fd5b506102e3610338366004615081565b610b06565b34801561034957600080fd5b506102e36103583660046150ad565b610c1b565b34801561036957600080fd5b5061037f600080516020615c5783398151915281565b604051908152602001610298565b34801561039957600080fd5b506103c76103a83660046150ee565b6001600160a01b0316600090815261012e602052604090205460ff1690565b604051610298919061513f565b3480156103e057600080fd5b506102e36103ef3660046150ee565b610c4c565b34801561040057600080fd5b5061037f61040f366004615255565b610d2b565b34801561042057600080fd5b506102e3611468565b34801561043557600080fd5b506102e36104443660046150ad565b611529565b34801561045557600080fd5b506102e3610464366004615081565b611544565b34801561047557600080fd5b5061037f7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b6102e36104ab3660046152b1565b611734565b3480156104bc57600080fd5b5061037f611800565b3480156104d157600080fd5b506102e36104e0366004615301565b6118b3565b3480156104f157600080fd5b5061037f7f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b34801561052557600080fd5b5060335460ff1661028c565b34801561053d57600080fd5b506102e361054c366004615343565b6119ae565b34801561055d57600080fd5b5061012d546001600160a01b0316610305565b34801561057c57600080fd5b5061030561058b366004615068565b611c9d565b34801561059c57600080fd5b5061037f6105ab36600461537c565b611cfd565b3480156105bc57600080fd5b506102e36105cb3660046153e7565b6121f7565b3480156105dc57600080fd5b506102e36105eb366004615343565b61227b565b3480156105fc57600080fd5b506102e361060b3660046150ee565b61281b565b34801561061c57600080fd5b5061037f61062b3660046150ee565b612df2565b34801561063c57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610305565b34801561066f57600080fd5b5061037f61067e366004615068565b600090815261012f602052604090205490565b34801561069d57600080fd5b506102e36106ac366004615404565b612e78565b3480156106bd57600080fd5b5061028c6106cc366004615068565b600090815261012f6020526040902054151590565b3480156106ed57600080fd5b506102e3612e9a565b34801561070257600080fd5b506102e3610711366004615431565b612f3f565b34801561072257600080fd5b506102b661300b565b34801561073757600080fd5b506102e36107463660046154b5565b61301a565b34801561075757600080fd5b506102e36107663660046154e3565b613025565b34801561077757600080fd5b5061037f61078636600461554f565b613057565b34801561079757600080fd5b506102b66107a6366004615068565b61308b565b3480156107b757600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610305565b3480156107ea57600080fd5b5061028c6107f9366004615584565b6001600160a01b0391821660009081526101006020908152604080832093909416825291909152205460ff1690565b34801561083457600080fd5b506102e36108433660046150ee565b6130f1565b34801561085457600080fd5b5061037f610863366004615081565b613197565b34801561087457600080fd5b5061037f600080516020615c1083398151915281565b34801561089657600080fd5b506102e36108a53660046155b2565b61322d565b60006108b582613260565b806108d057506001600160e01b0319821663019c676f60e31b145b92915050565b606060fb80546108e5906155e1565b80601f0160208091040260200160405190810160405280929190818152602001828054610911906155e1565b801561095e5780601f106109335761010080835404028352916020019161095e565b820191906000526020600020905b81548152906001019060200180831161094157829003601f168201915b5050505050905090565b600054610100900460ff16158080156109885750600054600160ff909116105b806109a25750303b1580156109a2575060005460ff166001145b610a0a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610a2d576000805461ff0019166101001790555b8351600003610a4e57604051620beefb60e01b815260040160405180910390fd5b8251600003610a70576040516343b47bcb60e01b815260040160405180910390fd5b610a786132b0565b610a8284846132d9565b610a8a61330a565b610a9382613339565b8015610ad9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6000610aea82613369565b50600090815260ff60205260409020546001600160a01b031690565b6000610b1182611c9d565b9050806001600160a01b0316836001600160a01b031603610b7e5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610a01565b336001600160a01b0382161480610b9a5750610b9a81336107f9565b610c0c5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610a01565b610c1683836133c8565b505050565b610c253382613436565b610c415760405162461bcd60e51b8152600401610a0190615615565b610c168383836134b5565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c945760405162461bcd60e51b8152600401610a0190615662565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610cdd600080516020615bf0833981519152546001600160a01b031690565b6001600160a01b031614610d035760405162461bcd60e51b8152600401610a01906156ae565b610d0c81613626565b60408051600080825260208201909252610d2891839190613846565b50565b6000610d356139b1565b610d3e856139f7565b6101608501516001600160a01b0381163314610d6d57604051634ace04f960e01b815260040160405180910390fd5b610d78816002613a5e565b6000816001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc91906156fa565b9050610de9816003613a5e565b4264ffffffffff16876101a0015164ffffffffff1611610e435760405162461bcd60e51b815260206004820152601560248201527413db19081c1bdb1a58de481a5cc8195e1c1a5c9959605a1b6044820152606401610a01565b85610180015164ffffffffff1687610180015164ffffffffff1614610ec15760405162461bcd60e51b815260206004820152602e60248201527f426f746820706f6c6963696573206d7573742068617665207468652073616d6560448201526d207374617274696e67206461746560901b6064820152608401610a01565b8560200151876020015111158015610ee157508560c001518760c0015111155b8015610ef557508560e001518760e0015111155b8015610f0b575085610120015187610120015111155b8015610f21575085610140015187610140015111155b8015610f3557508560600151876060015111155b8015610f4957508560800151876080015111155b8015610f5f575085610100015187610100015111155b8015610f835750856101a0015164ffffffffff16876101a0015164ffffffffff1611155b8015610fa557508561016001516001600160a01b0316826001600160a01b0316145b61100d5760405162461bcd60e51b815260206004820152603360248201527f4e657720706f6c696379206d7573742062652067726561746572206f7220657160448201527275616c207468616e206f6c6420706f6c69637960681b6064820152608401610a01565b6110178285613057565b808752600090815261012f60205260409020541561106f5760405162461bcd60e51b8152602060048201526015602482015274506f6c69637920616c72656164792065786973747360581b6044820152606401610a01565b61107886613a99565b8651600090815261012f6020526040812091909155875161109890611c9d565b90506110b881886000015160405180602001604052806000815250613b18565b8751600090815261012f602052604080822091909155516355c1da5f60e11b81526001600160a01b0383169063ab83b4be906110fa908b908b906004016157cf565b600060405180830381600087803b15801561111457600080fd5b505af1158015611128573d6000803e3d6000fd5b5050505060008860c001518860c001516111429190615802565b9050801561117f5761117f6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016888584613b4b565b8861014001518861014001516111959190615802565b905080156112355761123587846001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120391906156fa565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016919084613b4b565b88610120015188610120015161124b9190615802565b905080156112955761129587846001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111df573d6000803e3d6000fd5b8860e001518860e001516112a99190615802565b905080156112ee5761012d546112ee906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116918a911684613b4b565b8861010001518861010001516113049190615802565b90506000811180156113895750836001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa15801561134f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137391906156fa565b6001600160a01b0316876001600160a01b031614155b156113d0576113d087856001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111df573d6000803e3d6000fd5b836001600160a01b03167f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b896040516114099190615815565b60405180910390a2875189516040516001600160a01b038716907f4ff4ac703cb703b7ea535d47e65e64b4cabf11b3e2eb41f152dab17971953add90600090a4885188516114579190613ba5565b50508551925050505b949350505050565b600080516020615c57833981519152600080516020615c108339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b15801561150557600080fd5b505afa158015611519573d6000803e3d6000fd5b50505050611525613ca5565b5050565b610c1683838360405180602001604052806000815250613025565b61154c6139b1565b611557826001613a5e565b6040516370a0823160e01b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e69190615824565b905061161d7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316338585613b4b565b6001600160a01b0383166347e7ef24336040516370a0823160e01b81526001600160a01b03878116600483015285917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015611697573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bb9190615824565b6116c59190615802565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611710573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad99190615824565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361177c5760405162461bcd60e51b8152600401610a0190615662565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117c5600080516020615bf0833981519152546001600160a01b031690565b6001600160a01b0316146117eb5760405162461bcd60e51b8152600401610a01906156ae565b6117f482613626565b61152582826001613846565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146118a05760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610a01565b50600080516020615bf083398151915290565b7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c06001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b15801561194a57600080fd5b505afa15801561195e573d6000803e3d6000fd5b505050508161013090816119729190615883565b506040513381526004907fb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f906020015b60405180910390a25050565b600080516020615c57833981519152600080516020615c108339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b158015611a4b57600080fd5b505afa158015611a5f573d6000803e3d6000fd5b5050506001600160a01b038516600090815261012e602052604081209150815460ff166003811115611a9357611a9361510b565b03611ab157604051637d91856360e01b815260040160405180910390fd5b6001846003811115611ac557611ac561510b565b1480611ae257506002846003811115611ae057611ae061510b565b145b15611b88576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad600080516020615c10833981519152336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015611b6b57600080fd5b505afa158015611b7f573d6000803e3d6000fd5b50505050611c25565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad600080516020615c57833981519152336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015611c0c57600080fd5b505afa158015611c20573d6000803e3d6000fd5b505050505b80548490829060ff19166001836003811115611c4357611c4361510b565b021790555080546040516001600160a01b038716917ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef91611c8e91610100900460ff16908890615943565b60405180910390a25050505050565b600081815260fd60205260408120546001600160a01b0316806108d05760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610a01565b6000611d076139b1565b6101608501516001600160a01b0381163314611d3657604051634ace04f960e01b815260040160405180910390fd5b611d41816002613a5e565b6000816001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da591906156fa565b9050611db2816003613a5e565b611dbc8285613057565b808852600090815261012f602052604090205415611e145760405162461bcd60e51b8152602060048201526015602482015274506f6c69637920616c72656164792065786973747360581b6044820152606401610a01565b611e1d87613a99565b8751600090815261012f602090815260408083209390935589518351918201909352908152611e4d918791613b18565b60405163e3638ea360e01b81526001600160a01b0382169063e3638ea390611e79908a90600401615815565b600060405180830381600087803b158015611e9357600080fd5b505af1158015611ea7573d6000803e3d6000fd5b50505060c0880151611ee891506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169088908490613b4b565b61014087015115611f9157611f9186826001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f5991906156fa565b6101408a01516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190613b4b565b6101208701511561203a5761203a86826001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fde573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200291906156fa565b6101208a01516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190613b4b565b61012d5460e088015161207f916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116928a929190911690613b4b565b60008761010001511180156121075750816001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f191906156fa565b6001600160a01b0316866001600160a01b031614155b156121aa576121aa86836001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa15801561214e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217291906156fa565b6101008a01516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190613b4b565b816001600160a01b03167f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b886040516121e39190615815565b60405180910390a250509351949350505050565b6121ff6139b1565b426122126101c083016101a08401615969565b64ffffffffff1611156122605760405162461bcd60e51b8152602060048201526016602482015275141bdb1a58de481b9bdd08195e1c1a5c9959081e595d60521b6044820152606401610a01565b610d2861227236839003830183615984565b60006001613cf7565b600080516020615c108339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b15801561230057600080fd5b505afa158015612314573d6000803e3d6000fd5b5050506001600160a01b038416600090815261012e602052604081209150815460ff1660038111156123485761234861510b565b146123665760405163cf9a96f360e01b815260040160405180910390fd5b306001600160a01b0316846001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d291906156fa565b6001600160a01b0316146123f957604051630fdee24360e11b815260040160405180910390fd5b600183600381111561240d5761240d61510b565b14801561248b57506040516301ffc9a760e01b81526001600160a01b038516906301ffc9a79061244890639077062160e01b906004016159a1565b602060405180830381865afa158015612465573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248991906159b6565b155b80612523575060038360038111156124a5576124a561510b565b14801561252357506040516301ffc9a760e01b81526001600160a01b038516906301ffc9a7906124e090630e72532960e11b906004016159a1565b602060405180830381865afa1580156124fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252191906159b6565b155b806125bb5750600283600381111561253d5761253d61510b565b1480156125bb57506040516301ffc9a760e01b81526001600160a01b038516906301ffc9a7906125789063da40804f60e01b906004016159a1565b602060405180830381865afa158015612595573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b991906159b6565b155b156125dd57838360405163502c9a5f60e01b8152600401610a019291906159d3565b8054600160ff198216811783558491839161ffff199091161761010083600381111561260b5761260b61510b565b021790555060038360038111156126245761262461510b565b036127d15760008490506000816001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561266e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269291906156fa565b90506001600160a01b038116156126ff576040516338ea38a760e21b81526001600160a01b03838116600483015282169063e3a8e29c90602401600060405180830381600087803b1580156126e657600080fd5b505af11580156126fa573d6000803e3d6000fd5b505050505b816001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561273d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276191906156fa565b90506001600160a01b038116156127ce576040516338ea38a760e21b81526001600160a01b03838116600483015282169063e3a8e29c90602401600060405180830381600087803b1580156127b557600080fd5b505af11580156127c9573d6000803e3d6000fd5b505050505b50505b836001600160a01b03167ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef84600160405161280d929190615943565b60405180910390a250505050565b600080516020615c108339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b1580156128a057600080fd5b505afa1580156128b4573d6000803e3d6000fd5b505050506001600160a01b038216600090815261012e602052604090206002815460ff1660038111156128e9576128e961510b565b1461290757604051635c92b23960e11b815260040160405180910390fd5b60018154610100900460ff1660038111156129245761292461510b565b03612a2457826001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061298b9190615824565b15612a1f578060000160019054906101000a900460ff16836001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a049190615824565b604051631d0ec0ab60e01b8152600401610a019291906159ec565b612d7e565b60028154610100900460ff166003811115612a4157612a4161510b565b03612afd57826001600160a01b0316637ff8bf256040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aa89190615824565b15612a1f578060000160019054906101000a900460ff16836001600160a01b0316637ff8bf256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e0573d6000803e3d6000fd5b60038154610100900460ff166003811115612b1a57612b1a61510b565b03612d7e576000839050806001600160a01b03166326ccbd226040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b869190615824565b15612bdb578160000160019054906101000a900460ff16816001600160a01b03166326ccbd226040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e0573d6000803e3d6000fd5b6000816001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c3f91906156fa565b90506001600160a01b03811615612cac576040516376c7fc5560e01b81526001600160a01b0383811660048301528216906376c7fc5590602401600060405180830381600087803b158015612c9357600080fd5b505af1158015612ca7573d6000803e3d6000fd5b505050505b816001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0e91906156fa565b90506001600160a01b03811615612d7b576040516376c7fc5560e01b81526001600160a01b0383811660048301528216906376c7fc5590602401600060405180830381600087803b158015612d6257600080fd5b505af1158015612d76573d6000803e3d6000fd5b505050505b50505b80546040516001600160a01b038516917ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef91612dc591610100900460ff1690600090615943565b60405180910390a250506001600160a01b0316600090815261012e60205260409020805461ffff19169055565b60006001600160a01b038216612e5c5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610a01565b506001600160a01b0316600090815260fe602052604090205490565b612e806139b1565b611525612e9236849003840184615984565b826000613cf7565b600080516020615c578339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015612f1f57600080fd5b505afa158015612f33573d6000803e3d6000fd5b50505050610d28614037565b612f476139b1565b60005b81811015610c165742838383818110612f6557612f65615a03565b90506101c002016101a0016020810190612f7f9190615969565b64ffffffffff161115612fcd5760405162461bcd60e51b8152602060048201526016602482015275141bdb1a58de481b9bdd08195e1c1a5c9959081e595d60521b6044820152606401610a01565b612ff9838383818110612fe257612fe2615a03565b90506101c002018036038101906122729190615984565b8061300381615a19565b915050612f4a565b606060fc80546108e5906155e1565b611525338383614074565b61302f3383613436565b61304b5760405162461bcd60e51b8152600401610a0190615615565b610ad984848484614143565b60006130846bffffffffffffffffffffffff83166bffffffffffffffffffffffff19606086901b16615a32565b9392505050565b606061309682613369565b60006130a0614176565b905060008151116130c05760405180602001604052806000815250613084565b806130ca84614186565b6040516020016130db929190615a45565b6040516020818303038152906040529392505050565b600080516020615c108339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b15801561317657600080fd5b505afa15801561318a573d6000803e3d6000fd5b5050505061152582614219565b60006131a16139b1565b6131ac8360016142a2565b6001600160a01b03831663f3fef3a3336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044016020604051808303816000875af1158015613209573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130849190615824565b6132356139b1565b61152561324736849003840184615984565b82613253576000613259565b83602001355b6000613cf7565b60006001600160e01b031982166380ac58cd60e01b148061329157506001600160e01b03198216635b5e139f60e01b145b806108d057506301ffc9a760e01b6001600160e01b03198316146108d0565b600054610100900460ff166132d75760405162461bcd60e51b8152600401610a0190615a74565b565b600054610100900460ff166133005760405162461bcd60e51b8152600401610a0190615a74565b6115258282614302565b600054610100900460ff166133315760405162461bcd60e51b8152600401610a0190615a74565b6132d7614342565b600054610100900460ff166133605760405162461bcd60e51b8152600401610a0190615a74565b610d2881614219565b600081815260fd60205260409020546001600160a01b0316610d285760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610a01565b600081815260ff6020526040902080546001600160a01b0319166001600160a01b03841690811790915581906133fd82611c9d565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061344283611c9d565b9050806001600160a01b0316846001600160a01b0316148061348a57506001600160a01b038082166000908152610100602090815260408083209388168352929052205460ff165b806114605750836001600160a01b03166134a384610adf565b6001600160a01b031614949350505050565b826001600160a01b03166134c882611c9d565b6001600160a01b0316146134ee5760405162461bcd60e51b8152600401610a0190615abf565b6001600160a01b0382166135505760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610a01565b61355d8383836001614375565b826001600160a01b031661357082611c9d565b6001600160a01b0316146135965760405162461bcd60e51b8152600401610a0190615abf565b600081815260ff6020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260fe855283862080546000190190559087168086528386208054600101905586865260fd90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600080516020615c57833981519152600080516020615c108339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b1580156136c357600080fd5b505afa1580156136d7573d6000803e3d6000fd5b5050505060008390507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015613748573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061376c91906156fa565b6001600160a01b03161461379357604051630f13081760e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381f91906156fa565b6001600160a01b031614610ad9576040516324a41b4360e11b815260040160405180910390fd5b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561387957610c1683614382565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156138d3575060408051601f3d908101601f191682019092526138d091810190615824565b60015b6139365760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610a01565b600080516020615bf083398151915281146139a55760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610a01565b50610c1683838361441e565b60335460ff16156132d75760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610a01565b805115801590613a1f57508051600090815261012f6020526040902054613a1d82613a99565b145b610d285760405162461bcd60e51b815260206004820152601060248201526f141bdb1a58de481b9bdd08199bdd5b9960821b6044820152606401610a01565b6001613a6a8383614443565b6003811115613a7b57613a7b61510b565b1461152557604051630422f25f60e01b815260040160405180910390fd5b600081604051602001613aac9190615815565b60408051601f198184030181529190528051602090910120905080613b135760405162461bcd60e51b815260206004820152601860248201527f506f6c6963793a20686173682063616e6e6f74206265203000000000000000006044820152606401610a01565b919050565b613b2283836144b6565b613b2f600084848461464f565b610c165760405162461bcd60e51b8152600401610a0190615b04565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ad990859061474d565b6000613bb083611c9d565b90506001600160a01b0381163b613bc657505050565b613bd781635ee0c7dd60e01b614822565b613be057505050565b60006001600160a01b038216635ee0c7dd336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101879052606481018690526084016020604051808303816000875af1158015613c4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c709190615b56565b90506001600160e01b03198116635ee0c7dd60e01b14610ad957806040516381784a5160e01b8152600401610a0191906159a1565b613cad61483e565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b613d00836139f7565b61016083015181158015613d1d57506001600160a01b0381163314155b15613d3b57604051634ace04f960e01b815260040160405180910390fd5b821580613d53575042846101a0015164ffffffffff16115b613d9f5760405162461bcd60e51b815260206004820152601860248201527f43616e277420706179206578706972656420706f6c69637900000000000000006044820152606401610a01565b613daa8160026142a2565b8360200151831115613df75760405162461bcd60e51b81526020600482015260166024820152751c185e5bdd5d080f881c1bdb1a58de4b9c185e5bdd5d60521b6044820152606401610a01565b600080841190506000826001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e6291906156fa565b9050613e6f8160036142a2565b8551600090815261012f60205260408120558115613f01576000613e968760000151611c9d565b604051639d8c5ee760e01b81529091506001600160a01b03831690639d8c5ee790613ec99084908b908b90600401615b73565b600060405180830381600087803b158015613ee357600080fd5b505af1158015613ef7573d6000803e3d6000fd5b5050505050613f60565b60405163c7a9c70d60e01b81526001600160a01b0382169063c7a9c70d90613f2d908990600401615815565b600060405180830381600087803b158015613f4757600080fd5b505af1158015613f5b573d6000803e3d6000fd5b505050505b6020860151604051636a448ef160e01b815260048101919091526001600160a01b03841690636a448ef190602401600060405180830381600087803b158015613fa857600080fd5b505af1158015613fbc573d6000803e3d6000fd5b5050505085600001518661016001516001600160a01b03167f54f4a270ea08f88dc23b2520d6b063fecb24d956c4496f447926d736338f545e8760405161400591815260200190565b60405180910390a3841561402457855161401f9086614887565b61402f565b855161402f90614987565b505050505050565b61403f6139b1565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613cda3390565b816001600160a01b0316836001600160a01b0316036140d55760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610a01565b6001600160a01b0383811660008181526101006020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61414e8484846134b5565b61415a8484848461464f565b610ad95760405162461bcd60e51b8152600401610a0190615b04565b606061013080546108e5906155e1565b6060600061419383614a83565b600101905060008167ffffffffffffffff8111156141b3576141b3614f0e565b6040519080825280601f01601f1916602001820160405280156141dd576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846141e757509392505050565b6001600160a01b038116614240576040516307a2ee8b60e11b815260040160405180910390fd5b61012d80546001600160a01b0319166001600160a01b038316179055600161012d546040516001600160a01b0390911681527fb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f9060200160405180910390a250565b60006142ae8383614443565b905060018160038111156142c4576142c461510b565b141580156142e4575060028160038111156142e1576142e161510b565b14155b15610c165760405163d08ef1ff60e01b815260040160405180910390fd5b600054610100900460ff166143295760405162461bcd60e51b8152600401610a0190615a74565b60fb6143358382615883565b5060fc610c168282615883565b600054610100900460ff166143695760405162461bcd60e51b8152600401610a0190615a74565b6033805460ff19169055565b61437d6139b1565b610ad9565b6001600160a01b0381163b6143ef5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610a01565b600080516020615bf083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61442783614b5b565b6000825111806144345750805b15610c1657610ad98383614b9b565b6001600160a01b038216600090815261012e6020526040812082600381111561446e5761446e61510b565b8154610100900460ff1660038111156144895761448961510b565b146144ab57838360405163502c9a5f60e01b8152600401610a019291906159d3565b5460ff169392505050565b6001600160a01b03821661450c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610a01565b600081815260fd60205260409020546001600160a01b0316156145715760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a01565b61457f600083836001614375565b600081815260fd60205260409020546001600160a01b0316156145e45760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a01565b6001600160a01b038216600081815260fe602090815260408083208054600101905584835260fd90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b1561474557604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290614693903390899088908890600401615ba0565b6020604051808303816000875af19250505080156146ce575060408051601f3d908101601f191682019092526146cb91810190615b56565b60015b61472b573d8080156146fc576040519150601f19603f3d011682016040523d82523d6000602084013e614701565b606091505b5080516000036147235760405162461bcd60e51b8152600401610a0190615b04565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611460565b506001611460565b60006147a2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614bc09092919063ffffffff16565b90508051600014806147c35750808060200190518101906147c391906159b6565b610c165760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610a01565b600061482d83614bcf565b801561308457506130848383614c02565b60335460ff166132d75760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610a01565b600061489283611c9d565b90506001600160a01b0381163b6148a857505050565b6148b981633ece0a8960e01b614822565b6148c257505050565b60006001600160a01b03821663d6281d3e336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101879052606481018690526084016020604051808303816000875af115801561492e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149529190615b56565b90506001600160e01b03198116636b140e9f60e11b14610ad957806040516381784a5160e01b8152600401610a0191906159a1565b600061499282611c9d565b90506001600160a01b0381163b6149a7575050565b6149b881633ece0a8960e01b614822565b6149c0575050565b6001600160a01b03811663e8e617b7620249f0336040516001600160e01b031960e085901b1681526001600160a01b0390911660048201523060248201526044810186905260640160206040518083038160008887f193505050508015614a44575060408051601f3d908101601f19168201909252614a4191810190615b56565b60015b610c16576040516001600160a01b038216815282907f6ce8016f81523f240956bca9a698e643d09e84e7d0e931470b1016baf1027bd0906020016119a2565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310614ac25772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310614aee576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310614b0c57662386f26fc10000830492506010015b6305f5e1008310614b24576305f5e100830492506008015b6127108310614b3857612710830492506004015b60648310614b4a576064830492506002015b600a83106108d05760010192915050565b614b6481614382565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606130848383604051806060016040528060278152602001615c3060279139614c96565b60606114608484600085614d0e565b6000614be2826301ffc9a760e01b614c02565b80156108d05750614bfb826001600160e01b0319614c02565b1592915050565b6000806301ffc9a760e01b83604051602401614c1e91906159a1565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090506000806000602060008551602087018a617530fa92503d91506000519050828015614c7f575060208210155b8015614c8b5750600081115b979650505050505050565b6060600080856001600160a01b031685604051614cb39190615bd3565b600060405180830381855af49150503d8060008114614cee576040519150601f19603f3d011682016040523d82523d6000602084013e614cf3565b606091505b5091509150614d0486838387614dda565b9695505050505050565b606082471015614d6f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610a01565b600080866001600160a01b03168587604051614d8b9190615bd3565b60006040518083038185875af1925050503d8060008114614dc8576040519150601f19603f3d011682016040523d82523d6000602084013e614dcd565b606091505b5091509150614c8b878383875b60608315614e49578251600003614e42576001600160a01b0385163b614e425760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a01565b5081611460565b6114608383815115614e5e5781518083602001fd5b8060405162461bcd60e51b8152600401610a019190614efb565b6001600160e01b031981168114610d2857600080fd5b600060208284031215614ea057600080fd5b813561308481614e78565b60005b83811015614ec6578181015183820152602001614eae565b50506000910152565b60008151808452614ee7816020860160208601614eab565b601f01601f19169290920160200192915050565b6020815260006130846020830184614ecf565b634e487b7160e01b600052604160045260246000fd5b6040516101c0810167ffffffffffffffff81118282101715614f4857614f48614f0e565b60405290565b600082601f830112614f5f57600080fd5b813567ffffffffffffffff80821115614f7a57614f7a614f0e565b604051601f8301601f19908116603f01168101908282118183101715614fa257614fa2614f0e565b81604052838152866020858801011115614fbb57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6001600160a01b0381168114610d2857600080fd5b60008060006060848603121561500557600080fd5b833567ffffffffffffffff8082111561501d57600080fd5b61502987838801614f4e565b9450602086013591508082111561503f57600080fd5b5061504c86828701614f4e565b925050604084013561505d81614fdb565b809150509250925092565b60006020828403121561507a57600080fd5b5035919050565b6000806040838503121561509457600080fd5b823561509f81614fdb565b946020939093013593505050565b6000806000606084860312156150c257600080fd5b83356150cd81614fdb565b925060208401356150dd81614fdb565b929592945050506040919091013590565b60006020828403121561510057600080fd5b813561308481614fdb565b634e487b7160e01b600052602160045260246000fd5b60048110610d2857634e487b7160e01b600052602160045260246000fd5b6020810161514c83615121565b91905290565b8035613b1381614fdb565b803564ffffffffff81168114613b1357600080fd5b60006101c0828403121561518557600080fd5b61518d614f24565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e082015261010080830135818301525061012080830135818301525061014080830135818301525061016061520b818401615152565b9082015261018061521d83820161515d565b908201526101a061522f83820161515d565b9082015292915050565b80356bffffffffffffffffffffffff81168114613b1357600080fd5b6000806000806103c0858703121561526c57600080fd5b6152768686615172565b9350615286866101c08701615172565b925061038085013561529781614fdb565b91506152a66103a08601615239565b905092959194509250565b600080604083850312156152c457600080fd5b82356152cf81614fdb565b9150602083013567ffffffffffffffff8111156152eb57600080fd5b6152f785828601614f4e565b9150509250929050565b60006020828403121561531357600080fd5b813567ffffffffffffffff81111561532a57600080fd5b61146084828501614f4e565b60048110610d2857600080fd5b6000806040838503121561535657600080fd5b823561536181614fdb565b9150602083013561537181615336565b809150509250929050565b600080600080610220858703121561539357600080fd5b61539d8686615172565b93506101c08501356153ae81614fdb565b92506101e08501356153bf81614fdb565b91506152a66102008601615239565b60006101c082840312156153e157600080fd5b50919050565b60006101c082840312156153fa57600080fd5b61308483836153ce565b6000806101e0838503121561541857600080fd5b61542284846153ce565b946101c0939093013593505050565b6000806020838503121561544457600080fd5b823567ffffffffffffffff8082111561545c57600080fd5b818501915085601f83011261547057600080fd5b81358181111561547f57600080fd5b8660206101c08302850101111561549557600080fd5b60209290920196919550909350505050565b8015158114610d2857600080fd5b600080604083850312156154c857600080fd5b82356154d381614fdb565b91506020830135615371816154a7565b600080600080608085870312156154f957600080fd5b843561550481614fdb565b9350602085013561551481614fdb565b925060408501359150606085013567ffffffffffffffff81111561553757600080fd5b61554387828801614f4e565b91505092959194509250565b6000806040838503121561556257600080fd5b823561556d81614fdb565b915061557b60208401615239565b90509250929050565b6000806040838503121561559757600080fd5b82356155a281614fdb565b9150602083013561537181614fdb565b6000806101e083850312156155c657600080fd5b6155d084846153ce565b91506101c0830135615371816154a7565b600181811c908216806155f557607f821691505b6020821081036153e157634e487b7160e01b600052602260045260246000fd5b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60006020828403121561570c57600080fd5b815161308481614fdb565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e0830152610100808201518184015250610120808201518184015250610140808201518184015250610160808201516157a0828501826001600160a01b03169052565b50506101808181015164ffffffffff81168483015250506101a08181015164ffffffffff811684830152610ad9565b61038081016157de8285615717565b6130846101c0830184615717565b634e487b7160e01b600052601160045260246000fd5b818103818111156108d0576108d06157ec565b6101c081016108d08284615717565b60006020828403121561583657600080fd5b5051919050565b601f821115610c1657600081815260208120601f850160051c810160208610156158645750805b601f850160051c820191505b8181101561402f57828155600101615870565b815167ffffffffffffffff81111561589d5761589d614f0e565b6158b1816158ab84546155e1565b8461583d565b602080601f8311600181146158e657600084156158ce5750858301515b600019600386901b1c1916600185901b17855561402f565b600085815260208120601f198616915b82811015615915578886015182559484019460019091019084016158f6565b50858210156159335787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040810161595084615121565b83825261595c83615121565b8260208301529392505050565b60006020828403121561597b57600080fd5b6130848261515d565b60006101c0828403121561599757600080fd5b6130848383615172565b6001600160e01b031991909116815260200190565b6000602082840312156159c857600080fd5b8151613084816154a7565b6001600160a01b03831681526040810161595c83615121565b604081016159f984615121565b9281526020015290565b634e487b7160e01b600052603260045260246000fd5b600060018201615a2b57615a2b6157ec565b5060010190565b808201808211156108d0576108d06157ec565b60008351615a57818460208801614eab565b835190830190615a6b818360208801614eab565b01949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600060208284031215615b6857600080fd5b815161308481614e78565b6001600160a01b03841681526102008101615b916020830185615717565b826101e0830152949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090614d0490830184614ecf565b60008251615be5818460208701614eab565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212207bec76ac01a477aae48ee4cb156913fb71820f48dcf1320fef3499298e2af87f64736f6c63430008100033",
1758
+ "bytecode": "0x60e060405230608052348015610013575f5ffd5b50604051615cfe380380615cfe83398101604081905261003291610172565b6001600160a01b0382166100595760405163a9f283c960e01b815260040160405180910390fd5b6001600160a01b0381166100805760405163559a03cd60e01b815260040160405180910390fd5b61008861009f565b6001600160a01b0391821660a0521660c0526101aa565b5f54610100900460ff161561010a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610159575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461016f575f5ffd5b50565b5f5f60408385031215610183575f5ffd5b825161018e8161015b565b602084015190925061019f8161015b565b809150509250929050565b60805160a05160c051615a6d6102915f395f8181610749015281816110c00152818161117401528181611228015281816114d001528181611542015281816115a301528181611dea01528181611e9301528181611f3a01528181611f79015281816120a5015261363c01525f81816105db015281816113ed0152818161182b0152818161191d01528181611a3301528181611acf015281816121b50152818161273701528181612d8c01528181612fcf015281816134fc015261358b01525f8181610bd001528181610c100152818161168e015281816116ce015261175b0152615a6d5ff3fe608060405260043610610254575f3560e01c80636769a76f1161013f57806395d89b41116100b3578063e5a6b10f11610078578063e5a6b10f1461073b578063e985e9c51461076d578063f0f44260146107b5578063f3fef3a3146107d4578063f67b2bad146107f3578063ffa600e314610813575f5ffd5b806395d89b41146106ab578063a22cb465146106bf578063b88d4fde146106de578063c016f88a146106fd578063c87b56dd1461071c575f5ffd5b806371907f171161010457806371907f17146105cd578063792da09e146105ff5780637a702b3c1461062b57806382afd23b1461064a5780638456cb59146106785780638c916d461461068c575f5ffd5b80636769a76f146105325780636af6f1ef146105515780636b8734e7146105705780636f86c8971461058f57806370a08231146105ae575f5ffd5b80633f4ba83a116101d657806352d1902d1161019b57806352d1902d1461048c57806355f804b3146104a05780635c975abb146104bf5780635fcbf445146104d657806361d027b3146104f55780636352211e14610513575f5ffd5b80633f4ba83a146103f457806342842e0e1461040857806347e7ef24146104275780634a47a3e0146104465780634f1ef28614610479575f5ffd5b806323b872dd1161021c57806323b872dd1461032457806324ea54f41461034357806333d6157a146103715780633659cfe6146103b65780633ed7c1ae146103d5575f5ffd5b806301ffc9a71461025857806306fdde031461028c578063077f224a146102ad578063081812fc146102ce578063095ea7b314610305575b5f5ffd5b348015610263575f5ffd5b50610277610272366004614ce3565b610832565b60405190151581526020015b60405180910390f35b348015610297575f5ffd5b506102a061085d565b6040516102839190614d2c565b3480156102b8575f5ffd5b506102cc6102c7366004614e21565b6108ed565b005b3480156102d9575f5ffd5b506102ed6102e8366004614e99565b610a5c565b6040516001600160a01b039091168152602001610283565b348015610310575f5ffd5b506102cc61031f366004614eb0565b610a81565b34801561032f575f5ffd5b506102cc61033e366004614eda565b610b95565b34801561034e575f5ffd5b506103635f516020615a185f395f51905f5281565b604051908152602001610283565b34801561037c575f5ffd5b506103a961038b366004614f18565b6001600160a01b03165f90815261012e602052604090205460ff1690565b6040516102839190614f63565b3480156103c1575f5ffd5b506102cc6103d0366004614f18565b610bc6565b3480156103e0575f5ffd5b506103636103ef366004615075565b610ca3565b3480156103ff575f5ffd5b506102cc6113c7565b348015610413575f5ffd5b506102cc610422366004614eda565b611482565b348015610432575f5ffd5b506102cc610441366004614eb0565b61149c565b348015610451575f5ffd5b506103637fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b6102cc6104873660046150ce565b611684565b348015610497575f5ffd5b5061036361174f565b3480156104ab575f5ffd5b506102cc6104ba36600461511b565b611800565b3480156104ca575f5ffd5b5060335460ff16610277565b3480156104e1575f5ffd5b506102cc6104f0366004615159565b6118f7565b348015610500575f5ffd5b5061012d546001600160a01b03166102ed565b34801561051e575f5ffd5b506102ed61052d366004614e99565b611bd5565b34801561053d575f5ffd5b5061036361054c366004615190565b611c34565b34801561055c575f5ffd5b506102cc61056b3660046151f6565b61211a565b34801561057b575f5ffd5b506102cc61058a366004615159565b61219d565b34801561059a575f5ffd5b506102cc6105a9366004614f18565b61271f565b3480156105b9575f5ffd5b506103636105c8366004614f18565b612ccf565b3480156105d8575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000006102ed565b34801561060a575f5ffd5b50610363610619366004614e99565b5f90815261012f602052604090205490565b348015610636575f5ffd5b506102cc610645366004615211565b612d53565b348015610655575f5ffd5b50610277610664366004614e99565b5f90815261012f6020526040902054151590565b348015610683575f5ffd5b506102cc612d74565b348015610697575f5ffd5b506102cc6106a636600461523c565b612e14565b3480156106b6575f5ffd5b506102a0612ed5565b3480156106ca575f5ffd5b506102cc6106d93660046152bb565b612ee4565b3480156106e9575f5ffd5b506102cc6106f83660046152e7565b612eef565b348015610708575f5ffd5b5061036361071736600461534f565b612f21565b348015610727575f5ffd5b506102a0610736366004614e99565b612f54565b348015610746575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000006102ed565b348015610778575f5ffd5b50610277610787366004615382565b6001600160a01b039182165f9081526101006020908152604080832093909416825291909152205460ff1690565b3480156107c0575f5ffd5b506102cc6107cf366004614f18565b612fb7565b3480156107df575f5ffd5b506103636107ee366004614eb0565b613058565b3480156107fe575f5ffd5b506103635f5160206159d15f395f51905f5281565b34801561081e575f5ffd5b506102cc61082d3660046153ae565b6130ea565b5f61083c8261311b565b8061085757506001600160e01b0319821663019c676f60e31b145b92915050565b606060fb805461086c906153db565b80601f0160208091040260200160405190810160405280929190818152602001828054610898906153db565b80156108e35780601f106108ba576101008083540402835291602001916108e3565b820191905f5260205f20905b8154815290600101906020018083116108c657829003601f168201915b5050505050905090565b5f54610100900460ff161580801561090b57505f54600160ff909116105b806109245750303b15801561092457505f5460ff166001145b61098c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156109ad575f805461ff0019166101001790555b83515f036109cd57604051620beefb60e01b815260040160405180910390fd5b82515f036109ee576040516343b47bcb60e01b815260040160405180910390fd5b6109f661316a565b610a008484613192565b610a086131c2565b610a11826131f0565b8015610a56575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b5f610a668261321f565b505f90815260ff60205260409020546001600160a01b031690565b5f610a8b82611bd5565b9050806001600160a01b0316836001600160a01b031603610af85760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610983565b336001600160a01b0382161480610b145750610b148133610787565b610b865760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610983565b610b90838361327d565b505050565b610b9f33826132ea565b610bbb5760405162461bcd60e51b81526004016109839061540d565b610b90838383613367565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c0e5760405162461bcd60e51b81526004016109839061545a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610c565f5160206159b15f395f51905f52546001600160a01b031690565b6001600160a01b031614610c7c5760405162461bcd60e51b8152600401610983906154a6565b610c85816134d6565b604080515f80825260208201909252610ca0918391906136eb565b50565b5f610cac613855565b610cb58561389b565b6101608501516001600160a01b0381163314610ce457604051634ace04f960e01b815260040160405180910390fd5b610cef816002613901565b5f816001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d2c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d5091906154f2565b9050610d5d816003613901565b4264ffffffffff16876101a0015164ffffffffff1611610db75760405162461bcd60e51b815260206004820152601560248201527413db19081c1bdb1a58de481a5cc8195e1c1a5c9959605a1b6044820152606401610983565b85610180015164ffffffffff1687610180015164ffffffffff1614610e355760405162461bcd60e51b815260206004820152602e60248201527f426f746820706f6c6963696573206d7573742068617665207468652073616d6560448201526d207374617274696e67206461746560901b6064820152608401610983565b8560200151876020015111158015610e5557508560c001518760c0015111155b8015610e6957508560e001518760e0015111155b8015610e7f575085610120015187610120015111155b8015610e95575085610140015187610140015111155b8015610ea957508560600151876060015111155b8015610ebd57508560800151876080015111155b8015610ed3575085610100015187610100015111155b8015610ef75750856101a0015164ffffffffff16876101a0015164ffffffffff1611155b8015610f1957508561016001516001600160a01b0316826001600160a01b0316145b610f815760405162461bcd60e51b815260206004820152603360248201527f4e657720706f6c696379206d7573742062652067726561746572206f7220657160448201527275616c207468616e206f6c6420706f6c69637960681b6064820152608401610983565b610f8b8285612f21565b8087525f90815261012f602052604090205415610fe25760405162461bcd60e51b8152602060048201526015602482015274506f6c69637920616c72656164792065786973747360581b6044820152606401610983565b610feb8661393c565b86515f90815261012f6020526040812091909155875161100a90611bd5565b905061102881885f015160405180602001604052805f8152506139ba565b87515f90815261012f602052604080822091909155516355c1da5f60e11b81526001600160a01b0383169063ab83b4be90611069908b908b906004016155cd565b5f604051808303815f87803b158015611080575f5ffd5b505af1158015611092573d5f5f3e3d5ffd5b505050505f8860c001518860c001516110ab91906155fe565b905080156110e8576110e86001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168885846139ec565b8861014001518861014001516110fe91906155fe565b9050801561119c5761119c87846001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611146573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061116a91906154f2565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169190846139ec565b8861012001518861012001516111b291906155fe565b905080156111fa576111fa87846001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611146573d5f5f3e3d5ffd5b8860e001518860e0015161120e91906155fe565b905080156112535761012d54611253906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116918a9116846139ec565b88610100015188610100015161126991906155fe565b90505f811180156112eb5750836001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112d591906154f2565b6001600160a01b0316876001600160a01b031614155b156113305761133087856001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa158015611146573d5f5f3e3d5ffd5b836001600160a01b03167f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b896040516113699190615611565b60405180910390a2875189516040516001600160a01b038716907f4ff4ac703cb703b7ea535d47e65e64b4cabf11b3e2eb41f152dab17971953add905f90a4885188516113b69190613a46565b50508551925050505b949350505050565b5f516020615a185f395f51905f525f5160206159d15f395f51905f526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b031660448201526064015f6040518083038186803b158015611460575f5ffd5b505afa158015611472573d5f5f3e3d5ffd5b5050505061147e613b41565b5050565b610b9083838360405180602001604052805f815250612eef565b6114a4613855565b6114af826001613901565b6040516370a0823160e01b81526001600160a01b0383811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015611517573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061153b9190615620565b90506115727f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163385856139ec565b6001600160a01b0383166347e7ef24336040516370a0823160e01b81526001600160a01b03878116600483015285917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156115ea573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061160e9190615620565b61161891906155fe565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015611660573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a569190615620565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036116cc5760405162461bcd60e51b81526004016109839061545a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117145f5160206159b15f395f51905f52546001600160a01b031690565b6001600160a01b03161461173a5760405162461bcd60e51b8152600401610983906154a6565b611743826134d6565b61147e828260016136eb565b5f306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146117ee5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610983565b505f5160206159b15f395f51905f5290565b7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c06001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b031660248201526044015f6040518083038186803b158015611895575f5ffd5b505afa1580156118a7573d5f5f3e3d5ffd5b505050508161013090816118bb9190615682565b506040513381526004907fb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f906020015b60405180910390a25050565b5f516020615a185f395f51905f525f5160206159d15f395f51905f526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b031660448201526064015f6040518083038186803b158015611990575f5ffd5b505afa1580156119a2573d5f5f3e3d5ffd5b5050506001600160a01b0385165f90815261012e602052604081209150815460ff1660038111156119d5576119d5614f33565b036119f357604051637d91856360e01b815260040160405180910390fd5b6001846003811115611a0757611a07614f33565b1480611a2457506002846003811115611a2257611a22614f33565b145b15611ac5576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad5f5160206159d15f395f51905f52336040516001600160e01b031960e085901b16815260048101929092526001600160a01b031660248201526044015f6040518083038186803b158015611aaa575f5ffd5b505afa158015611abc573d5f5f3e3d5ffd5b50505050611b5d565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad5f516020615a185f395f51905f52336040516001600160e01b031960e085901b16815260048101929092526001600160a01b031660248201526044015f6040518083038186803b158015611b46575f5ffd5b505afa158015611b58573d5f5f3e3d5ffd5b505050505b80548490829060ff19166001836003811115611b7b57611b7b614f33565b021790555080546040516001600160a01b038716917ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef91611bc691610100900460ff1690889061573d565b60405180910390a25050505050565b5f81815260fd60205260408120546001600160a01b0316806108575760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610983565b5f611c3d613855565b6101608501516001600160a01b0381163314611c6c57604051634ace04f960e01b815260040160405180910390fd5b611c77816002613901565b5f816001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cb4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cd891906154f2565b9050611ce5816003613901565b611cef8285612f21565b8088525f90815261012f602052604090205415611d465760405162461bcd60e51b8152602060048201526015602482015274506f6c69637920616c72656164792065786973747360581b6044820152606401610983565b611d4f8761393c565b87515f90815261012f602090815260408083209390935589518351918201909352908152611d7e9187916139ba565b60405163e3638ea360e01b81526001600160a01b0382169063e3638ea390611daa908a90600401615611565b5f604051808303815f87803b158015611dc1575f5ffd5b505af1158015611dd3573d5f5f3e3d5ffd5b50505060c0880151611e1491506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690889084906139ec565b61014087015115611ebb57611ebb86826001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e5f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e8391906154f2565b6101408a01516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169291906139ec565b61012087015115611f6257611f6286826001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f06573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f2a91906154f2565b6101208a01516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169291906139ec565b61012d5460e0880151611fa7916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116928a9291909116906139ec565b5f87610100015111801561202c5750816001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ff2573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061201691906154f2565b6001600160a01b0316866001600160a01b031614155b156120cd576120cd86836001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa158015612071573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061209591906154f2565b6101008a01516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169291906139ec565b816001600160a01b03167f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b886040516121069190615611565b60405180910390a250509351949350505050565b612122613855565b426121356101c083016101a08401615763565b64ffffffffff1611156121835760405162461bcd60e51b8152602060048201526016602482015275141bdb1a58de481b9bdd08195e1c1a5c9959081e595d60521b6044820152606401610983565b610ca06121953683900383018361577c565b5f6001613b93565b5f5160206159d15f395f51905f526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b031660248201526044015f6040518083038186803b15801561221f575f5ffd5b505afa158015612231573d5f5f3e3d5ffd5b5050506001600160a01b0384165f90815261012e602052604081209150815460ff16600381111561226457612264614f33565b146122825760405163cf9a96f360e01b815260040160405180910390fd5b306001600160a01b0316846001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122c8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122ec91906154f2565b6001600160a01b03161461231357604051630fdee24360e11b815260040160405180910390fd5b600183600381111561232757612327614f33565b1480156123a357506040516301ffc9a760e01b81526001600160a01b038516906301ffc9a79061236290639077062160e01b90600401615797565b602060405180830381865afa15801561237d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123a191906157ac565b155b80612439575060038360038111156123bd576123bd614f33565b14801561243957506040516301ffc9a760e01b81526001600160a01b038516906301ffc9a7906123f890630e72532960e11b90600401615797565b602060405180830381865afa158015612413573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061243791906157ac565b155b806124cf5750600283600381111561245357612453614f33565b1480156124cf57506040516301ffc9a760e01b81526001600160a01b038516906301ffc9a79061248e9063da40804f60e01b90600401615797565b602060405180830381865afa1580156124a9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124cd91906157ac565b155b156124f157838360405163502c9a5f60e01b81526004016109839291906157c7565b8054600160ff198216811783558491839161ffff199091161761010083600381111561251f5761251f614f33565b0217905550600383600381111561253857612538614f33565b036126d5575f8490505f816001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125a291906154f2565b90506001600160a01b0381161561260a576040516338ea38a760e21b81526001600160a01b03838116600483015282169063e3a8e29c906024015f604051808303815f87803b1580156125f3575f5ffd5b505af1158015612605573d5f5f3e3d5ffd5b505050505b816001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612646573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061266a91906154f2565b90506001600160a01b038116156126d2576040516338ea38a760e21b81526001600160a01b03838116600483015282169063e3a8e29c906024015f604051808303815f87803b1580156126bb575f5ffd5b505af11580156126cd573d5f5f3e3d5ffd5b505050505b50505b836001600160a01b03167ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef84600160405161271192919061573d565b60405180910390a250505050565b5f5160206159d15f395f51905f526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b031660248201526044015f6040518083038186803b1580156127a1575f5ffd5b505afa1580156127b3573d5f5f3e3d5ffd5b505050506001600160a01b0382165f90815261012e602052604090206002815460ff1660038111156127e7576127e7614f33565b1461280557604051635c92b23960e11b815260040160405180910390fd5b60018154610100900460ff16600381111561282257612822614f33565b0361291d57826001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612863573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128879190615620565b1561291857805f0160019054906101000a900460ff16836001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128d9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128fd9190615620565b604051631d0ec0ab60e01b81526004016109839291906157e0565b612c5d565b60028154610100900460ff16600381111561293a5761293a614f33565b036129f157826001600160a01b0316637ff8bf256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561297b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061299f9190615620565b1561291857805f0160019054906101000a900460ff16836001600160a01b0316637ff8bf256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128d9573d5f5f3e3d5ffd5b60038154610100900460ff166003811115612a0e57612a0e614f33565b03612c5d575f839050806001600160a01b03166326ccbd226040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a53573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a779190615620565b15612ac957815f0160019054906101000a900460ff16816001600160a01b03166326ccbd226040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128d9573d5f5f3e3d5ffd5b5f816001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b06573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b2a91906154f2565b90506001600160a01b03811615612b92576040516376c7fc5560e01b81526001600160a01b0383811660048301528216906376c7fc55906024015f604051808303815f87803b158015612b7b575f5ffd5b505af1158015612b8d573d5f5f3e3d5ffd5b505050505b816001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bce573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bf291906154f2565b90506001600160a01b03811615612c5a576040516376c7fc5560e01b81526001600160a01b0383811660048301528216906376c7fc55906024015f604051808303815f87803b158015612c43575f5ffd5b505af1158015612c55573d5f5f3e3d5ffd5b505050505b50505b80546040516001600160a01b038516917ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef91612ca391610100900460ff16905f9061573d565b60405180910390a250506001600160a01b03165f90815261012e60205260409020805461ffff19169055565b5f6001600160a01b038216612d385760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610983565b506001600160a01b03165f90815260fe602052604090205490565b612d5b613855565b61147e612d6d3684900384018461577c565b825f613b93565b5f516020615a185f395f51905f526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b031660248201526044015f6040518083038186803b158015612df6575f5ffd5b505afa158015612e08573d5f5f3e3d5ffd5b50505050610ca0613ebc565b612e1c613855565b5f5b81811015610b905742838383818110612e3957612e396157f7565b90506101c002016101a0016020810190612e539190615763565b64ffffffffff161115612ea15760405162461bcd60e51b8152602060048201526016602482015275141bdb1a58de481b9bdd08195e1c1a5c9959081e595d60521b6044820152606401610983565b612ecd838383818110612eb657612eb66157f7565b90506101c00201803603810190612195919061577c565b600101612e1e565b606060fc805461086c906153db565b61147e338383613ef9565b612ef933836132ea565b612f155760405162461bcd60e51b81526004016109839061540d565b610a5684848484613fc7565b5f612f4d6bffffffffffffffffffffffff83166bffffffffffffffffffffffff19606086901b1661580b565b9392505050565b6060612f5f8261321f565b5f612f68613ffa565b90505f815111612f865760405180602001604052805f815250612f4d565b80612f908461400a565b604051602001612fa1929190615835565b6040516020818303038152906040529392505050565b5f5160206159d15f395f51905f526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b031660248201526044015f6040518083038186803b158015613039575f5ffd5b505afa15801561304b573d5f5f3e3d5ffd5b5050505061147e8261409a565b5f613061613855565b61306c836001614123565b6001600160a01b03831663f3fef3a3336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044016020604051808303815f875af11580156130c6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f4d9190615620565b6130f2613855565b61147e6131043684900384018461577c565b8261310f575f613115565b83602001355b5f613b93565b5f6001600160e01b031982166380ac58cd60e01b148061314b57506001600160e01b03198216635b5e139f60e01b145b8061085757506301ffc9a760e01b6001600160e01b0319831614610857565b5f54610100900460ff166131905760405162461bcd60e51b815260040161098390615849565b565b5f54610100900460ff166131b85760405162461bcd60e51b815260040161098390615849565b61147e8282614182565b5f54610100900460ff166131e85760405162461bcd60e51b815260040161098390615849565b6131906141c1565b5f54610100900460ff166132165760405162461bcd60e51b815260040161098390615849565b610ca08161409a565b5f81815260fd60205260409020546001600160a01b0316610ca05760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610983565b5f81815260ff6020526040902080546001600160a01b0319166001600160a01b03841690811790915581906132b182611bd5565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f5f6132f583611bd5565b9050806001600160a01b0316846001600160a01b0316148061333c57506001600160a01b038082165f908152610100602090815260408083209388168352929052205460ff165b806113bf5750836001600160a01b031661335584610a5c565b6001600160a01b031614949350505050565b826001600160a01b031661337a82611bd5565b6001600160a01b0316146133a05760405162461bcd60e51b815260040161098390615894565b6001600160a01b0382166134025760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610983565b61340f83838360016141f3565b826001600160a01b031661342282611bd5565b6001600160a01b0316146134485760405162461bcd60e51b815260040161098390615894565b5f81815260ff6020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260fe855283862080545f190190559087168086528386208054600101905586865260fd90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5f516020615a185f395f51905f525f5160206159d15f395f51905f526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b031660448201526064015f6040518083038186803b15801561356f575f5ffd5b505afa158015613581573d5f5f3e3d5ffd5b505050505f8390507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135ef573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061361391906154f2565b6001600160a01b03161461363a57604051630f13081760e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136a0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136c491906154f2565b6001600160a01b031614610a56576040516324a41b4360e11b815260040160405180910390fd5b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561371e57610b9083614200565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613778575060408051601f3d908101601f1916820190925261377591810190615620565b60015b6137db5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610983565b5f5160206159b15f395f51905f5281146138495760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610983565b50610b9083838361429b565b60335460ff16156131905760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610983565b8051158015906138c2575080515f90815261012f60205260409020546138c08261393c565b145b610ca05760405162461bcd60e51b815260206004820152601060248201526f141bdb1a58de481b9bdd08199bdd5b9960821b6044820152606401610983565b600161390d83836142bf565b600381111561391e5761391e614f33565b1461147e57604051630422f25f60e01b815260040160405180910390fd5b5f8160405160200161394e9190615611565b60408051601f1981840301815291905280516020909101209050806139b55760405162461bcd60e51b815260206004820152601860248201527f506f6c6963793a20686173682063616e6e6f74206265203000000000000000006044820152606401610983565b919050565b6139c48383614331565b6139d05f8484846144c6565b610b905760405162461bcd60e51b8152600401610983906158d9565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610a569085906145c0565b5f613a5083611bd5565b90506001600160a01b0381163b613a6657505050565b613a7781635ee0c7dd60e01b614693565b613a8057505050565b5f6001600160a01b038216635ee0c7dd336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101879052606481018690526084016020604051808303815f875af1158015613ae8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b0c919061592b565b90506001600160e01b03198116635ee0c7dd60e01b14610a5657806040516381784a5160e01b81526004016109839190615797565b613b496146ae565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b613b9c8361389b565b61016083015181158015613bb957506001600160a01b0381163314155b15613bd757604051634ace04f960e01b815260040160405180910390fd5b821580613bef575042846101a0015164ffffffffff16115b613c3b5760405162461bcd60e51b815260206004820152601860248201527f43616e277420706179206578706972656420706f6c69637900000000000000006044820152606401610983565b613c46816002614123565b8360200151831115613c935760405162461bcd60e51b81526020600482015260166024820152751c185e5bdd5d080f881c1bdb1a58de4b9c185e5bdd5d60521b6044820152606401610983565b5f5f841190505f826001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cd6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613cfa91906154f2565b9050613d07816003614123565b85515f90815261012f60205260408120558115613d91575f613d2b875f0151611bd5565b604051639d8c5ee760e01b81529091506001600160a01b03831690639d8c5ee790613d5e9084908b908b90600401615946565b5f604051808303815f87803b158015613d75575f5ffd5b505af1158015613d87573d5f5f3e3d5ffd5b5050505050613deb565b60405163c7a9c70d60e01b81526001600160a01b0382169063c7a9c70d90613dbd908990600401615611565b5f604051808303815f87803b158015613dd4575f5ffd5b505af1158015613de6573d5f5f3e3d5ffd5b505050505b6020860151604051636a448ef160e01b815260048101919091526001600160a01b03841690636a448ef1906024015f604051808303815f87803b158015613e30575f5ffd5b505af1158015613e42573d5f5f3e3d5ffd5b50505050855f01518661016001516001600160a01b03167f54f4a270ea08f88dc23b2520d6b063fecb24d956c4496f447926d736338f545e87604051613e8a91815260200190565b60405180910390a38415613ea9578551613ea490866146f7565b613eb4565b8551613eb4906147f2565b505050505050565b613ec4613855565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613b763390565b816001600160a01b0316836001600160a01b031603613f5a5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610983565b6001600160a01b038381165f8181526101006020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b613fd2848484613367565b613fde848484846144c6565b610a565760405162461bcd60e51b8152600401610983906158d9565b6060610130805461086c906153db565b60605f614016836148ec565b60010190505f8167ffffffffffffffff81111561403557614035614d3e565b6040519080825280601f01601f19166020018201604052801561405f576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461406957509392505050565b6001600160a01b0381166140c1576040516307a2ee8b60e11b815260040160405180910390fd5b61012d80546001600160a01b0319166001600160a01b038316179055600161012d546040516001600160a01b0390911681527fb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f9060200160405180910390a250565b5f61412e83836142bf565b9050600181600381111561414457614144614f33565b141580156141645750600281600381111561416157614161614f33565b14155b15610b905760405163d08ef1ff60e01b815260040160405180910390fd5b5f54610100900460ff166141a85760405162461bcd60e51b815260040161098390615849565b60fb6141b48382615682565b5060fc610b908282615682565b5f54610100900460ff166141e75760405162461bcd60e51b815260040161098390615849565b6033805460ff19169055565b6141fb613855565b610a56565b6001600160a01b0381163b61426d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610983565b5f5160206159b15f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6142a4836149c3565b5f825111806142b05750805b15610b9057610a568383614a02565b6001600160a01b0382165f90815261012e602052604081208260038111156142e9576142e9614f33565b8154610100900460ff16600381111561430457614304614f33565b1461432657838360405163502c9a5f60e01b81526004016109839291906157c7565b5460ff169392505050565b6001600160a01b0382166143875760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610983565b5f81815260fd60205260409020546001600160a01b0316156143eb5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610983565b6143f85f838360016141f3565b5f81815260fd60205260409020546001600160a01b03161561445c5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610983565b6001600160a01b0382165f81815260fe602090815260408083208054600101905584835260fd90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5f6001600160a01b0384163b156145b857604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290614509903390899088908890600401615973565b6020604051808303815f875af1925050508015614543575060408051601f3d908101601f191682019092526145409181019061592b565b60015b61459e573d808015614570576040519150601f19603f3d011682016040523d82523d5f602084013e614575565b606091505b5080515f036145965760405162461bcd60e51b8152600401610983906158d9565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506113bf565b5060016113bf565b5f614614826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614a279092919063ffffffff16565b905080515f148061463457508080602001905181019061463491906157ac565b610b905760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610983565b5f61469d83614a35565b8015612f4d5750612f4d8383614a67565b60335460ff166131905760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610983565b5f61470183611bd5565b90506001600160a01b0381163b61471757505050565b61472881633ece0a8960e01b614693565b61473157505050565b5f6001600160a01b03821663d6281d3e336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101879052606481018690526084016020604051808303815f875af1158015614799573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906147bd919061592b565b90506001600160e01b03198116636b140e9f60e11b14610a5657806040516381784a5160e01b81526004016109839190615797565b5f6147fc82611bd5565b90506001600160a01b0381163b614811575050565b61482281633ece0a8960e01b614693565b61482a575050565b6001600160a01b03811663e8e617b7620249f0336040516001600160e01b031960e085901b1681526001600160a01b039091166004820152306024820152604481018690526064016020604051808303815f8887f1935050505080156148ad575060408051601f3d908101601f191682019092526148aa9181019061592b565b60015b610b90576040516001600160a01b038216815282907f6ce8016f81523f240956bca9a698e643d09e84e7d0e931470b1016baf1027bd0906020016118eb565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061492a5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310614956576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061497457662386f26fc10000830492506010015b6305f5e100831061498c576305f5e100830492506008015b61271083106149a057612710830492506004015b606483106149b2576064830492506002015b600a83106108575760010192915050565b6149cc81614200565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060612f4d83836040518060600160405280602781526020016159f160279139614af5565b60606113bf84845f85614b69565b5f614a47826301ffc9a760e01b614a67565b80156108575750614a60826001600160e01b0319614a67565b1592915050565b5f5f6301ffc9a760e01b83604051602401614a829190615797565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090505f5f5f60205f8551602087018a617530fa92503d91505f519050828015614adf575060208210155b8015614aea57505f81115b979650505050505050565b60605f5f856001600160a01b031685604051614b1191906159a5565b5f60405180830381855af49150503d805f8114614b49576040519150601f19603f3d011682016040523d82523d5f602084013e614b4e565b606091505b5091509150614b5f86838387614c31565b9695505050505050565b606082471015614bca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610983565b5f5f866001600160a01b03168587604051614be591906159a5565b5f6040518083038185875af1925050503d805f8114614c1f576040519150601f19603f3d011682016040523d82523d5f602084013e614c24565b606091505b5091509150614aea878383875b60608315614c9f5782515f03614c98576001600160a01b0385163b614c985760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610983565b50816113bf565b6113bf8383815115614cb45781518083602001fd5b8060405162461bcd60e51b81526004016109839190614d2c565b6001600160e01b031981168114610ca0575f5ffd5b5f60208284031215614cf3575f5ffd5b8135612f4d81614cce565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f612f4d6020830184614cfe565b634e487b7160e01b5f52604160045260245ffd5b6040516101c0810167ffffffffffffffff81118282101715614d7657614d76614d3e565b60405290565b5f82601f830112614d8b575f5ffd5b8135602083015f5f67ffffffffffffffff841115614dab57614dab614d3e565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715614dda57614dda614d3e565b604052838152905080828401871015614df1575f5ffd5b838360208301375f602085830101528094505050505092915050565b6001600160a01b0381168114610ca0575f5ffd5b5f5f5f60608486031215614e33575f5ffd5b833567ffffffffffffffff811115614e49575f5ffd5b614e5586828701614d7c565b935050602084013567ffffffffffffffff811115614e71575f5ffd5b614e7d86828701614d7c565b9250506040840135614e8e81614e0d565b809150509250925092565b5f60208284031215614ea9575f5ffd5b5035919050565b5f5f60408385031215614ec1575f5ffd5b8235614ecc81614e0d565b946020939093013593505050565b5f5f5f60608486031215614eec575f5ffd5b8335614ef781614e0d565b92506020840135614f0781614e0d565b929592945050506040919091013590565b5f60208284031215614f28575f5ffd5b8135612f4d81614e0d565b634e487b7160e01b5f52602160045260245ffd5b60048110610ca057634e487b7160e01b5f52602160045260245ffd5b60208101614f7083614f47565b91905290565b80356139b581614e0d565b803564ffffffffff811681146139b5575f5ffd5b5f6101c08284031215614fa6575f5ffd5b614fae614d52565b823581526020808401359082015260408084013590820152606080840135908201526080808401359082015260a0808401359082015260c0808401359082015260e0808401359082015261010080840135908201526101208084013590820152610140808401359082015290506150286101608301614f76565b61016082015261503b6101808301614f81565b61018082015261504e6101a08301614f81565b6101a082015292915050565b80356bffffffffffffffffffffffff811681146139b5575f5ffd5b5f5f5f5f6103c08587031215615089575f5ffd5b6150938686614f95565b93506150a3866101c08701614f95565b92506103808501356150b481614e0d565b91506150c36103a0860161505a565b905092959194509250565b5f5f604083850312156150df575f5ffd5b82356150ea81614e0d565b9150602083013567ffffffffffffffff811115615105575f5ffd5b61511185828601614d7c565b9150509250929050565b5f6020828403121561512b575f5ffd5b813567ffffffffffffffff811115615141575f5ffd5b6113bf84828501614d7c565b60048110610ca0575f5ffd5b5f5f6040838503121561516a575f5ffd5b823561517581614e0d565b915060208301356151858161514d565b809150509250929050565b5f5f5f5f61022085870312156151a4575f5ffd5b6151ae8686614f95565b93506101c08501356151bf81614e0d565b92506101e08501356151d081614e0d565b91506150c3610200860161505a565b5f6101c082840312156151f0575f5ffd5b50919050565b5f6101c08284031215615207575f5ffd5b612f4d83836151df565b5f5f6101e08385031215615223575f5ffd5b61522d84846151df565b946101c0939093013593505050565b5f5f6020838503121561524d575f5ffd5b823567ffffffffffffffff811115615263575f5ffd5b8301601f81018513615273575f5ffd5b803567ffffffffffffffff811115615289575f5ffd5b8560206101c08302840101111561529e575f5ffd5b6020919091019590945092505050565b8015158114610ca0575f5ffd5b5f5f604083850312156152cc575f5ffd5b82356152d781614e0d565b91506020830135615185816152ae565b5f5f5f5f608085870312156152fa575f5ffd5b843561530581614e0d565b9350602085013561531581614e0d565b925060408501359150606085013567ffffffffffffffff811115615337575f5ffd5b61534387828801614d7c565b91505092959194509250565b5f5f60408385031215615360575f5ffd5b823561536b81614e0d565b91506153796020840161505a565b90509250929050565b5f5f60408385031215615393575f5ffd5b823561539e81614e0d565b9150602083013561518581614e0d565b5f5f6101e083850312156153c0575f5ffd5b6153ca84846151df565b91506101c0830135615185816152ae565b600181811c908216806153ef57607f821691505b6020821081036151f057634e487b7160e01b5f52602260045260245ffd5b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215615502575f5ffd5b8151612f4d81614e0d565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e08301526101008101516101008301526101208101516101208301526101408101516101408301526101608101516155976101608401826001600160a01b03169052565b506101808101516155b261018084018264ffffffffff169052565b506101a0810151610b906101a084018264ffffffffff169052565b61038081016155dc828561550d565b612f4d6101c083018461550d565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610857576108576155ea565b6101c08101610857828461550d565b5f60208284031215615630575f5ffd5b5051919050565b601f821115610b9057805f5260205f20601f840160051c8101602085101561565c5750805b601f840160051c820191505b8181101561567b575f8155600101615668565b5050505050565b815167ffffffffffffffff81111561569c5761569c614d3e565b6156b0816156aa84546153db565b84615637565b6020601f8211600181146156e2575f83156156cb5750848201515b5f19600385901b1c1916600184901b17845561567b565b5f84815260208120601f198516915b8281101561571157878501518255602094850194600190920191016156f1565b508482101561572e57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6040810161574a84614f47565b83825261575683614f47565b8260208301529392505050565b5f60208284031215615773575f5ffd5b612f4d82614f81565b5f6101c0828403121561578d575f5ffd5b612f4d8383614f95565b6001600160e01b031991909116815260200190565b5f602082840312156157bc575f5ffd5b8151612f4d816152ae565b6001600160a01b03831681526040810161575683614f47565b604081016157ed84614f47565b9281526020015290565b634e487b7160e01b5f52603260045260245ffd5b80820180821115610857576108576155ea565b5f81518060208401855e5f93019283525090919050565b5f6113bf615843838661581e565b8461581e565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b5f6020828403121561593b575f5ffd5b8151612f4d81614cce565b6001600160a01b03841681526102008101615964602083018561550d565b826101e0830152949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90614b5f90830184614cfe565b5f612f4d828461581e56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a2646970667358221220d6cb40992d23095d3d3c714ec2b0301a9ae70612430d01e99e577e3312e2f9c764736f6c634300081c0033",
1759
+ "deployedBytecode": "0x608060405260043610610254575f3560e01c80636769a76f1161013f57806395d89b41116100b3578063e5a6b10f11610078578063e5a6b10f1461073b578063e985e9c51461076d578063f0f44260146107b5578063f3fef3a3146107d4578063f67b2bad146107f3578063ffa600e314610813575f5ffd5b806395d89b41146106ab578063a22cb465146106bf578063b88d4fde146106de578063c016f88a146106fd578063c87b56dd1461071c575f5ffd5b806371907f171161010457806371907f17146105cd578063792da09e146105ff5780637a702b3c1461062b57806382afd23b1461064a5780638456cb59146106785780638c916d461461068c575f5ffd5b80636769a76f146105325780636af6f1ef146105515780636b8734e7146105705780636f86c8971461058f57806370a08231146105ae575f5ffd5b80633f4ba83a116101d657806352d1902d1161019b57806352d1902d1461048c57806355f804b3146104a05780635c975abb146104bf5780635fcbf445146104d657806361d027b3146104f55780636352211e14610513575f5ffd5b80633f4ba83a146103f457806342842e0e1461040857806347e7ef24146104275780634a47a3e0146104465780634f1ef28614610479575f5ffd5b806323b872dd1161021c57806323b872dd1461032457806324ea54f41461034357806333d6157a146103715780633659cfe6146103b65780633ed7c1ae146103d5575f5ffd5b806301ffc9a71461025857806306fdde031461028c578063077f224a146102ad578063081812fc146102ce578063095ea7b314610305575b5f5ffd5b348015610263575f5ffd5b50610277610272366004614ce3565b610832565b60405190151581526020015b60405180910390f35b348015610297575f5ffd5b506102a061085d565b6040516102839190614d2c565b3480156102b8575f5ffd5b506102cc6102c7366004614e21565b6108ed565b005b3480156102d9575f5ffd5b506102ed6102e8366004614e99565b610a5c565b6040516001600160a01b039091168152602001610283565b348015610310575f5ffd5b506102cc61031f366004614eb0565b610a81565b34801561032f575f5ffd5b506102cc61033e366004614eda565b610b95565b34801561034e575f5ffd5b506103635f516020615a185f395f51905f5281565b604051908152602001610283565b34801561037c575f5ffd5b506103a961038b366004614f18565b6001600160a01b03165f90815261012e602052604090205460ff1690565b6040516102839190614f63565b3480156103c1575f5ffd5b506102cc6103d0366004614f18565b610bc6565b3480156103e0575f5ffd5b506103636103ef366004615075565b610ca3565b3480156103ff575f5ffd5b506102cc6113c7565b348015610413575f5ffd5b506102cc610422366004614eda565b611482565b348015610432575f5ffd5b506102cc610441366004614eb0565b61149c565b348015610451575f5ffd5b506103637fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b6102cc6104873660046150ce565b611684565b348015610497575f5ffd5b5061036361174f565b3480156104ab575f5ffd5b506102cc6104ba36600461511b565b611800565b3480156104ca575f5ffd5b5060335460ff16610277565b3480156104e1575f5ffd5b506102cc6104f0366004615159565b6118f7565b348015610500575f5ffd5b5061012d546001600160a01b03166102ed565b34801561051e575f5ffd5b506102ed61052d366004614e99565b611bd5565b34801561053d575f5ffd5b5061036361054c366004615190565b611c34565b34801561055c575f5ffd5b506102cc61056b3660046151f6565b61211a565b34801561057b575f5ffd5b506102cc61058a366004615159565b61219d565b34801561059a575f5ffd5b506102cc6105a9366004614f18565b61271f565b3480156105b9575f5ffd5b506103636105c8366004614f18565b612ccf565b3480156105d8575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000006102ed565b34801561060a575f5ffd5b50610363610619366004614e99565b5f90815261012f602052604090205490565b348015610636575f5ffd5b506102cc610645366004615211565b612d53565b348015610655575f5ffd5b50610277610664366004614e99565b5f90815261012f6020526040902054151590565b348015610683575f5ffd5b506102cc612d74565b348015610697575f5ffd5b506102cc6106a636600461523c565b612e14565b3480156106b6575f5ffd5b506102a0612ed5565b3480156106ca575f5ffd5b506102cc6106d93660046152bb565b612ee4565b3480156106e9575f5ffd5b506102cc6106f83660046152e7565b612eef565b348015610708575f5ffd5b5061036361071736600461534f565b612f21565b348015610727575f5ffd5b506102a0610736366004614e99565b612f54565b348015610746575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000006102ed565b348015610778575f5ffd5b50610277610787366004615382565b6001600160a01b039182165f9081526101006020908152604080832093909416825291909152205460ff1690565b3480156107c0575f5ffd5b506102cc6107cf366004614f18565b612fb7565b3480156107df575f5ffd5b506103636107ee366004614eb0565b613058565b3480156107fe575f5ffd5b506103635f5160206159d15f395f51905f5281565b34801561081e575f5ffd5b506102cc61082d3660046153ae565b6130ea565b5f61083c8261311b565b8061085757506001600160e01b0319821663019c676f60e31b145b92915050565b606060fb805461086c906153db565b80601f0160208091040260200160405190810160405280929190818152602001828054610898906153db565b80156108e35780601f106108ba576101008083540402835291602001916108e3565b820191905f5260205f20905b8154815290600101906020018083116108c657829003601f168201915b5050505050905090565b5f54610100900460ff161580801561090b57505f54600160ff909116105b806109245750303b15801561092457505f5460ff166001145b61098c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156109ad575f805461ff0019166101001790555b83515f036109cd57604051620beefb60e01b815260040160405180910390fd5b82515f036109ee576040516343b47bcb60e01b815260040160405180910390fd5b6109f661316a565b610a008484613192565b610a086131c2565b610a11826131f0565b8015610a56575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b5f610a668261321f565b505f90815260ff60205260409020546001600160a01b031690565b5f610a8b82611bd5565b9050806001600160a01b0316836001600160a01b031603610af85760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610983565b336001600160a01b0382161480610b145750610b148133610787565b610b865760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610983565b610b90838361327d565b505050565b610b9f33826132ea565b610bbb5760405162461bcd60e51b81526004016109839061540d565b610b90838383613367565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c0e5760405162461bcd60e51b81526004016109839061545a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610c565f5160206159b15f395f51905f52546001600160a01b031690565b6001600160a01b031614610c7c5760405162461bcd60e51b8152600401610983906154a6565b610c85816134d6565b604080515f80825260208201909252610ca0918391906136eb565b50565b5f610cac613855565b610cb58561389b565b6101608501516001600160a01b0381163314610ce457604051634ace04f960e01b815260040160405180910390fd5b610cef816002613901565b5f816001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d2c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d5091906154f2565b9050610d5d816003613901565b4264ffffffffff16876101a0015164ffffffffff1611610db75760405162461bcd60e51b815260206004820152601560248201527413db19081c1bdb1a58de481a5cc8195e1c1a5c9959605a1b6044820152606401610983565b85610180015164ffffffffff1687610180015164ffffffffff1614610e355760405162461bcd60e51b815260206004820152602e60248201527f426f746820706f6c6963696573206d7573742068617665207468652073616d6560448201526d207374617274696e67206461746560901b6064820152608401610983565b8560200151876020015111158015610e5557508560c001518760c0015111155b8015610e6957508560e001518760e0015111155b8015610e7f575085610120015187610120015111155b8015610e95575085610140015187610140015111155b8015610ea957508560600151876060015111155b8015610ebd57508560800151876080015111155b8015610ed3575085610100015187610100015111155b8015610ef75750856101a0015164ffffffffff16876101a0015164ffffffffff1611155b8015610f1957508561016001516001600160a01b0316826001600160a01b0316145b610f815760405162461bcd60e51b815260206004820152603360248201527f4e657720706f6c696379206d7573742062652067726561746572206f7220657160448201527275616c207468616e206f6c6420706f6c69637960681b6064820152608401610983565b610f8b8285612f21565b8087525f90815261012f602052604090205415610fe25760405162461bcd60e51b8152602060048201526015602482015274506f6c69637920616c72656164792065786973747360581b6044820152606401610983565b610feb8661393c565b86515f90815261012f6020526040812091909155875161100a90611bd5565b905061102881885f015160405180602001604052805f8152506139ba565b87515f90815261012f602052604080822091909155516355c1da5f60e11b81526001600160a01b0383169063ab83b4be90611069908b908b906004016155cd565b5f604051808303815f87803b158015611080575f5ffd5b505af1158015611092573d5f5f3e3d5ffd5b505050505f8860c001518860c001516110ab91906155fe565b905080156110e8576110e86001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168885846139ec565b8861014001518861014001516110fe91906155fe565b9050801561119c5761119c87846001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611146573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061116a91906154f2565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169190846139ec565b8861012001518861012001516111b291906155fe565b905080156111fa576111fa87846001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611146573d5f5f3e3d5ffd5b8860e001518860e0015161120e91906155fe565b905080156112535761012d54611253906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116918a9116846139ec565b88610100015188610100015161126991906155fe565b90505f811180156112eb5750836001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112d591906154f2565b6001600160a01b0316876001600160a01b031614155b156113305761133087856001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa158015611146573d5f5f3e3d5ffd5b836001600160a01b03167f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b896040516113699190615611565b60405180910390a2875189516040516001600160a01b038716907f4ff4ac703cb703b7ea535d47e65e64b4cabf11b3e2eb41f152dab17971953add905f90a4885188516113b69190613a46565b50508551925050505b949350505050565b5f516020615a185f395f51905f525f5160206159d15f395f51905f526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b031660448201526064015f6040518083038186803b158015611460575f5ffd5b505afa158015611472573d5f5f3e3d5ffd5b5050505061147e613b41565b5050565b610b9083838360405180602001604052805f815250612eef565b6114a4613855565b6114af826001613901565b6040516370a0823160e01b81526001600160a01b0383811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015611517573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061153b9190615620565b90506115727f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163385856139ec565b6001600160a01b0383166347e7ef24336040516370a0823160e01b81526001600160a01b03878116600483015285917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156115ea573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061160e9190615620565b61161891906155fe565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015611660573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a569190615620565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036116cc5760405162461bcd60e51b81526004016109839061545a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117145f5160206159b15f395f51905f52546001600160a01b031690565b6001600160a01b03161461173a5760405162461bcd60e51b8152600401610983906154a6565b611743826134d6565b61147e828260016136eb565b5f306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146117ee5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610983565b505f5160206159b15f395f51905f5290565b7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c06001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b031660248201526044015f6040518083038186803b158015611895575f5ffd5b505afa1580156118a7573d5f5f3e3d5ffd5b505050508161013090816118bb9190615682565b506040513381526004907fb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f906020015b60405180910390a25050565b5f516020615a185f395f51905f525f5160206159d15f395f51905f526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b031660448201526064015f6040518083038186803b158015611990575f5ffd5b505afa1580156119a2573d5f5f3e3d5ffd5b5050506001600160a01b0385165f90815261012e602052604081209150815460ff1660038111156119d5576119d5614f33565b036119f357604051637d91856360e01b815260040160405180910390fd5b6001846003811115611a0757611a07614f33565b1480611a2457506002846003811115611a2257611a22614f33565b145b15611ac5576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad5f5160206159d15f395f51905f52336040516001600160e01b031960e085901b16815260048101929092526001600160a01b031660248201526044015f6040518083038186803b158015611aaa575f5ffd5b505afa158015611abc573d5f5f3e3d5ffd5b50505050611b5d565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad5f516020615a185f395f51905f52336040516001600160e01b031960e085901b16815260048101929092526001600160a01b031660248201526044015f6040518083038186803b158015611b46575f5ffd5b505afa158015611b58573d5f5f3e3d5ffd5b505050505b80548490829060ff19166001836003811115611b7b57611b7b614f33565b021790555080546040516001600160a01b038716917ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef91611bc691610100900460ff1690889061573d565b60405180910390a25050505050565b5f81815260fd60205260408120546001600160a01b0316806108575760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610983565b5f611c3d613855565b6101608501516001600160a01b0381163314611c6c57604051634ace04f960e01b815260040160405180910390fd5b611c77816002613901565b5f816001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cb4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cd891906154f2565b9050611ce5816003613901565b611cef8285612f21565b8088525f90815261012f602052604090205415611d465760405162461bcd60e51b8152602060048201526015602482015274506f6c69637920616c72656164792065786973747360581b6044820152606401610983565b611d4f8761393c565b87515f90815261012f602090815260408083209390935589518351918201909352908152611d7e9187916139ba565b60405163e3638ea360e01b81526001600160a01b0382169063e3638ea390611daa908a90600401615611565b5f604051808303815f87803b158015611dc1575f5ffd5b505af1158015611dd3573d5f5f3e3d5ffd5b50505060c0880151611e1491506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690889084906139ec565b61014087015115611ebb57611ebb86826001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e5f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e8391906154f2565b6101408a01516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169291906139ec565b61012087015115611f6257611f6286826001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f06573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f2a91906154f2565b6101208a01516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169291906139ec565b61012d5460e0880151611fa7916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116928a9291909116906139ec565b5f87610100015111801561202c5750816001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ff2573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061201691906154f2565b6001600160a01b0316866001600160a01b031614155b156120cd576120cd86836001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa158015612071573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061209591906154f2565b6101008a01516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169291906139ec565b816001600160a01b03167f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b886040516121069190615611565b60405180910390a250509351949350505050565b612122613855565b426121356101c083016101a08401615763565b64ffffffffff1611156121835760405162461bcd60e51b8152602060048201526016602482015275141bdb1a58de481b9bdd08195e1c1a5c9959081e595d60521b6044820152606401610983565b610ca06121953683900383018361577c565b5f6001613b93565b5f5160206159d15f395f51905f526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b031660248201526044015f6040518083038186803b15801561221f575f5ffd5b505afa158015612231573d5f5f3e3d5ffd5b5050506001600160a01b0384165f90815261012e602052604081209150815460ff16600381111561226457612264614f33565b146122825760405163cf9a96f360e01b815260040160405180910390fd5b306001600160a01b0316846001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122c8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122ec91906154f2565b6001600160a01b03161461231357604051630fdee24360e11b815260040160405180910390fd5b600183600381111561232757612327614f33565b1480156123a357506040516301ffc9a760e01b81526001600160a01b038516906301ffc9a79061236290639077062160e01b90600401615797565b602060405180830381865afa15801561237d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123a191906157ac565b155b80612439575060038360038111156123bd576123bd614f33565b14801561243957506040516301ffc9a760e01b81526001600160a01b038516906301ffc9a7906123f890630e72532960e11b90600401615797565b602060405180830381865afa158015612413573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061243791906157ac565b155b806124cf5750600283600381111561245357612453614f33565b1480156124cf57506040516301ffc9a760e01b81526001600160a01b038516906301ffc9a79061248e9063da40804f60e01b90600401615797565b602060405180830381865afa1580156124a9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124cd91906157ac565b155b156124f157838360405163502c9a5f60e01b81526004016109839291906157c7565b8054600160ff198216811783558491839161ffff199091161761010083600381111561251f5761251f614f33565b0217905550600383600381111561253857612538614f33565b036126d5575f8490505f816001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125a291906154f2565b90506001600160a01b0381161561260a576040516338ea38a760e21b81526001600160a01b03838116600483015282169063e3a8e29c906024015f604051808303815f87803b1580156125f3575f5ffd5b505af1158015612605573d5f5f3e3d5ffd5b505050505b816001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612646573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061266a91906154f2565b90506001600160a01b038116156126d2576040516338ea38a760e21b81526001600160a01b03838116600483015282169063e3a8e29c906024015f604051808303815f87803b1580156126bb575f5ffd5b505af11580156126cd573d5f5f3e3d5ffd5b505050505b50505b836001600160a01b03167ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef84600160405161271192919061573d565b60405180910390a250505050565b5f5160206159d15f395f51905f526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b031660248201526044015f6040518083038186803b1580156127a1575f5ffd5b505afa1580156127b3573d5f5f3e3d5ffd5b505050506001600160a01b0382165f90815261012e602052604090206002815460ff1660038111156127e7576127e7614f33565b1461280557604051635c92b23960e11b815260040160405180910390fd5b60018154610100900460ff16600381111561282257612822614f33565b0361291d57826001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612863573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128879190615620565b1561291857805f0160019054906101000a900460ff16836001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128d9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128fd9190615620565b604051631d0ec0ab60e01b81526004016109839291906157e0565b612c5d565b60028154610100900460ff16600381111561293a5761293a614f33565b036129f157826001600160a01b0316637ff8bf256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561297b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061299f9190615620565b1561291857805f0160019054906101000a900460ff16836001600160a01b0316637ff8bf256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128d9573d5f5f3e3d5ffd5b60038154610100900460ff166003811115612a0e57612a0e614f33565b03612c5d575f839050806001600160a01b03166326ccbd226040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a53573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a779190615620565b15612ac957815f0160019054906101000a900460ff16816001600160a01b03166326ccbd226040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128d9573d5f5f3e3d5ffd5b5f816001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b06573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b2a91906154f2565b90506001600160a01b03811615612b92576040516376c7fc5560e01b81526001600160a01b0383811660048301528216906376c7fc55906024015f604051808303815f87803b158015612b7b575f5ffd5b505af1158015612b8d573d5f5f3e3d5ffd5b505050505b816001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bce573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bf291906154f2565b90506001600160a01b03811615612c5a576040516376c7fc5560e01b81526001600160a01b0383811660048301528216906376c7fc55906024015f604051808303815f87803b158015612c43575f5ffd5b505af1158015612c55573d5f5f3e3d5ffd5b505050505b50505b80546040516001600160a01b038516917ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef91612ca391610100900460ff16905f9061573d565b60405180910390a250506001600160a01b03165f90815261012e60205260409020805461ffff19169055565b5f6001600160a01b038216612d385760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610983565b506001600160a01b03165f90815260fe602052604090205490565b612d5b613855565b61147e612d6d3684900384018461577c565b825f613b93565b5f516020615a185f395f51905f526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b031660248201526044015f6040518083038186803b158015612df6575f5ffd5b505afa158015612e08573d5f5f3e3d5ffd5b50505050610ca0613ebc565b612e1c613855565b5f5b81811015610b905742838383818110612e3957612e396157f7565b90506101c002016101a0016020810190612e539190615763565b64ffffffffff161115612ea15760405162461bcd60e51b8152602060048201526016602482015275141bdb1a58de481b9bdd08195e1c1a5c9959081e595d60521b6044820152606401610983565b612ecd838383818110612eb657612eb66157f7565b90506101c00201803603810190612195919061577c565b600101612e1e565b606060fc805461086c906153db565b61147e338383613ef9565b612ef933836132ea565b612f155760405162461bcd60e51b81526004016109839061540d565b610a5684848484613fc7565b5f612f4d6bffffffffffffffffffffffff83166bffffffffffffffffffffffff19606086901b1661580b565b9392505050565b6060612f5f8261321f565b5f612f68613ffa565b90505f815111612f865760405180602001604052805f815250612f4d565b80612f908461400a565b604051602001612fa1929190615835565b6040516020818303038152906040529392505050565b5f5160206159d15f395f51905f526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b031660248201526044015f6040518083038186803b158015613039575f5ffd5b505afa15801561304b573d5f5f3e3d5ffd5b5050505061147e8261409a565b5f613061613855565b61306c836001614123565b6001600160a01b03831663f3fef3a3336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044016020604051808303815f875af11580156130c6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f4d9190615620565b6130f2613855565b61147e6131043684900384018461577c565b8261310f575f613115565b83602001355b5f613b93565b5f6001600160e01b031982166380ac58cd60e01b148061314b57506001600160e01b03198216635b5e139f60e01b145b8061085757506301ffc9a760e01b6001600160e01b0319831614610857565b5f54610100900460ff166131905760405162461bcd60e51b815260040161098390615849565b565b5f54610100900460ff166131b85760405162461bcd60e51b815260040161098390615849565b61147e8282614182565b5f54610100900460ff166131e85760405162461bcd60e51b815260040161098390615849565b6131906141c1565b5f54610100900460ff166132165760405162461bcd60e51b815260040161098390615849565b610ca08161409a565b5f81815260fd60205260409020546001600160a01b0316610ca05760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610983565b5f81815260ff6020526040902080546001600160a01b0319166001600160a01b03841690811790915581906132b182611bd5565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f5f6132f583611bd5565b9050806001600160a01b0316846001600160a01b0316148061333c57506001600160a01b038082165f908152610100602090815260408083209388168352929052205460ff165b806113bf5750836001600160a01b031661335584610a5c565b6001600160a01b031614949350505050565b826001600160a01b031661337a82611bd5565b6001600160a01b0316146133a05760405162461bcd60e51b815260040161098390615894565b6001600160a01b0382166134025760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610983565b61340f83838360016141f3565b826001600160a01b031661342282611bd5565b6001600160a01b0316146134485760405162461bcd60e51b815260040161098390615894565b5f81815260ff6020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260fe855283862080545f190190559087168086528386208054600101905586865260fd90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5f516020615a185f395f51905f525f5160206159d15f395f51905f526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b031660448201526064015f6040518083038186803b15801561356f575f5ffd5b505afa158015613581573d5f5f3e3d5ffd5b505050505f8390507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135ef573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061361391906154f2565b6001600160a01b03161461363a57604051630f13081760e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136a0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136c491906154f2565b6001600160a01b031614610a56576040516324a41b4360e11b815260040160405180910390fd5b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561371e57610b9083614200565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613778575060408051601f3d908101601f1916820190925261377591810190615620565b60015b6137db5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610983565b5f5160206159b15f395f51905f5281146138495760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610983565b50610b9083838361429b565b60335460ff16156131905760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610983565b8051158015906138c2575080515f90815261012f60205260409020546138c08261393c565b145b610ca05760405162461bcd60e51b815260206004820152601060248201526f141bdb1a58de481b9bdd08199bdd5b9960821b6044820152606401610983565b600161390d83836142bf565b600381111561391e5761391e614f33565b1461147e57604051630422f25f60e01b815260040160405180910390fd5b5f8160405160200161394e9190615611565b60408051601f1981840301815291905280516020909101209050806139b55760405162461bcd60e51b815260206004820152601860248201527f506f6c6963793a20686173682063616e6e6f74206265203000000000000000006044820152606401610983565b919050565b6139c48383614331565b6139d05f8484846144c6565b610b905760405162461bcd60e51b8152600401610983906158d9565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610a569085906145c0565b5f613a5083611bd5565b90506001600160a01b0381163b613a6657505050565b613a7781635ee0c7dd60e01b614693565b613a8057505050565b5f6001600160a01b038216635ee0c7dd336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101879052606481018690526084016020604051808303815f875af1158015613ae8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b0c919061592b565b90506001600160e01b03198116635ee0c7dd60e01b14610a5657806040516381784a5160e01b81526004016109839190615797565b613b496146ae565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b613b9c8361389b565b61016083015181158015613bb957506001600160a01b0381163314155b15613bd757604051634ace04f960e01b815260040160405180910390fd5b821580613bef575042846101a0015164ffffffffff16115b613c3b5760405162461bcd60e51b815260206004820152601860248201527f43616e277420706179206578706972656420706f6c69637900000000000000006044820152606401610983565b613c46816002614123565b8360200151831115613c935760405162461bcd60e51b81526020600482015260166024820152751c185e5bdd5d080f881c1bdb1a58de4b9c185e5bdd5d60521b6044820152606401610983565b5f5f841190505f826001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cd6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613cfa91906154f2565b9050613d07816003614123565b85515f90815261012f60205260408120558115613d91575f613d2b875f0151611bd5565b604051639d8c5ee760e01b81529091506001600160a01b03831690639d8c5ee790613d5e9084908b908b90600401615946565b5f604051808303815f87803b158015613d75575f5ffd5b505af1158015613d87573d5f5f3e3d5ffd5b5050505050613deb565b60405163c7a9c70d60e01b81526001600160a01b0382169063c7a9c70d90613dbd908990600401615611565b5f604051808303815f87803b158015613dd4575f5ffd5b505af1158015613de6573d5f5f3e3d5ffd5b505050505b6020860151604051636a448ef160e01b815260048101919091526001600160a01b03841690636a448ef1906024015f604051808303815f87803b158015613e30575f5ffd5b505af1158015613e42573d5f5f3e3d5ffd5b50505050855f01518661016001516001600160a01b03167f54f4a270ea08f88dc23b2520d6b063fecb24d956c4496f447926d736338f545e87604051613e8a91815260200190565b60405180910390a38415613ea9578551613ea490866146f7565b613eb4565b8551613eb4906147f2565b505050505050565b613ec4613855565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613b763390565b816001600160a01b0316836001600160a01b031603613f5a5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610983565b6001600160a01b038381165f8181526101006020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b613fd2848484613367565b613fde848484846144c6565b610a565760405162461bcd60e51b8152600401610983906158d9565b6060610130805461086c906153db565b60605f614016836148ec565b60010190505f8167ffffffffffffffff81111561403557614035614d3e565b6040519080825280601f01601f19166020018201604052801561405f576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461406957509392505050565b6001600160a01b0381166140c1576040516307a2ee8b60e11b815260040160405180910390fd5b61012d80546001600160a01b0319166001600160a01b038316179055600161012d546040516001600160a01b0390911681527fb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f9060200160405180910390a250565b5f61412e83836142bf565b9050600181600381111561414457614144614f33565b141580156141645750600281600381111561416157614161614f33565b14155b15610b905760405163d08ef1ff60e01b815260040160405180910390fd5b5f54610100900460ff166141a85760405162461bcd60e51b815260040161098390615849565b60fb6141b48382615682565b5060fc610b908282615682565b5f54610100900460ff166141e75760405162461bcd60e51b815260040161098390615849565b6033805460ff19169055565b6141fb613855565b610a56565b6001600160a01b0381163b61426d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610983565b5f5160206159b15f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6142a4836149c3565b5f825111806142b05750805b15610b9057610a568383614a02565b6001600160a01b0382165f90815261012e602052604081208260038111156142e9576142e9614f33565b8154610100900460ff16600381111561430457614304614f33565b1461432657838360405163502c9a5f60e01b81526004016109839291906157c7565b5460ff169392505050565b6001600160a01b0382166143875760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610983565b5f81815260fd60205260409020546001600160a01b0316156143eb5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610983565b6143f85f838360016141f3565b5f81815260fd60205260409020546001600160a01b03161561445c5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610983565b6001600160a01b0382165f81815260fe602090815260408083208054600101905584835260fd90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5f6001600160a01b0384163b156145b857604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290614509903390899088908890600401615973565b6020604051808303815f875af1925050508015614543575060408051601f3d908101601f191682019092526145409181019061592b565b60015b61459e573d808015614570576040519150601f19603f3d011682016040523d82523d5f602084013e614575565b606091505b5080515f036145965760405162461bcd60e51b8152600401610983906158d9565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506113bf565b5060016113bf565b5f614614826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614a279092919063ffffffff16565b905080515f148061463457508080602001905181019061463491906157ac565b610b905760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610983565b5f61469d83614a35565b8015612f4d5750612f4d8383614a67565b60335460ff166131905760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610983565b5f61470183611bd5565b90506001600160a01b0381163b61471757505050565b61472881633ece0a8960e01b614693565b61473157505050565b5f6001600160a01b03821663d6281d3e336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101879052606481018690526084016020604051808303815f875af1158015614799573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906147bd919061592b565b90506001600160e01b03198116636b140e9f60e11b14610a5657806040516381784a5160e01b81526004016109839190615797565b5f6147fc82611bd5565b90506001600160a01b0381163b614811575050565b61482281633ece0a8960e01b614693565b61482a575050565b6001600160a01b03811663e8e617b7620249f0336040516001600160e01b031960e085901b1681526001600160a01b039091166004820152306024820152604481018690526064016020604051808303815f8887f1935050505080156148ad575060408051601f3d908101601f191682019092526148aa9181019061592b565b60015b610b90576040516001600160a01b038216815282907f6ce8016f81523f240956bca9a698e643d09e84e7d0e931470b1016baf1027bd0906020016118eb565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061492a5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310614956576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061497457662386f26fc10000830492506010015b6305f5e100831061498c576305f5e100830492506008015b61271083106149a057612710830492506004015b606483106149b2576064830492506002015b600a83106108575760010192915050565b6149cc81614200565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060612f4d83836040518060600160405280602781526020016159f160279139614af5565b60606113bf84845f85614b69565b5f614a47826301ffc9a760e01b614a67565b80156108575750614a60826001600160e01b0319614a67565b1592915050565b5f5f6301ffc9a760e01b83604051602401614a829190615797565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090505f5f5f60205f8551602087018a617530fa92503d91505f519050828015614adf575060208210155b8015614aea57505f81115b979650505050505050565b60605f5f856001600160a01b031685604051614b1191906159a5565b5f60405180830381855af49150503d805f8114614b49576040519150601f19603f3d011682016040523d82523d5f602084013e614b4e565b606091505b5091509150614b5f86838387614c31565b9695505050505050565b606082471015614bca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610983565b5f5f866001600160a01b03168587604051614be591906159a5565b5f6040518083038185875af1925050503d805f8114614c1f576040519150601f19603f3d011682016040523d82523d5f602084013e614c24565b606091505b5091509150614aea878383875b60608315614c9f5782515f03614c98576001600160a01b0385163b614c985760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610983565b50816113bf565b6113bf8383815115614cb45781518083602001fd5b8060405162461bcd60e51b81526004016109839190614d2c565b6001600160e01b031981168114610ca0575f5ffd5b5f60208284031215614cf3575f5ffd5b8135612f4d81614cce565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f612f4d6020830184614cfe565b634e487b7160e01b5f52604160045260245ffd5b6040516101c0810167ffffffffffffffff81118282101715614d7657614d76614d3e565b60405290565b5f82601f830112614d8b575f5ffd5b8135602083015f5f67ffffffffffffffff841115614dab57614dab614d3e565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715614dda57614dda614d3e565b604052838152905080828401871015614df1575f5ffd5b838360208301375f602085830101528094505050505092915050565b6001600160a01b0381168114610ca0575f5ffd5b5f5f5f60608486031215614e33575f5ffd5b833567ffffffffffffffff811115614e49575f5ffd5b614e5586828701614d7c565b935050602084013567ffffffffffffffff811115614e71575f5ffd5b614e7d86828701614d7c565b9250506040840135614e8e81614e0d565b809150509250925092565b5f60208284031215614ea9575f5ffd5b5035919050565b5f5f60408385031215614ec1575f5ffd5b8235614ecc81614e0d565b946020939093013593505050565b5f5f5f60608486031215614eec575f5ffd5b8335614ef781614e0d565b92506020840135614f0781614e0d565b929592945050506040919091013590565b5f60208284031215614f28575f5ffd5b8135612f4d81614e0d565b634e487b7160e01b5f52602160045260245ffd5b60048110610ca057634e487b7160e01b5f52602160045260245ffd5b60208101614f7083614f47565b91905290565b80356139b581614e0d565b803564ffffffffff811681146139b5575f5ffd5b5f6101c08284031215614fa6575f5ffd5b614fae614d52565b823581526020808401359082015260408084013590820152606080840135908201526080808401359082015260a0808401359082015260c0808401359082015260e0808401359082015261010080840135908201526101208084013590820152610140808401359082015290506150286101608301614f76565b61016082015261503b6101808301614f81565b61018082015261504e6101a08301614f81565b6101a082015292915050565b80356bffffffffffffffffffffffff811681146139b5575f5ffd5b5f5f5f5f6103c08587031215615089575f5ffd5b6150938686614f95565b93506150a3866101c08701614f95565b92506103808501356150b481614e0d565b91506150c36103a0860161505a565b905092959194509250565b5f5f604083850312156150df575f5ffd5b82356150ea81614e0d565b9150602083013567ffffffffffffffff811115615105575f5ffd5b61511185828601614d7c565b9150509250929050565b5f6020828403121561512b575f5ffd5b813567ffffffffffffffff811115615141575f5ffd5b6113bf84828501614d7c565b60048110610ca0575f5ffd5b5f5f6040838503121561516a575f5ffd5b823561517581614e0d565b915060208301356151858161514d565b809150509250929050565b5f5f5f5f61022085870312156151a4575f5ffd5b6151ae8686614f95565b93506101c08501356151bf81614e0d565b92506101e08501356151d081614e0d565b91506150c3610200860161505a565b5f6101c082840312156151f0575f5ffd5b50919050565b5f6101c08284031215615207575f5ffd5b612f4d83836151df565b5f5f6101e08385031215615223575f5ffd5b61522d84846151df565b946101c0939093013593505050565b5f5f6020838503121561524d575f5ffd5b823567ffffffffffffffff811115615263575f5ffd5b8301601f81018513615273575f5ffd5b803567ffffffffffffffff811115615289575f5ffd5b8560206101c08302840101111561529e575f5ffd5b6020919091019590945092505050565b8015158114610ca0575f5ffd5b5f5f604083850312156152cc575f5ffd5b82356152d781614e0d565b91506020830135615185816152ae565b5f5f5f5f608085870312156152fa575f5ffd5b843561530581614e0d565b9350602085013561531581614e0d565b925060408501359150606085013567ffffffffffffffff811115615337575f5ffd5b61534387828801614d7c565b91505092959194509250565b5f5f60408385031215615360575f5ffd5b823561536b81614e0d565b91506153796020840161505a565b90509250929050565b5f5f60408385031215615393575f5ffd5b823561539e81614e0d565b9150602083013561518581614e0d565b5f5f6101e083850312156153c0575f5ffd5b6153ca84846151df565b91506101c0830135615185816152ae565b600181811c908216806153ef57607f821691505b6020821081036151f057634e487b7160e01b5f52602260045260245ffd5b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215615502575f5ffd5b8151612f4d81614e0d565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e08301526101008101516101008301526101208101516101208301526101408101516101408301526101608101516155976101608401826001600160a01b03169052565b506101808101516155b261018084018264ffffffffff169052565b506101a0810151610b906101a084018264ffffffffff169052565b61038081016155dc828561550d565b612f4d6101c083018461550d565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610857576108576155ea565b6101c08101610857828461550d565b5f60208284031215615630575f5ffd5b5051919050565b601f821115610b9057805f5260205f20601f840160051c8101602085101561565c5750805b601f840160051c820191505b8181101561567b575f8155600101615668565b5050505050565b815167ffffffffffffffff81111561569c5761569c614d3e565b6156b0816156aa84546153db565b84615637565b6020601f8211600181146156e2575f83156156cb5750848201515b5f19600385901b1c1916600184901b17845561567b565b5f84815260208120601f198516915b8281101561571157878501518255602094850194600190920191016156f1565b508482101561572e57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6040810161574a84614f47565b83825261575683614f47565b8260208301529392505050565b5f60208284031215615773575f5ffd5b612f4d82614f81565b5f6101c0828403121561578d575f5ffd5b612f4d8383614f95565b6001600160e01b031991909116815260200190565b5f602082840312156157bc575f5ffd5b8151612f4d816152ae565b6001600160a01b03831681526040810161575683614f47565b604081016157ed84614f47565b9281526020015290565b634e487b7160e01b5f52603260045260245ffd5b80820180821115610857576108576155ea565b5f81518060208401855e5f93019283525090919050565b5f6113bf615843838661581e565b8461581e565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b5f6020828403121561593b575f5ffd5b8151612f4d81614cce565b6001600160a01b03841681526102008101615964602083018561550d565b826101e0830152949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90614b5f90830184614cfe565b5f612f4d828461581e56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a2646970667358221220d6cb40992d23095d3d3c714ec2b0301a9ae70612430d01e99e577e3312e2f9c764736f6c634300081c0033",
1773
1760
  "linkReferences": {},
1774
1761
  "deployedLinkReferences": {}
1775
1762
  }
@@ -8,6 +8,11 @@
8
8
  "name": "NoZeroPolicyPool",
9
9
  "type": "error"
10
10
  },
11
+ {
12
+ "inputs": [],
13
+ "name": "OnlyPolicyPool",
14
+ "type": "error"
15
+ },
11
16
  {
12
17
  "inputs": [],
13
18
  "name": "UpgradeCannotChangePolicyPool",
@@ -135,71 +140,6 @@
135
140
  "name": "Upgraded",
136
141
  "type": "event"
137
142
  },
138
- {
139
- "inputs": [],
140
- "name": "GUARDIAN_ROLE",
141
- "outputs": [
142
- {
143
- "internalType": "bytes32",
144
- "name": "",
145
- "type": "bytes32"
146
- }
147
- ],
148
- "stateMutability": "view",
149
- "type": "function"
150
- },
151
- {
152
- "inputs": [],
153
- "name": "LEVEL1_ROLE",
154
- "outputs": [
155
- {
156
- "internalType": "bytes32",
157
- "name": "",
158
- "type": "bytes32"
159
- }
160
- ],
161
- "stateMutability": "view",
162
- "type": "function"
163
- },
164
- {
165
- "inputs": [],
166
- "name": "LEVEL2_ROLE",
167
- "outputs": [
168
- {
169
- "internalType": "bytes32",
170
- "name": "",
171
- "type": "bytes32"
172
- }
173
- ],
174
- "stateMutability": "view",
175
- "type": "function"
176
- },
177
- {
178
- "inputs": [],
179
- "name": "LEVEL3_ROLE",
180
- "outputs": [
181
- {
182
- "internalType": "bytes32",
183
- "name": "",
184
- "type": "bytes32"
185
- }
186
- ],
187
- "stateMutability": "view",
188
- "type": "function"
189
- },
190
- {
191
- "inputs": [],
192
- "name": "TWEAK_EXPIRATION",
193
- "outputs": [
194
- {
195
- "internalType": "uint40",
196
- "name": "",
197
- "type": "uint40"
198
- }
199
- ],
200
- "stateMutability": "view",
201
- "type": "function"
202
- },
203
143
  {
204
144
  "inputs": [],
205
145
  "name": "currency",
@@ -213,24 +153,6 @@
213
153
  "stateMutability": "view",
214
154
  "type": "function"
215
155
  },
216
- {
217
- "inputs": [],
218
- "name": "lastTweak",
219
- "outputs": [
220
- {
221
- "internalType": "uint40",
222
- "name": "",
223
- "type": "uint40"
224
- },
225
- {
226
- "internalType": "uint56",
227
- "name": "",
228
- "type": "uint56"
229
- }
230
- ],
231
- "stateMutability": "view",
232
- "type": "function"
233
- },
234
156
  {
235
157
  "inputs": [],
236
158
  "name": "pause",